e2e test fix #1136
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: End-to-end Tests | |
on: | |
# Trigger the workflow on push or pull request, | |
# but only for the main branch | |
push: | |
branches: | |
- main | |
- master | |
- develop | |
pull_request: | |
jobs: | |
playwright-e2e: | |
runs-on: ubuntu-latest | |
services: | |
mailhog: | |
image: mailhog/mailhog | |
ports: | |
- 1025:1025 # smtp server | |
- 8025:8025 # web ui | |
postgres: | |
image: postgres | |
env: | |
POSTGRES_DB: default | |
POSTGRES_USER: default | |
POSTGRES_PASSWORD: secret | |
TZ: Europe/Warsaw | |
ports: | |
- 5432:5432 | |
options: >- | |
--health-cmd "pg_isready -U default -d default" | |
--health-interval 5s | |
--health-timeout 3s | |
--health-retries 10 | |
redis: | |
image: redis | |
api: | |
image: escolalms/api:latest | |
ports: | |
- 80:80 | |
options: >- | |
--name api | |
--env LARAVEL_DB_HOST=postgres | |
--env LARAVEL_DB_PORT=5432 | |
--env LARAVEL_DB_DATABASE=default | |
--env LARAVEL_DB_USERNAME=default | |
--env LARAVEL_DB_PASSWORD=secret | |
--env LARAVEL_REDIS_PASSWORD= | |
--env VAR2=value2 | |
--health-cmd "php artisan health:check || exit 1" | |
--health-interval 20s | |
--health-timeout 360s | |
--health-retries 15 | |
steps: | |
- run: | | |
docker exec -u 1000 api echo "APP_NAME=Wellms Playwright Demo \ | |
APP_ENV=local \ | |
APP_KEY=base64:pveos6JL8iCwO3MbzoyQpNx6TETMYuUpfZ18CDKl6Cw= \ | |
APP_DEBUG=true \ | |
APP_LOG_LEVEL=debug \ | |
APP_URL=http://localhost:1000 \ | |
DB_CONNECTION=pgsql \ | |
DB_HOST=postgres \ | |
DB_PORT=5432 \ | |
DB_DATABASE=default \ | |
DB_USERNAME=default \ | |
DB_PASSWORD=secret \ | |
BROADCAST_DRIVER=log \ | |
CACHE_DRIVER=redis \ | |
SESSION_DRIVER=cookie \ | |
QUEUE_DRIVER=redis \ | |
QUEUE_CONNECTION=redis \ | |
REDIS_HOST=redis \ | |
REDIS_PASSWORD= \ | |
REDIS_PORT=6379 \ | |
MAIL_DRIVER=smtp \ | |
MAIL_HOST=mailhog \ | |
MAIL_PORT=1025 \ | |
MAIL_USERNAME=null \ | |
MAIL_PASSWORD=null \ | |
MAIL_ENCRYPTION= \ | |
MJML_BINARY_PATH=/usr/bin/mjml \ | |
TRACKER_ENABLED=false" >> .env | |
- run: docker exec -u 1000 api cat .env | |
- run: docker exec -u 1000 api php artisan config:cache | |
- run: docker exec -u 1000 api composer dumpautoload | |
- run: docker exec -u 1000 api php artisan key:generate --force --no-interaction | |
- run: docker exec -u 1000 api php artisan passport:keys --force --no-interaction | |
- run: docker exec -u 1000 api php artisan migrate --force --no-interaction | |
- run: docker exec -u 1000 api php artisan passport:client --personal --no-interaction | |
- run: docker exec -u 1000 api php artisan db:seed --force --no-interaction | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 1 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: Cache node modules | |
id: cache-npm | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} | |
name: List the state of node modules | |
continue-on-error: true | |
run: npm list | |
- name: Node dependencies | |
run: npm i --legacy-peer-deps | |
- name: Build | |
run: cp .env.ci .env && REACT_APP_API_URL=http://localhost npm run --openssl-legacy-provider build | |
- name: Install Playwright | |
run: npx playwright install --with-deps | |
- name: Run your tests | |
run: npm run test:e2e | |
- name: Upload test results | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: test-results |