diff --git a/.github/workflows/test_e2e.yml b/.github/workflows/test_e2e.yml index 50de7090b..9c120c4cf 100644 --- a/.github/workflows/test_e2e.yml +++ b/.github/workflows/test_e2e.yml @@ -106,3 +106,70 @@ jobs: with: name: backend-logs-pr-#${{ steps.pr.outputs.number }} path: /home/runner/work/gradido/gradido/logs/backend + + end-to-end-tests-playwright: + name: End-to-End Tests Playwright + runs-on: ubuntu-22.04 + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set Node.js version + uses: actions/setup-node@v4 + with: + node-version: '18.20.7' + + - name: install bun + uses: oven-sh/setup-bun@v2 + + - name: Boot up test system | docker-compose mariadb mailserver + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach mariadb mailserver + + - name: Prepare test system + run: | + sudo chown runner:docker -R * + bun install + sudo cp ./nginx/e2e-test.conf /etc/nginx/sites-available/default + + - name: Boot up test system | seed backend + run: bun turbo seed + + - name: Moving logs after seeding + run: | + mkdir -p /home/runner/work/gradido/gradido/logs/backend/seed + mv /home/runner/work/gradido/gradido/logs/backend/*.log /home/runner/work/gradido/gradido/logs/backend/seed/ + + - name: Boot up test system | docker-compose backend, frontend + run: | + cd backend + cp .env.test_e2e .env + cd .. + bun turbo backend#build + bun turbo frontend#build + bun turbo backend#start frontend#start --env-mode=loose & + + - name: End-to-end tests | prepare + run: | + cd e2e-tests/playwright/typescript + bun install + + - name: wait for frontend and backend to be ready + run: | + until nc -z 127.0.0.1 3000; do echo waiting for frontend; sleep 1; done; + until nc -z 127.0.0.1 4000; do echo waiting for backend; sleep 1; done; + + - name: Start local nginx webserver + run: | + sudo nginx -t + sudo systemctl start nginx + + - name: wait for nginx and mailserver to be ready + run: | + until nc -z 127.0.0.1 80; do echo waiting for nginx; sleep 1; done; + until nc -z 127.0.0.1 1025; do echo waiting for mailserver; sleep 1; done; + + - name: End-to-end tests | run tests + id: e2e-tests + run: | + cd e2e-tests/playwright/typescript + bun run test