在最后一天左右,我开始看到我的 Laravel Dusk 测试在我的 CI/CD 环境中失败(GitHub Actions)。
突然,运行一直运行良好的命令:
php artisan dusk:chrome-driver `/opt/google/chrome/chrome --version | cut -d " " -f3 | cut -d "." -f1`
..失败并出现以下错误:
file_get_contents(https://chromedriver.storage.googleapis.com/LATEST_RELEASE_116):无法打开流:HTTP 请求失败! HTTP/1.1 404 未找到
尝试通过强制版本 114 来解决此问题:
php artisan install:chrome-driver 114
...失败并出现以下错误:
Facebook\WebDriver\Exception\SessionNotCreatedException:会话未创建:此版本的 ChromeDriver 仅支持 Chrome 版本 114
我怎样才能解决这个问题并让我的测试再次开始通过?
此问题在上游详细讨论 - 简而言之,404 似乎是由 Google 从 v115 开始更改 Chrome 二进制文件和驱动程序的源 URL 引起的(新 URL 记录在此处)。
特别是对于 Laravel Dusk,这似乎已经在这个 Dusk 问题中得到了解决,所以理论上正确解决这个问题所需的只是
composer update require --with-all-dependencies
,但至少在我的情况下,这会更新很多 的依赖关系,似乎很可能会破坏我的应用程序。我已经询问过这个问题对于旧版 Laravel 应用程序(我的例子是 Laravel 8)的最佳行动方案是什么,但与此同时,以下应该是一个足够好的解决方法,可以让您再次开始运行构建:
php artisan dusk:chrome-driver `/usr/bin/google-chrome --version | cut -d " " -f3 | cut -d "." -f1`
注意
/user/bin/google-chrome
路径而不是 opt/google/chrome/chrome
。如果此命令仍然对您不起作用,请将此路径替换为您自己的 CI/CD 环境中错误报告的路径。