feat: add CI E2E workflow with ntfy alerts

- Self-hosted runner on Tower
- Playwright E2E 23 tests
- ntfy notifications on pass/fail
- Runs on push to main + PRs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
L'électron rare
2026-03-25 22:38:11 +01:00
parent d97db3d918
commit 41389a88b7
+41
View File
@@ -0,0 +1,41 @@
name: CI + E2E
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
e2e:
runs-on: self-hosted
timeout-minutes: 10
steps:
- name: Run E2E tests
id: e2e
run: |
cd /home/clems/mascarade/web
BASE_URL=http://localhost:3100 npx playwright test --reporter=line 2>&1 | tee /tmp/e2e-output.txt
PASSED=$(grep -oP '\d+ passed' /tmp/e2e-output.txt | grep -oP '\d+' || echo 0)
FAILED=$(grep -oP '\d+ failed' /tmp/e2e-output.txt | grep -oP '\d+' || echo 0)
echo "passed=$PASSED" >> $GITHUB_OUTPUT
echo "failed=$FAILED" >> $GITHUB_OUTPUT
if [ "${FAILED:-0}" != "0" ] && [ "${FAILED:-0}" != "" ]; then exit 1; fi
- name: Notify ntfy on failure
if: failure()
run: |
curl -s -d "E2E FAILED: ${{ steps.e2e.outputs.failed }} tests failed on $(date '+%H:%M')" \
-H "Title: Ops ER E2E Failed" \
-H "Priority: high" \
-H "Tags: rotating_light" \
https://ntfy.saillant.cc/ops-alerts 2>/dev/null || true
- name: Notify ntfy on success
if: success()
run: |
curl -s -d "E2E OK: ${{ steps.e2e.outputs.passed }} passed" \
-H "Title: Ops ER E2E Pass" \
-H "Priority: low" \
-H "Tags: white_check_mark" \
https://ntfy.saillant.cc/ops-alerts 2>/dev/null || true