WEB-1221: Add cash drawer opening and provisioning (#4052) #3654
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 (Playwright + Fineract) | |
| on: | |
| push: | |
| branches: [main, dev] | |
| pull_request: | |
| branches: [main, dev] | |
| concurrency: | |
| group: e2e-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| e2e: | |
| name: Playwright E2E | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| env: | |
| CI: true | |
| E2E_BASE_URL: http://localhost:4200 | |
| E2E_FINERACT_URL: https://localhost:8443 | |
| E2E_USERNAME: mifos | |
| E2E_PASSWORD: password | |
| E2E_TENANT_ID: default | |
| NODE_TLS_REJECT_UNAUTHORIZED: '0' | |
| # Written by the `json` reporter in `npm run playwright:ci`. It sits inside | |
| # playwright-report/ so the existing upload keeps it on every run. That only | |
| # holds while `json` is listed after `html`: reporters finish in the order | |
| # listed, and the html reporter clears this folder when it finishes. | |
| PLAYWRIGHT_JSON_OUTPUT_FILE: playwright-report/results.json | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js 24 | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '24.16.0' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Install Playwright browsers | |
| run: npx playwright install --with-deps chromium | |
| # `up -d` blocks until every `depends_on: condition: service_healthy` | |
| # dependency reports healthy, so Postgres and Fineract are already up by | |
| # the time this step returns. Readiness beyond that — Fineract seed data, | |
| # and the web-app container, which has no compose healthcheck — is probed | |
| # by `playwright/global-setup.ts` (pollFineract / pollWebApp), which runs | |
| # in CI as part of the test command below. | |
| - name: Start E2E infrastructure | |
| run: docker compose -f docker-compose.e2e.yml up -d --build | |
| - name: Run Playwright tests | |
| run: npm run playwright:ci | |
| - name: Summarize flaky tests | |
| if: always() | |
| # Reporting only: a problem in this step must never change the job result. | |
| continue-on-error: true | |
| run: node scripts/summarize-flaky-tests.js "$PLAYWRIGHT_JSON_OUTPUT_FILE" | |
| - name: Dump Docker logs on failure | |
| if: failure() | |
| run: | | |
| echo "=== Fineract ===" | |
| docker logs e2e-fineract --tail 100 2>&1 || true | |
| echo "=== PostgreSQL ===" | |
| docker logs e2e-postgres --tail 50 2>&1 || true | |
| echo "=== Web-App ===" | |
| docker logs e2e-web-app --tail 50 2>&1 || true | |
| echo "=== Memory ===" | |
| docker stats --no-stream || true | |
| - name: Upload Playwright report | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 7 | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v7 | |
| if: failure() | |
| with: | |
| name: test-results | |
| path: test-results/ | |
| retention-days: 7 | |
| - name: Tear down E2E infrastructure | |
| if: always() | |
| run: | | |
| docker compose -f docker-compose.e2e.yml down -v --remove-orphans |