Вот все проблемы и их решения, с которыми я столкнулся во время настройки Laravel Dusk локально, а также на конвейере действий GitHub. 7.x < /p>
< /blockquote>
php 8.0 < /p>
< /blockquote>
на PHP Artisan Dusk я получил эту ошибку ошибки. < /strong> < /p>
runtimeexcept /var/www/path/vendor/laravel/dusk/src/chrome/../../bin/chromedriver-linux]. Chromedriver Сначала запустив команду Dusk: Chrome-Driver
fix:
1 -й ->
Запустите этот "chmod -r 0755 поставщик/laravel/dusk/bin/" Это для разрешение < /p>
-Open terminal inside project dir.
-chmod -R 0755 vendor/laravel/dusk/bin/ , paste and hit.
< /code>
< /li>
< /ul>
2nd -> < /p>
Этот поставщик пути/Laravel/Dusk/Bin/Chromedriver-linux64
[*] Переименуйте это "Chromedriver-linux64"-> "Chromedriver -linux"
[/list]
Если у вас все же есть та же проблема, попробуйте,
1st ->
Попробуйте добавить порт, как изображение ниже в dusktestcase.php (9515 Это порт по умолчанию). < /p>
2nd->
Попробуйте добавить '--no -sandbox 'in "dusktestcase.php" Внутренняя функция драйвера < /p>
protected function driver(): RemoteWebDriver
{
$options = (new ChromeOptions)->addArguments(collect([
$this->shouldStartMaximized() ? '--start-maximized' : '--window-size=1920,1080',
])->unless($this->hasHeadlessDisabled(), function (Collection $items) {
return $items->merge([
'--disable-gpu',
'--headless=new',
'--no-sandbox' //Here--------------------
]);
})->all());
return RemoteWebDriver::create(
env('DUSK_URL') && env('DUSK_PORT') ? env('DUSK_URL').':'.env('DUSK_PORT') : 'http://127.0.0.1:9515', //Here--------------------
DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
);
}
< /code>
[b] ошибка при запуске PHP Artisan Dusk < /strong> < /li>
< /ol>
facebook \ webdriver \ exception \ internal \ webdrivercurlexception: curl
ошибка, выброшенная для http post to /session с params:
{"Возможности": {"FirstMatch": [{"browserName": "chrome", "Goog: ChromeOptions": {"args": ["-window-size = 1920,1080"]}]}}}}}}}}}}}}}}}}}}}}}}}}}}}} , "Деси RedCapabilities ": {" BrowserName ":" Chrome "," Platform ":" Eany "," Goog: ChromeOptions ": {" args ": ["-window-size = 1920,1080 "]}}}
исправление: [/b]
Эта ошибка возникает, когда драйвер Chrome не работает
Теперь вам нужно запустить драйвер Chrome, следуйте ниже шагов < /p>
открытый терминал в корне проекта < /p>
< / li>
вставьте эту команду
./vendor/laravel/dusk/bin/chromedriver-linux/chromedriver -port = 9515 < /li>
< /ul>
< /li>
< /ul>
Это должно запустить драйвер Chrome на порту 9515 Как вы можете видеть в этом ss.
p>
Если он все еще не работает, вы можете попробовать установить Chromedriver для Linux вручную, выполняя следующие команды < /p>
LATEST_CHROMEDRIVER_VERSION=$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
wget -O chromedriver.zip https://chromedriver.storage.googleapis.com/$LATEST_CHROMEDRIVER_VERSION/chromedriver_linux64.zip
unzip chromedriver.zip
sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver
rm chromedriver.zip //just for cleaning
< /code>
После установки вы можете запустить Chromedriver на определенном порте (например, 9515) с: < /p>
chromedriver --port=9515
Примечание: вам также нужно установить Chrome для Linux, а также убедиться, что оба имеют совместимые версии друг с другом.
< P> сохранить хромированный терминал открытым и открыть новый терминал и нажмите < /p>
php artisan ser
< /code>
Убедитесь, что вы устанавливаете файл .env правильно убедитесь, что он, по крайней мере, существует: < /p>
APP_ENV=local
APP_URL=http://localhost:8000
SESSION_DRIVER=file
SESSION_LIFETIME=120
< /code>
[b] Примечание: драйвер сеанса очень важен при использовании. -> Loginas ($ user)
В ваших тестовых случаях. Если вы хотите убедиться, что если пользователь аутентифицирован и успешно вошел в систему, вы можете использовать это -> assertauthenticated () , чтобы убедиться, что сеансы успешно работают. [/b]
p> также, если вы используете драйвер сеанса файла, убедитесь, что приложение имеет правильные разрешения. мои действия GitHub. < /p>
Просто добавьте его в конце или после PHP Artisan Dusk Команда.
- name: Capture Logs if Tests Fail
if: failure()
run: cat storage/logs/laravel.log
< /code>
Теперь запустите свои сумерки или трубопровод, я надеюсь, что это поможет. Спасибо.
Вот все проблемы и их решения, с которыми я столкнулся во время настройки Laravel Dusk локально, а также на конвейере действий GitHub. 7.x < /p> < /blockquote>
php 8.0 < /p> < /blockquote> [list] [*] [b] на PHP Artisan Dusk я получил эту ошибку ошибки. < /strong> < /p> runtimeexcept /var/www/path/vendor/laravel/dusk/src/chrome/../../bin/chromedriver-linux]. Chromedriver Сначала запустив команду Dusk: Chrome-Driver
[/list] fix: [/b] 1 -й -> [list] [*] Запустите этот "chmod -r 0755 поставщик/laravel/dusk/bin/" Это для разрешение < /p> [code] -Open terminal inside project dir. -chmod -R 0755 vendor/laravel/dusk/bin/ , paste and hit. < /code> < /li> < /ul> 2nd -> < /p>
Этот поставщик пути/Laravel/Dusk/Bin/Chromedriver-linux64 [*] Переименуйте это "Chromedriver-linux64"-> "Chromedriver -linux" [/list] Если у вас все же есть та же проблема, попробуйте, 1st -> Попробуйте добавить порт, как изображение ниже в dusktestcase.php (9515 Это порт по умолчанию). < /p>
2nd-> Попробуйте добавить '--no -sandbox 'in "dusktestcase.php" Внутренняя функция драйвера < /p> protected function driver(): RemoteWebDriver { $options = (new ChromeOptions)->addArguments(collect([ $this->shouldStartMaximized() ? '--start-maximized' : '--window-size=1920,1080', ])->unless($this->hasHeadlessDisabled(), function (Collection $items) { return $items->merge([ '--disable-gpu', '--headless=new', '--no-sandbox' //Here-------------------- ]); })->all());
исправление: [/b] Эта ошибка возникает, когда драйвер Chrome не работает Теперь вам нужно запустить драйвер Chrome, следуйте ниже шагов < /p>
открытый терминал в корне проекта < /p> < / li> вставьте эту команду
./vendor/laravel/dusk/bin/chromedriver-linux/chromedriver -port = 9515 < /li> < /ul> < /li> < /ul> Это должно запустить драйвер Chrome на порту 9515 Как вы можете видеть в этом ss. p> Если он все еще не работает, вы можете попробовать установить Chromedriver для Linux вручную, выполняя следующие команды < /p> LATEST_CHROMEDRIVER_VERSION=$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
rm chromedriver.zip //just for cleaning < /code> После установки вы можете запустить Chromedriver на определенном порте (например, 9515) с: < /p> chromedriver --port=9515 [/code] [b] Примечание: вам также нужно установить Chrome для Linux, а также убедиться, что оба имеют совместимые версии друг с другом. [/b] < P> сохранить хромированный терминал открытым и открыть новый терминал и нажмите < /p> [code]php artisan ser < /code> Убедитесь, что вы устанавливаете файл .env правильно убедитесь, что он, по крайней мере, существует: < /p> APP_ENV=local APP_URL=http://localhost:8000 SESSION_DRIVER=file SESSION_LIFETIME=120 < /code> [b] Примечание: драйвер сеанса очень важен при использовании. -> Loginas ($ user) [/code] В ваших тестовых случаях. Если вы хотите убедиться, что если пользователь аутентифицирован и успешно вошел в систему, вы можете использовать это -> assertauthenticated () , чтобы убедиться, что сеансы успешно работают. [/b] p> также, если вы используете драйвер сеанса файла, убедитесь, что приложение имеет правильные разрешения. мои действия GitHub. < /p> [code]- name: Run Tests env: DB_DATABASE: db_test DB_USERNAME: root DB_PASSWORD: root run: | php artisan key:generate --force php artisan test
- name: Run Laravel Server run: | php artisan serve --no-reload &
- name: Wait for Server run: sleep 5
- name: Run Dusk Tests env: APP_URL: http://127.0.0.1:8000 run: | php artisan dusk --testdox --without-tty --ansi [/code] Для трубопровода отладки вы можете добавить эти строки в YML для проверки журналов. Код>, < /p> [code] - name: Clear Laravel Logs run: | echo "" > storage/logs/laravel.log cat storage/logs/laravel.log [/code] Просто добавьте его в конце или после PHP Artisan Dusk Команда. - name: Capture Logs if Tests Fail if: failure() run: cat storage/logs/laravel.log < /code> Теперь запустите свои сумерки или трубопровод, я надеюсь, что это поможет. Спасибо.