CI: wrap test-two-browser-FTs commands in _retry_failed.sh
All checks were successful
ci/woodpecker/push/pyswiss Pipeline was successful
ci/woodpecker/push/main Pipeline was successful

Pipeline #351 hit a NoSuchWindowException / browsing-context-discarded flake on the LAST channels FT (test_first_done_polarity_sees_other_group_settling_message) — typical cumulative-Firefox-memory-pressure failure on a multi-browser test run as the 22nd in its bucket. Test passes locally and in isolation; no code regression.

The other two FT stages (test-FTs-room, test-FTs-non-room) already route through `_retry_failed.sh`, which parses Django's FAIL:/ERROR: lines from stdout and re-runs only the failed labels. Wrapping the three two-browser-FTs commands (two-browser / sequential / channels tags) in the same script gives the channels suite the same flake recovery without slowing the happy path (first-run-green short-circuits to exit 0).

Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-05-28 14:32:04 -04:00
parent b563e96f82
commit d87f26003b

View File

@@ -54,9 +54,18 @@ steps:
# Also collectstatic'd here; output sits in the shared workspace so
# the downstream FT steps don't have to repeat it.
- python manage.py collectstatic --noinput
- python manage.py test functional_tests --tag=two-browser
- python manage.py test functional_tests --tag=sequential
- python manage.py test functional_tests --tag=channels
# All three tag-stages run through `_retry_failed.sh` so a single
# browsing-context-discarded / NoSuchWindow flake on a multi-browser
# channels FT (typically the LAST test in the suite, when Firefox
# has accumulated memory pressure from 21 prior browser launches)
# costs ~30s on retry instead of failing the whole step. Matches
# the retry posture of test-FTs-room + test-FTs-non-room. First-
# run-green still exits 0 immediately — no overhead in the happy
# path. First-run-crash w. no parseable labels propagates the
# original exit (genuine infra problems aren't masked).
- bash ../.woodpecker/_retry_failed.sh functional_tests --tag=two-browser
- bash ../.woodpecker/_retry_failed.sh functional_tests --tag=sequential
- bash ../.woodpecker/_retry_failed.sh functional_tests --tag=channels
when:
- event: push
path: