admin管理员组文章数量:1289540
Here are all of the issues and their solutions that I"ve faced during setting up Laravel dusk locally and also on Github Actions pipeline.
Dusk Version 7.x
Php 8.0
On php artisan dusk I got this error Error.
RuntimeException: Invalid path to Chromedriver [/var/www/path/vendor/laravel/dusk/src/Chrome/../../bin/chromedriver-linux]. Make sure to install the Chromedriver first by running the dusk:chrome-driver command
FIX : 1st ->
Run this "chmod -R 0755 vendor/laravel/dusk/bin/" it's for permission
-Open terminal inside project dir. -chmod -R 0755 vendor/laravel/dusk/bin/ , paste and hit.
2nd ->
- Got to this path vendor/laravel/dusk/bin/chromedriver-linux64
- Rename this "chromedriver-linux64" -> "chromedriver-linux"
if you still got the same issue try these,
1st ->
Try adding port like the image below in the DuskTestCase.php (9515 it's default port).
2nd ->
Try adding '--no-sandbox' in "DuskTestCase.php" inside driver function
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
)
);
}
- Error running php artisan dusk
Facebook\WebDriver\Exception\Internal\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"args":["--window-size=1920,1080"]}}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","goog:chromeOptions":{"args":["--window-size=1920,1080"]}}}
FIX :
This error occurs when Chrome Driver is not running
Now you need to run Chrome Driver, Follow below steps
Open Terminal in project root
paste this command
- ./vendor/laravel/dusk/bin/chromedriver-linux/chromedriver --port=9515
This should run the chrome driver on port 9515 as you can see on this SS.
If it is still not running then you can try installing ChromeDriver for linux manually by running following commands
LATEST_CHROMEDRIVER_VERSION=$(curl -s )
wget -O chromedriver.zip /$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
After installation, you can start ChromeDriver on a specific port (e.g., 9515) with:
chromedriver --port=9515
Note : You need to Install Chrome for linux too and also make sure that both has compatible Versions with each other.
Keep the Chrome terminal open and open new terminal and hit
php artisan ser
Make sure you sets up .env file properly make sure it atleast exists these :
APP_ENV=local
APP_URL=http://localhost:8000
SESSION_DRIVER=file
SESSION_LIFETIME=120
Note : session driver in very important when you use. ->loginAs($user)
In your test cases. If you want to make sure that if user is authenticated and successfully logged in you can use this ->assertAuthenticated()
to make sure the sessions are successfully working.
Also if you are using file session driver , make sure that Application has proper permissions.
Here is the github Pipeline yml code that runs successfully on my github actions.
- name: Run Tests
env:
DB_DATABASE: db_test
DB_USERNAME: root
DB_PASSWORD: root
run: |
php artisan key:generate --force
php artisan test
- name: Install Dusk
run: |
php artisan dusk:install && rm tests/Browser/ExampleTest.php
- name: Permissions for Chrome Driver
run: |
chmod -R 0755 vendor/laravel/dusk/bin/
- name: Renaming Chrome chromedriver-linux64 to chromedriver-linux
run: |
mv vendor/laravel/dusk/bin/chromedriver-linux64 vendor/laravel/dusk/bin/chromedriver-linux
- name: Detect Chrome Driver
run: |
php artisan dusk:chrome-driver --detect
- name: Start Chrome Driver
run: ./vendor/laravel/dusk/bin/chromedriver-linux/chromedriver --port=9515 &
- 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
For debugging pipeline you can add these lines in yml for logs checking.
Clearing the logs , it should be placed before php artisan dusk
,
- name: Clear Laravel Logs
run: |
echo "" > storage/logs/laravel.log
cat storage/logs/laravel.log
Just add it at the end or after php artisan dusk
command.
- name: Capture Logs if Tests Fail
if: failure()
run: cat storage/logs/laravel.log
Now run your dusk tests or Pipeline , I hope this helps. Thanks.
Here are all of the issues and their solutions that I"ve faced during setting up Laravel dusk locally and also on Github Actions pipeline.
Dusk Version 7.x
Php 8.0
On php artisan dusk I got this error Error.
RuntimeException: Invalid path to Chromedriver [/var/www/path/vendor/laravel/dusk/src/Chrome/../../bin/chromedriver-linux]. Make sure to install the Chromedriver first by running the dusk:chrome-driver command
FIX : 1st ->
Run this "chmod -R 0755 vendor/laravel/dusk/bin/" it's for permission
-Open terminal inside project dir. -chmod -R 0755 vendor/laravel/dusk/bin/ , paste and hit.
2nd ->
- Got to this path vendor/laravel/dusk/bin/chromedriver-linux64
- Rename this "chromedriver-linux64" -> "chromedriver-linux"
if you still got the same issue try these,
1st ->
Try adding port like the image below in the DuskTestCase.php (9515 it's default port).
2nd ->
Try adding '--no-sandbox' in "DuskTestCase.php" inside driver function
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
)
);
}
- Error running php artisan dusk
Facebook\WebDriver\Exception\Internal\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"args":["--window-size=1920,1080"]}}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","goog:chromeOptions":{"args":["--window-size=1920,1080"]}}}
FIX :
This error occurs when Chrome Driver is not running
Now you need to run Chrome Driver, Follow below steps
Open Terminal in project root
paste this command
- ./vendor/laravel/dusk/bin/chromedriver-linux/chromedriver --port=9515
This should run the chrome driver on port 9515 as you can see on this SS.
If it is still not running then you can try installing ChromeDriver for linux manually by running following commands
LATEST_CHROMEDRIVER_VERSION=$(curl -s https://chromedriver.storage.googleapis/LATEST_RELEASE)
wget -O chromedriver.zip https://chromedriver.storage.googleapis/$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
After installation, you can start ChromeDriver on a specific port (e.g., 9515) with:
chromedriver --port=9515
Note : You need to Install Chrome for linux too and also make sure that both has compatible Versions with each other.
Keep the Chrome terminal open and open new terminal and hit
php artisan ser
Make sure you sets up .env file properly make sure it atleast exists these :
APP_ENV=local
APP_URL=http://localhost:8000
SESSION_DRIVER=file
SESSION_LIFETIME=120
Note : session driver in very important when you use. ->loginAs($user)
In your test cases. If you want to make sure that if user is authenticated and successfully logged in you can use this ->assertAuthenticated()
to make sure the sessions are successfully working.
Also if you are using file session driver , make sure that Application has proper permissions.
Here is the github Pipeline yml code that runs successfully on my github actions.
- name: Run Tests
env:
DB_DATABASE: db_test
DB_USERNAME: root
DB_PASSWORD: root
run: |
php artisan key:generate --force
php artisan test
- name: Install Dusk
run: |
php artisan dusk:install && rm tests/Browser/ExampleTest.php
- name: Permissions for Chrome Driver
run: |
chmod -R 0755 vendor/laravel/dusk/bin/
- name: Renaming Chrome chromedriver-linux64 to chromedriver-linux
run: |
mv vendor/laravel/dusk/bin/chromedriver-linux64 vendor/laravel/dusk/bin/chromedriver-linux
- name: Detect Chrome Driver
run: |
php artisan dusk:chrome-driver --detect
- name: Start Chrome Driver
run: ./vendor/laravel/dusk/bin/chromedriver-linux/chromedriver --port=9515 &
- 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
For debugging pipeline you can add these lines in yml for logs checking.
Clearing the logs , it should be placed before php artisan dusk
,
- name: Clear Laravel Logs
run: |
echo "" > storage/logs/laravel.log
cat storage/logs/laravel.log
Just add it at the end or after php artisan dusk
command.
- name: Capture Logs if Tests Fail
if: failure()
run: cat storage/logs/laravel.log
Now run your dusk tests or Pipeline , I hope this helps. Thanks.
Share Improve this question asked Feb 20 at 17:39 Sublan MustafaSublan Mustafa 3892 silver badges9 bronze badges1 Answer
Reset to default 0This works for me
Got to this path vendor/laravel/dusk/bin/chromedriver-linux64
Rename this "chromedriver-linux64" -> "chromedriver-linux"
- Adding port in the DuskTestCase.php
- Adding
'--no-sandbox'
as mentioned above
This works locally ......
For pipeline this solves the issue
APP_ENV=local
APP_URL=http://localhost:8000
SESSION_DRIVER=file
SESSION_LIFETIME=120
Also I did rename too , "chromedriver-linux64" -> "chromedriver-linux"
本文标签: Laravel Dusk v7x and Github Actions Issues from Error to Success LinuxStack Overflow
版权声明:本文标题:Laravel Dusk v7.x and Github Actions Issues from Error to Success [Linux] - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741416682a2377554.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论