Skip to content

e2e test fix

e2e test fix #1148

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
steps:
- name: Start API container and set environment variables
run: |
docker run -d --name api \
--network ${{ job.container.network }} \
-p 80:80 \
-e LARAVEL_APP_NAME="Wellms Playwright Demo" \
-e LARAVEL_APP_ENV="local" \
-e LARAVEL_APP_KEY="base64:pveos6JL8iCwO3MbzoyQpNx6TETMYuUpfZ18CDKl6Cw=" \
-e LARAVEL_APP_DEBUG="true" \
-e LARAVEL_APP_LOG_LEVEL="debug" \
-e LARAVEL_APP_URL="http://localhost:1000" \
-e LARAVEL_DB_CONNECTION="pgsql" \
-e LARAVEL_DB_HOST="postgres" \
-e LARAVEL_DB_PORT="5432" \
-e LARAVEL_DB_DATABASE="default" \
-e LARAVEL_DB_USERNAME="default" \
-e LARAVEL_DB_PASSWORD="secret" \
-e LARAVEL_BROADCAST_DRIVER="log" \
-e LARAVEL_CACHE_DRIVER="redis" \
-e LARAVEL_SESSION_DRIVER="cookie" \
-e LARAVEL_QUEUE_DRIVER="redis" \
-e LARAVEL_QUEUE_CONNECTION="redis" \
-e LARAVEL_REDIS_HOST="redis" \
-e LARAVEL_REDIS_PASSWORD="" \
-e LARAVEL_REDIS_PORT="6379" \
-e LARAVEL_MAIL_DRIVER="smtp" \
-e LARAVEL_MAIL_HOST="mailhog" \
-e LARAVEL_MAIL_PORT="1025" \
-e LARAVEL_MAIL_USERNAME="null" \
-e LARAVEL_MAIL_PASSWORD="null" \
-e LARAVEL_MAIL_ENCRYPTION="" \
-e LARAVEL_MJML_BINARY_PATH="/usr/bin/mjml" \
-e LARAVEL_TRACKER_ENABLED="false" \
escolalms/api:latest \
sh -c "
# Run php script
cd /var/www/html && \
chown -R www-data:www-data && \
php docker/envs/envs.php && \
# Remove unnecessary supervisor configurations and start supervisord
rm -f /etc/supervisor/custom.d/horizon.conf && \
rm -f /etc/supervisor/custom.d/scheduler.conf && \
/usr/bin/supervisord -c /etc/supervisor/supervisord.conf"
- 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