공식 문서에 없는 Laavel 5.5의 Dusk는 GiitHubAction으로 CI를 진행하려고 합니다.
13371 단어 LaravelGitHub Actionstech
배경.
Laravel5.5Dusk 공식 문서에는 GiitHubActions에서 CI의 행동이 기재되어 있지 않고 고전 끝에 비망록으로 삼았다.
전제 조건
DuskTestCase.php 설정
여기 설정은 특별히 주의해야 할 기본 상태를 유지할 수 있습니다
<?php
namespace Tests;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Laravel\Dusk\TestCase as BaseTestCase;
abstract class DuskTestCase extends BaseTestCase
{
use CreatesApplication;
/**
* Prepare for Dusk test execution.
*
* @beforeClass
* @return void
*/
public static function prepare()
{
static::startChromeDriver();
}
/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--window-size=1920,1080',
'--no-sandbox',
]);
return RemoteWebDriver::create(
'http://127.0.0.1:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
), 100000, 100000 // 最後の引数はタイムアウト用の設定
);
}
}
.github/workflows/dusk.yml(GiitHubAction 설정)
name: Testing Laravel Dusk with MySQL
on: [push, pull_request]
jobs:
laravel:
name: Laravel (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest
### 省略
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.2'] # Laravel5.5なのでPHP7.2を指定
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, dom, fileinfo, mysql
coverage: none
- name: composer downgrade
run: composer self-update --1
- name: Copy .env
run: cp .env.ci .env
- name: install libsqlite3
run: sudo apt-get install -y libsqlite3-dev
- name: Install Composer dependencies
run: composer install --no-scripts
- name: Generate key
run: php artisan key:generate
- name: Clear Config
run: |
php artisan config:clear
php artisan cache:clear
- name: Run dusk tests
run: |
./vendor/laravel/dusk/bin/chromedriver-linux &
chmod -R 0755 vendor/laravel/dusk/bin/ &
php artisan serve & # php artisan serveを起動し、&でマイグレーションとseederを起動する
php artisan migrate
php artisan db:seed
php artisan dusk
env: # php artisan serveだと.envが正常に読まれないのでここで指定する
APP_ENV: ci
APP_URL: http://127.0.0.1:8000
DB_CONNECTION: mysql
DB_HOST: 127.0.0.1
DB_PORT: 33306
DB_DATABASE: test_db
DB_USERNAME: root
DB_PASSWORD: root
CI 부팅 시 Laavel Dusk 테스트 코드 고려 사항
php artisan serve의 라인에서migration과seeder 등을 실행하면 DB와 연결할 수 없기 때문에Dusk가 떨어집니다.Seeder 등은 Duck이 시작되기 전에 실행하십시오. (이것을 눈치채지 못했습니다. 팩토리의 실행이 떨어져 매우 반했습니다.)
참고 자료
GiitHub Project의 어딘가(Bookmark를 잊으면 안 돼!)
Reference
이 문제에 관하여(공식 문서에 없는 Laavel 5.5의 Dusk는 GiitHubAction으로 CI를 진행하려고 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/m2/articles/43fe3d472458eb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)