Skip to content

fix(ci): failOnFlakyTests ergänzen + falsche Audit-Aussage korrigieren - #980

Merged
arn0ld87 merged 3 commits into
mainfrom
ci/codex-findings-977
Aug 4, 2026
Merged

fix(ci): failOnFlakyTests ergänzen + falsche Audit-Aussage korrigieren#980
arn0ld87 merged 3 commits into
mainfrom
ci/codex-findings-977

Conversation

@arn0ld87

@arn0ld87 arn0ld87 commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Arbeitet die drei Codex-Findings aus #977 ab. Alle drei zutreffend, zwei davon echte Fehler aus dem Audit-PR.

P1 — retries: 1 allein hätte das E2E-Gate geschwächt

Codex hat den entscheidenden Punkt getroffen: Playwright beendet einen Lauf mit flaky-Tests mit Exit-Code 0. Der „flaky"-Ausweis steht zwar im Report, hält den Check aber nicht rot. Da alle sechs Smokes Required Checks sind, wäre eine intermittierende Regression damit zum grünen Merge-Gate geworden — das Gate wäre schwächer gewesen als vorher, nicht nur besser instrumentiert. Meine Begründung im Config-Kommentar war insofern falsch.

failOnFlakyTests: !!process.env.CI ergänzt.

Empirisch verifiziert mit einem künstlich flakigen Test (Datei-basierter Zähler, damit der Zustand den Worker-Neustart nach dem Fehlschlag überlebt):

Konfiguration Report Exit-Code
retries: 1 allein 1 flaky 0
retries: 1 + failOnFlakyTests 1 flaky 1

Der Retry liefert weiterhin den flaky-Ausweis im Report und — via trace: retain-on-failure — den Trace des fehlgeschlagenen Versuchs; die Messlatte sinkt nicht.

P1 — docs/ci-e2e-audit.md war eine parallele Planungsquelle

Die Empfehlungsliste E1–E9 machte das Dokument faktisch zum Tracker neben README/STATUS/ROADMAP/Issues, was AGENTS.md untersagt. Nachverfolgung läuft jetzt über Issues:

Das Dokument bleibt Auditbefund und Belegkontext; bei Abweichungen gilt der Issue-Stand. Anmerkung zur Einordnung: Auditdokumente mit Folgearbeiten haben im Repo Präzedenz (docs/AUDIT_REPORT_MAY_2026.md, docs/audit-followup-issues.md, docs/audits/) — die Trennung „Befund im Dokument, Nachverfolgung im Issue" löst die Spannung sauber auf.

P2 — falsche Aussage in §9 korrigiert

Der Text nannte einen „neuen run-budget-Job in CI" als „lokal verifiziert". Beides unzutreffend: Es gibt keinen solchen Job, die Spec ist nicht verdrahtet, und lokal ist sie nicht grün — sie deckt den offenen Defekt aus #978 auf. Der Pfad hat damit keinerlei CI-Abdeckung. Genau das steht jetzt dort.

Das war ein Rückstand aus einer früheren Fassung des Dokuments, den ich beim Umschwenken auf „nicht verdrahten" nicht nachgezogen hatte. Berechtigter Fund.

Außerdem nachgezogen

E5 als erledigt markiert: Branch-Protection von 15 auf 17 Required Checks erweitert (Backend PR smoke gate, Frontend PR smoke gate), strict: true unverändert.

Verifikation

  • bash scripts/pre-push-gate.shALL GREEN
  • Flaky-Kontrollversuch wie oben tabelliert (Probe-Dateien nach dem Lauf entfernt)

🤖 Generated with Claude Code

https://claude.ai/code/session_01V6zsyxzDRymnyMeBCsUxDT

Summary by CodeRabbit

  • Verbesserungen

    • CI-E2E-Tests werden bei instabilen Tests einmal wiederholt, bleiben bei einem erst im Wiederholungsversuch erfolgreichen Test jedoch weiterhin fehlgeschlagen.
    • Lokale Testläufe bleiben ohne automatische Wiederholungen.
    • Zwei Backend- und Frontend-Smoke-Tests sind nun als erforderliche Prüfungen für Änderungen aktiviert.
  • Dokumentation

    • CI-Testverhalten, Audit-Ergebnisse und die Nachverfolgung offener Empfehlungen wurden aktualisiert.
    • Ein fehlerhafter Verweis wurde korrigiert.

Nachtrag 2026-07-31 — Review-Findings (7c71b9d)

  • Codex P1 (CHANGELOG.md:20): README/STATUS/ROADMAP behaupteten main habe keine Branch-Protection. Nachgemessen: 17 Required Checks, strict: true, enforce_admins: true — und bereits vor diesem Slice 15. Alle drei Dateien korrigiert.
  • Codex P1 (docs/ci-e2e-audit.md): §9 als datierte Momentaufnahme eingefroren; kein Erledigungsstatus mehr im Auditdokument, Nachverfolgung nur in fix(budget): Hartes Run-Budget greift im Report-Pfad nicht (status=completed statt stopped) #978/ci: verbleibende Folgearbeiten aus dem CI-/E2E-Audit (E1, E4, E6, E8) #979.
  • Codex P2 (frontend/playwright.config.ts): Behauptung „Trace beider Versuche“ war mit retain-on-failure falsch. Aussage korrigiert statt Modus gewechselt; Verzicht auf retain-on-failure-and-retries ist im Kommentar begründet. Keine Verhaltensänderung.
  • CodeRabbit: deutsche Schlusszeichen in allen selbst verfassten Passagen.

Gate nach den Änderungen: bash scripts/pre-push-gate.sh → ALL GREEN.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@arn0ld87, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 1 minute

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c3975964-38d1-47f5-a1ee-3186e141920c

📥 Commits

Reviewing files that changed from the base of the PR and between 158f3ba and 7742273.

📒 Files selected for processing (6)
  • CHANGELOG.md
  • README.md
  • ROADMAP.md
  • docs/STATUS.md
  • docs/ci-e2e-audit.md
  • frontend/playwright.config.ts
📝 Walkthrough

Walkthrough

Die CI-Playwright-Konfiguration aktiviert einen Retry und failOnFlakyTests. Die Audit-Dokumentation und der Changelog aktualisieren das Verhalten, Issue-Tracking, PR-Gates und den run-budget-Status.

Changes

CI-E2E-Zuverlässigkeit

Layer / File(s) Summary
CI-Retry-Konfiguration
frontend/playwright.config.ts
CI verwendet einen Retry und failOnFlakyTests. Lokal bleiben Retries deaktiviert.
Audit- und Statusdokumentation
docs/ci-e2e-audit.md, CHANGELOG.md
Die Dokumentation beschreibt das Retry-Verhalten, Issue-Tracking, PR-Gates und den offenen run-budget-Defekt. Der Changelog dokumentiert diese Änderungen.

Estimated code review effort: 2 (Einfach) | ~10 Minuten

Possibly related issues

Possibly related PRs

  • arn0ld87/agora#781 — Bezieht sich auf E2E-Smoke-Gates und das Playwright-Verhalten.
  • arn0ld87/agora#842 — Bezieht sich auf den Status der E2E-Smoke-Gates und die AiModelPicker-Dokumentation.

