Summer Sale! All accounts are 50% off this week.

Adgower's avatar
Level 14

Laravel dusk failing on github actions

Hey I'm trying to get laravel dusk to work via github actions, but it keeps failing:

name: CI
on:
  push:
    branches:
      - "**"
      - "!production"
      - "!development"
jobs:
  dusk-php:
    services:
      mailhog:
        image: mailhog/mailhog:v1.0.1
        ports:
          - 1025:1025
          - 8025:8025
      meilisearch:
        image: getmeili/meilisearch:v1.0.2
        ports:
          - 7700:7700

    runs-on: ubuntu-latest

    # env
    env:
      # set APP_URL
      APP_URL: "http://127.0.0.1:8000"
      # set FRONTEND_URL
      FRONTEND_URL: "http://127.0.0.1:4000"
      SANCTUM_STATEFUL_DOMAINS: "localhost:4000"
      COOKIE_DOMAIN: "localhost"
      # set MAIL_HOST
      MAILHOG_URL: "http://127.0.0.1:8025"
      MAIL_MAILER: "smtp"
      MAIL_HOST: "localhost"
      MAIL_PORT: "1025"
      MAIL_USERNAME: null
      MAIL_PASSWORD: null
      MAIL_ENCRYPTION: null
      # set DB
      DB_USERNAME: root
      DB_PASSWORD: root
      # set meilisearch
      SCOUT_DRIVER: meilisearch
      MEILISEARCH_HOST: http://127.0.0.1:7700
      MEILISEARCH_KEY: masterKey

    steps:
      # start uses
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 16

      - name: Checkout api
        uses: actions/checkout@v3
        with:
          path: app

      - name: Cache Frontend Node Modules
        id: cache-frontend-node-modules
        uses: actions/cache@v2
        with:
          path: app/ui/node_modules
          key: frontend-node-modules-${{ hashFiles('package-lock.json') }}

      # Setup Quasar CLI
      - name: Setup Quasar CLI
        run: npm install -g @quasar/cli

      - name: Prepare The Environment
        working-directory: app/api
        run: cp .env.example .env

      - name: Create Database
        run: |
          sudo systemctl start mysql
          mysql --user="root" --password="root" -e "CREATE DATABASE \`my-database\` character set UTF8mb4 collate utf8mb4_bin;"

      - name: Install Composer Dependencies
        working-directory: app/api
        run: composer install --no-progress --prefer-dist --optimize-autoloader

      - name: Generate Application Key
        working-directory: app/api
        run: php artisan key:generate

      - name: Install Frontend Dependencies
        if: steps.cache-frontend-node-modules.outputs.cache-hit != 'true'
        working-directory: app/ui
        run: npm install

      - name: Build Frontend
        working-directory: app/ui
        run: quasar build

      - name: Run Frontend Server & continue
        working-directory: app/ui
        run: quasar serve dist/spa -s &

      - name: Upgrade Chrome Driver
        working-directory: app/api
        run: php artisan dusk:chrome-driver --detect

      - name: Start Chrome Driver
        working-directory: app/api
        run: /vendor/laravel/dusk/bin/chromedriver-linux &

      - name: Run Laravel Server
        working-directory: app/api
        run: php artisan serve --no-reload &

      # Run laravel migrations
      - name: Run Laravel Migrations
        working-directory: app/api
        run: php artisan migrate:fresh --seed --no-interaction -vvv

      - name: Run Dusk Tests
        working-directory: app/api
        run: php artisan dusk

      - name: Run Tests
        working-directory: app/api
        run: php artisan test

"Run Dusk Tests" error:

Run php artisan dusk
Warning: TTY mode requires /dev/tty to be read/writable.
PHPUnit 10.0.19 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.1.2-1ubuntu2.11
Configuration: /home/runner/work/asc/asc/app/api/phpunit.dusk.xml

E                                                                   1 / 1 (100%)

Time: 00:05.392, Memory: 24.00 MB

There was 1 error:

1) Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\UnknownErrorException: unknown error: Chrome failed to start: exited abnormally.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

/home/runner/work/asc/asc/app/api/vendor/php-webdriver/webdriver/lib/Exception/WebDriverException.php:146
/home/runner/work/asc/asc/app/api/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:359
/home/runner/work/asc/asc/app/api/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:129
/home/runner/work/asc/asc/app/api/tests/DuskTestCase.php:44
/home/runner/work/asc/asc/app/api/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:220
/home/runner/work/asc/asc/app/api/vendor/laravel/framework/src/Illuminate/Support/helpers.php:247
/home/runner/work/asc/asc/app/api/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:221
/home/runner/work/asc/asc/app/api/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:99
/home/runner/work/asc/asc/app/api/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:67
/home/runner/work/asc/asc/app/api/tests/Browser/ExampleTest.php:24
/home/runner/work/asc/asc/app/api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:173

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
Error: Process completed with exit code 2.

any tips?

0 likes
1 reply
Adgower's avatar
Adgower
OP
Best Answer
Level 14

I forgot I had these env vars set in the env example file, which was being copied:

DUSK_HEADLESS_DISABLED=false
DUSK_START_MAXIMIZED=false

which even if set causes it to be true. So I removed these and it's working well now.

Please or to participate in this conversation.