Skip to content

feat: a quarantine check that fails the build once a quarantine runs out - #159

Merged
ExtraToast merged 1 commit into
mainfrom
feat/quarantine-expiry
Oct 16, 2026
Merged

ExtraToast merged 1 commit into
mainfrom
feat/quarantine-expiry

Conversation

@ExtraToast

Copy link
Copy Markdown
Contributor

A flaky test can be quarantined only with the issue that tracks its fix and an expiry at most 14 days away. Once that date passes the build fails again, so a quarantine cannot become permanent (estate testing standard, section 7; ADR-0022).

  • The marker is one string, put in the reason of whatever skips the test, so every language uses its own skip:

    t.Skip("quarantine: https://github.com/<owner>/<repo>/issues/<n> until 2026-10-30")    // Go
    test.fixme(true, 'quarantine: https://github.com/... until 2026-10-30')               // Playwright
    @Disabled("quarantine: https://github.com/... until 2026-10-30")                      // Kotlin
    
  • scripts/quarantine_check.py reads every tracked test file (_test.go, .spec.ts, .test.ts, *Test.kt, *Test.java). A marker fails the build when:

    • its date has passed;
    • it is more than 14 days away;
    • it names no GitHub issue;
    • it has no valid date.

    Each failure is a GitHub annotation on the line. A marker that expires today still passes. Markers in documents are not read.

  • quarantine-check.yml is a reusable workflow that runs it. It is one 5-minute job that checks out the caller and this repository at its released version.

  • CI holds the script to 100% line and branch coverage, like the other two gating scripts. Its tests follow the testing standard: one behaviour per test, named as a sentence.

Part of JorisJonkers-dev/workspace#128. #156 closes once the testing standard documents the marker and identity runs the check.

Checks

  • tests/test_quarantine_check.py: 16 tests, 100% line and branch coverage.
  • All tests in tests/ pass, and actionlint passes on both changed workflows.
  • Run against this repository, it reports "No quarantined tests."

@ExtraToast ExtraToast added type: feature New user-facing or operator-facing capability. area: tooling Reusable workflows, Gradle, templates, Renovate, and API tooling. labels Oct 16, 2026
@ExtraToast
ExtraToast merged commit 429a72d into main Oct 16, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: tooling Reusable workflows, Gradle, templates, Renovate, and API tooling. type: feature New user-facing or operator-facing capability.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant