e2e test fix #1170
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 | |
redis: | |
image: redis | |
api: | |
image: escolalms/api:latest | |
ports: | |
- 80:80 | |
env: | |
LARAVEL_APP_NAME: Wellms Playwright Demo | |
LARAVEL_APP_ENV: local | |
LARAVEL_APP_KEY: base64:pveos6JL8iCwO3MbzoyQpNx6TETMYuUpfZ18CDKl6Cw= | |
LARAVEL_APP_DEBUG: true | |
LARAVEL_APP_LOG_LEVEL: debug | |
LARAVEL_APP_URL: http://localhost:1000 | |
LARAVEL_DB_CONNECTION: pgsql | |
LARAVEL_DB_HOST: postgres | |
LARAVEL_DB_PORT: 5432 | |
LARAVEL_DB_DATABASE: default | |
LARAVEL_DB_USERNAME: default | |
LARAVEL_DB_PASSWORD: secret | |
LARAVEL_BROADCAST_DRIVER: log | |
LARAVEL_CACHE_DRIVER: redis | |
LARAVEL_SESSION_DRIVER: cookie | |
LARAVEL_QUEUE_DRIVER: redis | |
LARAVEL_QUEUE_CONNECTION: redis | |
LARAVEL_REDIS_HOST: redis | |
LARAVEL_REDIS_PASSWORD: | |
LARAVEL_REDIS_PORT: 6379 | |
LARAVEL_MAIL_DRIVER: smtp | |
LARAVEL_MAIL_HOST: mailhog | |
LARAVEL_MAIL_PORT: 1025 | |
LARAVEL_MAIL_USERNAME: null | |
LARAVEL_MAIL_PASSWORD: null | |
LARAVEL_MAIL_ENCRYPTION: | |
LARAVEL_MJML_BINARY_PATH: /usr/bin/mjml | |
LARAVEL_TRACKER_ENABLED: false | |
DISABLE_HORIZON: true | |
DISABLE_SCHEDULER: true | |
steps: | |
- name: Wait for container to be healthy | |
run: | | |
docker logs api || echo "No logs available for the container." | |
until docker exec api php artisan health:check; do | |
echo 'Waiting for container to be healthy...' | |
docker logs api || echo "No logs available for the container." | |
sleep 15 | |
done | |
echo "Container is healthy, proceeding to next step." | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 1 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: Test login endpoint | |
run: | | |
docker ps && \ | |
curl -X POST "http://api:9000/api/auth/login" \ | |
-H "Content-Type: application/json" \ | |
-d '{"email": "[email protected]", "password": "secret"}' \ | |
-i | |
- 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 |