Suggested labels: bug

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Der Titel beschreibt präzise die zentrale CI-Korrektur und die Berichtigung der Audit-Dokumentation.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 158f3ba283

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CHANGELOG.md
- **`retries: 1` allein hätte das E2E-Gate geschwächt.** Playwright beendet einen Lauf mit flaky-Tests mit **Exit-Code 0**; der Retry-Report allein hält den Check nicht rot. Da alle sechs Smokes Required Checks sind, wäre eine intermittierende Regression damit zum grünen Merge-Gate geworden — das Gate wäre schwächer gewesen als vorher, nicht nur besser instrumentiert. `failOnFlakyTests: !!process.env.CI` ergänzt: Der Retry liefert weiterhin Trace und „flaky"-Ausweis, der Lauf bleibt aber rot.
- **Falsche Aussage in `docs/ci-e2e-audit.md` §9 korrigiert.** Der Text nannte einen „neuen `run-budget`-Job in CI" als „lokal verifiziert" — beides unzutreffend: es gibt keinen solchen Job, die Spec ist nicht verdrahtet, und lokal ist sie nicht grün, sondern deckt den offenen Defekt aus #978 auf. Der Pfad hat damit **keinerlei** CI-Abdeckung; genau das steht jetzt dort.
- **Auditdokument ist keine Planungsquelle mehr.** Die Empfehlungen E1–E9 werden ab sofort über GitHub Issues nachverfolgt (#978 für den Budget-Defekt, #979 als Sammel-Issue E1–E8), wie es AGENTS.md verlangt. `docs/ci-e2e-audit.md` bleibt Auditbefund und Belegkontext; bei Abweichungen gilt der Issue-Stand.
- **Branch-Protection erweitert (ehem. E5).** `Backend PR smoke gate` und `Frontend PR smoke gate` sind jetzt Required Checks — 17 statt 15, `strict: true` unverändert. Vorher war ein PR mit rotem Lint, Typecheck oder Unit-Test mergebar.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Synchronize the canonical branch-protection status

This entry says that main now has 17 required checks, while README.md:31,249, docs/STATUS.md:55,61,72,148, and ROADMAP.md:51,71 still say that main has no branch protection and treat enabling it as pending release work. These mutually exclusive states make the documented maturity and next priorities unreliable; verify the external setting and update the canonical status and roadmap in this slice.

AGENTS.md reference: AGENTS.md:L41-L45

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Erledigt in 7c71b9d — die Aussage war tatsächlich falsch.

README.md, docs/STATUS.md und ROADMAP.md behaupteten alle drei, main besitze keine Branch-Protection (Beleg: ein 404 der Protection-API). Nachgemessen:

{"anzahl_checks":17,"deletions":false,"enforce_admins":true,"force_pushes":false,
 "linear_history":false,"required_reviews":0,"required_status_checks_strict":true}

Die Protection war schon vor diesem Slice aktiv — 15 Required Checks; dieser Slice hat sie auf 17 erweitert. Die Doku war also bereits zum Auditzeitpunkt nachweislich veraltet; genau das steht jetzt als Hinweis in STATUS.md, damit der 404-Beleg nicht erneut jemanden in die Irre führt.

Comment thread docs/ci-e2e-audit.md Outdated
| E3 | **Fehlende Auth-Header** an den zwei Aufrufstellen aus P9 ergänzen. | Hängt an E2 — solange der Helper ohnehin nichts assertet, ändert der Header nur die Log-Zeile. Gemeinsam erledigen. |
| E4 | **`checkKeyboardNavigation` verschärfen**: statt „irgendein Tab setzt Fokus" die tatsächliche Tab-Reihenfolge gegen die DOM-Reihenfolge prüfen. | Die aktuelle Abschwächung war die dokumentierte Lösung für falsch-negative Läufe (#838, #921). Eine Verschärfung ohne neues Konzept holt die Flakiness zurück. Braucht einen eigenen Entwurf. |
| E5 | **PR-Gates als Required Checks aufnehmen.** `Backend PR smoke gate` und `Frontend PR smoke gate` laufen auf jedem PR, sind aber **nicht** required — ein PR mit rotem Lint, Typecheck oder Unit-Test ist derzeit mergebar. | Änderung an der Branch-Protection, nicht am Repository. Entscheidung des Betreibers. |
| ~~E5~~ **erledigt** | **PR-Gates als Required Checks aufnehmen.** `Backend PR smoke gate` und `Frontend PR smoke gate` liefen auf jedem PR, waren aber **nicht** required — ein PR mit rotem Lint, Typecheck oder Unit-Test war mergebar. | Am 2026-07-31 nach Freigabe umgesetzt: Branch-Protection von 15 auf 17 Required Checks erweitert, `strict: true` unverändert. Die „Check startet nie"-Falle ist ausgeschlossen — `ci.yml` hat keinen `paths`-Filter, und beide Jobs stehen auf `if: github.event_name == 'pull_request'`. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Stop tracking recommendation state in the audit

Marking E5 as completed here keeps this audit functioning as a live fifth tracker despite the new disclaimer that GitHub Issues own follow-up state: future readers must still reconcile completion markers and priorities in this table against #978/#979. Freeze this section as a dated audit snapshot or remove live recommendation statuses so executable follow-up is maintained only in the permitted planning sources.

AGENTS.md reference: AGENTS.md:L73-L73

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Berechtigt — erledigt in 7c71b9d.

Der Disclaimer allein hat den Widerspruch nicht aufgelöst: solange E5 ein ~~erledigt~~ trug, war die Tabelle genau das, was AGENTS.md untersagt. §9 ist jetzt als datierte Momentaufnahme eingefroren:

  • Überschrift: „Empfehlungen — Momentaufnahme vom 2026-07-31, wird nicht fortgeschrieben"
  • kein Erledigungsstatus mehr in der Tabelle; die E5-Zeile nennt nur noch die damalige Begründung („Branch-Protection zu ändern brauchte eine ausdrückliche Freigabe, keine Audit-Entscheidung")
  • auch der Live-Zeiger **E9** → **#978** ist raus; die Issue-Links stehen nur noch einmal im Vorspann

Ausführbarer Folgestand liegt damit ausschließlich in #978 und #979.

Comment thread frontend/playwright.config.ts Outdated
Comment on lines +10 to +12
// Ein Retry NUR in CI — ausschliesslich fuer die Diagnose (Trace beider
// Versuche, "flaky"-Ausweis im Report). Lokal bleibt es bei 0, damit
// Flakiness beim Entwickeln sofort auffaellt.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Retain the successful retry trace too

When the first attempt fails and the retry succeeds, this configuration does not produce the claimed traces of both attempts: use.trace remains retain-on-failure at line 26, which Playwright documents as keeping traces only for failed runs, so the successful retry trace is discarded. failOnFlakyTests changes the suite result but not that retry's passed status; use retain-on-failure-and-retries or another retry-retaining mode if comparing both traces is the intended diagnostic benefit.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zutreffend — der Kommentar hat mehr versprochen, als die Konfiguration liefert. Erledigt in 7c71b9d.

Ich habe die Aussage korrigiert statt den Modus zu wechseln: bei einem flaky-Test ist der fehlgeschlagene Versuch der diagnostisch aussagekräftige, retain-on-failure-and-retries würde vor allem die Artefaktgröße erhöhen. Der Kommentar nennt jetzt genau das, inklusive der Begründung, warum der andere Modus bewusst nicht gesetzt ist. use.trace bleibt unverändert auf retain-on-failure — keine Verhaltensänderung.

Dieselbe Formulierung stand auch in docs/ci-e2e-audit.md §5 und §8 sowie im CHANGELOG.md; alle drei Stellen sind nachgezogen.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/ci-e2e-audit.md`:
- Line 126: Vereinheitliche die deutschen Anführungszeichen: In
docs/ci-e2e-audit.md im Bereich 126–126, 263–263 und CHANGELOG.md im Bereich
10–10 ersetze „flaky" durch „flaky“. In docs/ci-e2e-audit.md im Bereich 290–291
schließe „irgendein Tab setzt Fokus“ und „Check startet nie“ mit `“` statt dem
ASCII-Zeichen ab.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 4a7cad84-1a9a-4fa8-a2ad-d860955af760

📥 Commits

Reviewing files that changed from the base of the PR and between 1286dfe and 158f3ba.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • docs/ci-e2e-audit.md
  • frontend/playwright.config.ts

Comment thread docs/ci-e2e-audit.md Outdated
arn0ld87 added a commit that referenced this pull request Jul 31, 2026
- playwright.config.ts: Kommentar behauptete faelschlich Traces beider
  Versuche; retain-on-failure verwirft den Trace eines bestandenen Retrys.
  Aussage korrigiert, Verzicht auf retain-on-failure-and-retries begruendet.
- ci-e2e-audit.md §9 als datierte Momentaufnahme eingefroren (kein
  Erledigt-Status mehr im Dokument, Nachverfolgung nur in #978/#979).
- README/STATUS/ROADMAP: falsche Aussage "keine Branch-Protection"
  korrigiert; nachgemessen 17 Required Checks, strict, enforce_admins.
- Deutsche Schlusszeichen in selbst verfassten Passagen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6zsyxzDRymnyMeBCsUxDT
arn0ld87 and others added 2 commits August 4, 2026 11:15
Codex-Findings zu PR #977. Alle drei zutreffend, zwei davon echte Fehler.

P1 — retries: 1 allein haette das E2E-Gate GESCHWAECHT.
Playwright beendet einen Lauf mit flaky-Tests mit Exit-Code 0; der
"flaky"-Ausweis im Report haelt den Check nicht rot. Da alle sechs Smokes
Required Checks sind, waere eine intermittierende Regression damit zum
gruenen Merge-Gate geworden. failOnFlakyTests: !!process.env.CI ergaenzt.

Empirisch verifiziert mit einem kuenstlich flakigen Test (Datei-Zaehler,
damit der Zustand den Worker-Neustart ueberlebt):
  retries: 1 allein        -> "1 flaky", Exit 0
  + failOnFlakyTests       -> "1 flaky", Exit 1
Der Retry liefert weiterhin Trace und flaky-Ausweis; die Messlatte sinkt
nicht.

P1 — docs/ci-e2e-audit.md war keine reine Auditdatei.
Die Empfehlungen E1-E9 machten sie zur parallelen Planungsquelle neben
README/STATUS/ROADMAP/Issues, was AGENTS.md verbietet. Nachverfolgung
laeuft jetzt ueber #978 (Budget-Defekt) und #979 (Sammel-Issue E1-E8);
das Dokument bleibt Auditbefund und Belegkontext.

P2 — falsche Aussage in §9 korrigiert.
Der Text nannte einen "neuen run-budget-Job in CI" als "lokal verifiziert".
Beides unzutreffend: es gibt keinen solchen Job, die Spec ist nicht
verdrahtet, und lokal ist sie nicht gruen, sondern deckt den offenen
Defekt aus #978 auf. Der Pfad hat KEINERLEI CI-Abdeckung — das steht
jetzt so dort.

Ausserdem nachgezogen: E5 als erledigt markiert (Branch-Protection von 15
auf 17 Required Checks erweitert, PR-Gates aufgenommen).

Verifikation: pre-push-gate.sh ALL GREEN.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6zsyxzDRymnyMeBCsUxDT
- playwright.config.ts: Kommentar behauptete faelschlich Traces beider
  Versuche; retain-on-failure verwirft den Trace eines bestandenen Retrys.
  Aussage korrigiert, Verzicht auf retain-on-failure-and-retries begruendet.
- ci-e2e-audit.md §9 als datierte Momentaufnahme eingefroren (kein
  Erledigt-Status mehr im Dokument, Nachverfolgung nur in #978/#979).
- README/STATUS/ROADMAP: falsche Aussage "keine Branch-Protection"
  korrigiert; nachgemessen 17 Required Checks, strict, enforce_admins.
- Deutsche Schlusszeichen in selbst verfassten Passagen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6zsyxzDRymnyMeBCsUxDT
@arn0ld87
arn0ld87 force-pushed the ci/codex-findings-977 branch from 3288219 to 57eb081 Compare August 4, 2026 09:16
@arn0ld87
arn0ld87 merged commit 4db7016 into main Aug 4, 2026
31 of 32 checks passed
@arn0ld87
arn0ld87 deleted the ci/codex-findings-977 branch August 5, 2026 10:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant