docs(spec): in-app feedback via github-proxy worker #381
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 | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| permissions: | |
| contents: read | |
| jobs: | |
| e2e: | |
| name: Playwright E2E | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | |
| with: | |
| node-version: '20' | |
| - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: e2e-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: e2e- | |
| - name: Install just | |
| uses: taiki-e/install-action@50b4a718b59c718df4ef27a3b445f86cd57b9f00 # v2.79.3 just | |
| with: | |
| tool: just | |
| - name: Run full E2E flow (setup + tests + teardown) | |
| id: e2e | |
| shell: bash --noprofile --norc -eo pipefail {0} | |
| # PLAYWRIGHT_WORKERS=1: the multi-peer + cross-browser specs | |
| # share a single relay + iroh-gossip mesh, and parallel cold | |
| # starts make two peer pairs race on the relay handshake, so | |
| # the first 30–50 s of dial timeouts blow past the per-spec | |
| # deadline. Sequential execution keeps the warm-relay path | |
| # the dominant cost; the full suite settles in ~8–10 min on | |
| # a fresh runner. PLAYWRIGHT_RETRIES=0 mirrors local CI runs | |
| # and keeps failures actionable instead of papering over them | |
| # with flake retries. | |
| env: | |
| PLAYWRIGHT_WORKERS: '1' | |
| PLAYWRIGHT_RETRIES: '0' | |
| run: just test-e2e-full 2>&1 | tee /tmp/e2e.log | |
| - name: Surface E2E failure | |
| if: failure() && steps.e2e.conclusion == 'failure' | |
| run: | | |
| { | |
| echo "## Playwright E2E failed" | |
| echo | |
| echo '<details><summary>just / playwright output (last 300 lines)</summary>' | |
| echo | |
| echo '```' | |
| tail -n 300 /tmp/e2e.log || echo "(no log captured)" | |
| echo '```' | |
| echo | |
| echo '</details>' | |
| for f in .dev/logs/relay.log .dev/logs/replay.log .dev/logs/storage.log .dev/logs/web.log; do | |
| [ -f "$f" ] || continue | |
| echo | |
| echo "<details><summary>$f (last 100 lines)</summary>" | |
| echo | |
| echo '```' | |
| tail -n 100 "$f" | |
| echo '```' | |
| echo | |
| echo '</details>' | |
| done | |
| } >> "$GITHUB_STEP_SUMMARY" |