E2E Tests #18
This file contains hidden or 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: E2E Tests | |
| permissions: | |
| contents: read | |
| on: | |
| workflow_dispatch: | |
| workflow_call: | |
| jobs: | |
| playwright: | |
| name: Playwright | |
| timeout-minutes: 20 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| uses: "./.github/actions/install-dependencies" | |
| - name: Get Playwright version | |
| id: playwright-version | |
| shell: bash | |
| run: | | |
| playwright_version=$(bun -e "console.log((await Bun.file('./package.json').json()).devDependencies['@playwright/test'])") | |
| echo "version=$playwright_version" >> $GITHUB_OUTPUT | |
| - name: Cache Playwright Browsers | |
| id: playwright-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cache/ms-playwright | |
| key: ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.version }} | |
| restore-keys: | | |
| ${{ runner.os }}-playwright- | |
| - name: Install Playwright Browsers | |
| if: steps.playwright-cache.outputs.cache-hit != 'true' | |
| run: bunx playwright install --with-deps | |
| - name: Install Playwright System Dependencies | |
| if: steps.playwright-cache.outputs.cache-hit == 'true' | |
| run: bunx playwright install-deps | |
| - name: Prepare environment | |
| run: | | |
| mkdir -p data | |
| mkdir -p playwright/temp | |
| mkdir -p playwright/data | |
| chmod -R 777 playwright/temp | |
| touch .env.local | |
| echo "SERVER_IP=localhost" >> .env.local | |
| echo "ZEROBYTE_DATABASE_URL=./data/zerobyte.db" >> .env.local | |
| echo "BASE_URL=http://localhost:4096" >> .env.local | |
| echo "E2E_DEX_ORIGIN=http://dex:5557" >> .env.local | |
| - name: Start zerobyte-e2e service | |
| run: bun run start:e2e -- -d | |
| - name: Wait for zerobyte to be ready | |
| run: | | |
| timeout 30s bash -c 'until curl -f http://localhost:4096/api/healthcheck; do echo "Waiting for server..." && sleep 2; done' | |
| - name: Wait for Dex to be ready | |
| run: | | |
| timeout 30s bash -c 'until curl -sf http://localhost:5557/dex/.well-known/openid-configuration; do echo "Waiting for Dex..." && sleep 2; done' | |
| - name: Print docker logs if failed to start | |
| if: failure() | |
| run: docker compose logs zerobyte-e2e dex || true | |
| - name: Make playwright directory writable | |
| run: sudo chmod 777 playwright/data/zerobyte.db | |
| - name: Run Playwright tests | |
| run: bun run test:e2e | |
| - name: Dump container logs in playwright-report folder | |
| if: always() | |
| run: | | |
| tree playwright | |
| docker compose logs zerobyte-e2e > playwright-report/container-logs.txt || true | |
| docker compose logs dex > playwright-report/dex-logs.txt || true | |
| - name: Debug - print content of /test-data in container | |
| if: failure() | |
| run: | | |
| docker exec zerobyte /bin/ash -c "ls -la /test-data" || true | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 5 | |
| - name: Stop Docker Compose | |
| if: always() | |
| run: docker compose down |