End up setting up a workflow using macos-latest and installing Valet. This is the workflow:
name: End-to-End Test
on: [ push, pull_request ]
jobs:
Tests:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite
tools: composer:v2
coverage: coverage
- name: Add HTTP basic auth credentials
run: echo '${{ secrets.COMPOSER_AUTH_JSON }}' > $GITHUB_WORKSPACE/auth.json
- name: Install Composer dependencies
run: composer install --no-interaction --prefer-dist --optimize-autoloader
- name: Install NPM dependencies
run: npm install
- name: Copy .env
run: cp .env.example .env
- name: Generate key
run: php artisan key:generate
- name: Clear Config
run: php artisan config:clear
- name: Install MySQL
run: |
brew install mysql
sudo chown -R _mysql:mysql /usr/local/var/mysql
sudo mysql.server start
- name: Set up MySQL database
run: |
mysql -u root -e 'CREATE DATABASE IF NOT EXISTS laravel;'
mysql -u root -e "GRANT ALL PRIVILEGES ON laravel.* TO 'root'@'localhost';"
mysql -u root -e 'FLUSH PRIVILEGES;'
- name: Migrate MySQL database
env:
DB_CONNECTION: mysql
DB_DATABASE: laravel
DB_PORT: 3306
DB_USER: root
STRIPE_SECRET: ${{ secrets.STRIPE_SECRET }}
run: php artisan migrate:fresh
- name: Require Laravel Valet
run: composer global require laravel/valet
- name: Install Valet
run: valet install
- name: Start Valet
run: valet start
- name: Secure Valet
run: valet secure mydomain.test
- name: Link Valet
run: valet link
- name: Start Vite server
run: npm run dev &
env:
LARAVEL_BYPASS_ENV_CHECK: 1
- name: Cypress run
run: npx cypress run