e2e test fix #1149
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 | |
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" | |
- name: Wait for container to be healthy | |
run: | | |
# Wait until the container is healthy | |
until docker exec api php artisan health:check; do | |
echo 'Waiting for container to be healthy...' | |
sleep 5 | |
done | |
echo "Container is healthy, proceeding to next step." | |
- name: Wait for container to be healthy and run commands | |
run: | | |
until docker exec api php artisan health:check; do | |
echo 'Waiting for container to be healthy...' | |
sleep 5 | |
done | |
echo "Container is healthy, proceeding to next step." | |
docker exec -u 1000 api php artisan config:cache | |
docker exec -u 1000 api composer dumpautoload | |
docker exec -u 1000 api php artisan key:generate --force --no-interaction | |
docker exec -u 1000 api php artisan passport:keys --force --no-interaction | |
docker exec -u 1000 api php artisan migrate --force --no-interaction | |
docker exec -u 1000 api php artisan passport:client --personal --no-interaction | |
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 |