问题描述
我已经计划使用黄昏进行简单的管理员登录测试。当我在本地计算机(我自己的本地计算机)上执行登录管理测试用例时,一切正常。
...
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu','--headless','--window-size=1920,1080',]);
return RemoteWebDriver::create(
'http://localhost:9515',DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY,$options
)
);
}
...
我的LoginTest.PHP
片段位于test/browser
:
...
public function testLoginAdmin()
{
$this->browse(function (browser $browser) {
$browser->visit('/login')
->type('#email','admin@admin')
->type('#password','admin')
->press('LOGIN')
->assertPathIs('/admin/dasbor');;
});
}
...
这是我本地计算机的输出:
$ PHP artisan dusk
Warning: TTY mode is not supported on Windows platform.
PHPUnit 9.2.5 by Sebastian Bergmann and contributors.
DevTools listening on ws://127.0.0.1:63025/devtools/browser/26e3002f-4050-4549-9220-246558a7efd6
. 1 / 1 (100%)
Time: 00:08.528,Memory: 16.00 MB
OK (1 test,1 assertion)
但是当我运行github动作时会出错。
我的.env.dusk
文件:
APP_NAME="Pins SmartPJU"
APP_ENV=local
APP_KEY=base64:8CpKYwb2PE3aRhzRUwh3XMg/+VwlLVM1B0AqhyhR8B0=
APP_DEBUG=true
APP_URL=http://127.0.0.1:8000
LOG_CHANNEL=stack
DB_CONNECTION=sqlite
DB_DATABASE=database/database.sqlite
...
///the rest is default
这是yml:
name: dusk testing
on:
pull_request:
branches: [ master ]
jobs:
laravel-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: copy .env
run: PHP -r "file_exists('.env') || copy('.env.dusk','.env');"
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Generate key
run: PHP artisan key:generate
- name: Directory Permissions
run: chmod -R 777 storage bootstrap/cache
- name: Upgrade Chrome Driver
run: PHP artisan dusk:chrome-driver 70
- name: Start Chrome Driver
run: ./vendor/laravel/dusk/bin/chromedriver-linux > /dev/null 2>&1 &
- name: Run Dusk Tests
run: |
PHP artisan serve > /dev/null 2>&1 &
chmod -R 0755 vendor/laravel/dusk/bin/
PHP artisan dusk
Run PHP artisan serve > /dev/null 2>&1 &
Warning: TTY mode requires /dev/tty to be read/writable.
PHPUnit 9.2.5 by Sebastian Bergmann and contributors.
E 1 / 1 (100%)
Time: 01:22.789,Memory: 18.00 MB
There was 1 error:
1) Tests\browser\LoginTest::testLoginAdmin
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session/5e36290494b538df79cb44f5a5b7b459/log with params: {"type":"browser"}
Operation timed out after 30001 milliseconds with 0 bytes received
/home/runner/work/pins-pju/pins-pju/vendor/PHP-webdriver/webdriver/lib/Remote/HttpCommandExecutor.PHP:331
/home/runner/work/pins-pju/pins-pju/vendor/PHP-webdriver/webdriver/lib/Remote/RemoteWebDriver.PHP:590
/home/runner/work/pins-pju/pins-pju/vendor/PHP-webdriver/webdriver/lib/Remote/RemoteExecuteMethod.PHP:27
/home/runner/work/pins-pju/pins-pju/vendor/PHP-webdriver/webdriver/lib/WebDriverOptions.PHP:166
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/browser.PHP:396
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/Concerns/Providesbrowser.PHP:161
/home/runner/work/pins-pju/pins-pju/vendor/laravel/framework/src/Illuminate/Support/Traits/EnumeratesValues.PHP:176
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/Concerns/Providesbrowser.PHP:162
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/Concerns/Providesbrowser.PHP:78
/home/runner/work/pins-pju/pins-pju/tests/browser/LoginTest.PHP:24
Caused by
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http GET to /session/5e36290494b538df79cb44f5a5b7b459/screenshot
Operation timed out after 30001 milliseconds with 0 bytes received
/home/runner/work/pins-pju/pins-pju/vendor/PHP-webdriver/webdriver/lib/Remote/HttpCommandExecutor.PHP:331
/home/runner/work/pins-pju/pins-pju/vendor/PHP-webdriver/webdriver/lib/Remote/RemoteWebDriver.PHP:590
/home/runner/work/pins-pju/pins-pju/vendor/PHP-webdriver/webdriver/lib/Remote/RemoteWebDriver.PHP:371
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/browser.PHP:382
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/Concerns/Providesbrowser.PHP:146
/home/runner/work/pins-pju/pins-pju/vendor/laravel/framework/src/Illuminate/Support/Traits/EnumeratesValues.PHP:176
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/Concerns/Providesbrowser.PHP:147
/home/runner/work/pins-pju/pins-pju/vendor/laravel/dusk/src/Concerns/Providesbrowser.PHP:70
/home/runner/work/pins-pju/pins-pju/tests/browser/LoginTest.PHP:24
ERRORS!
Tests: 1,Assertions: 1,Errors: 1.
##[error]Process completed with exit code 2.
以前,我尝试使用PHP artisan dusk:chrome-driver
和PHP artisan dusk:chrome-driver 70
更改chrome驱动程序版本。仍然是错误。
解决方法
也许您需要添加一个步骤来运行迁移。 我有一些与您相似的东西,但有额外的步骤:
- name: Upgrade Chrome Driver
run: php artisan dusk:chrome-driver `/opt/google/chrome/chrome --version | cut -d " " -f3 | cut -d "." -f1`
- name: Run Migrations
run: php artisan migrate
- name: Change permissions to dusk
run: chmod -R 0755 vendor/laravel/dusk/bin/
- name: Run Laravel Server
run: php artisan serve > /dev/null 2>&1 &
- name: curl to localhost
run: curl localhost:8000 &
- name: Start Chrome Driver
run: ./vendor/laravel/dusk/bin/chromedriver-linux > /dev/null 2>&1 &
- name: Run Dusk Tests
run: php artisan dusk
我还添加了curl命令以测试应用程序是否正在运行。