Skip to content

chore(ci): turn on the E2E skip-discipline check, first app in the fleet - #354

Merged
rubenvdlinde merged 1 commit into
developmentfrom
chore/turn-on-e2e-skip-discipline
Aug 27, 2026
Merged

chore(ci): turn on the E2E skip-discipline check, first app in the fleet#354
rubenvdlinde merged 1 commit into
developmentfrom
chore/turn-on-e2e-skip-discipline

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

e2e-skip-blocking exists in the shared quality workflow and is enabled
in ZERO of the 21 fleet apps. It has never been on anywhere.

Its own description says to flip it per app once that app is worked down,
so that it "can then only stay clean". launchpad is the app to start
with: its last E2E run on development was 137 passed, 0 skipped.

Why it matters, measured today:

  • The CI log prints skip COUNTS with no reasons. A runtime
    test.skip(cond, reason) is visible ONLY in the Playwright report,
    which is exactly what this check reads. So today a broken fixture and
    a legitimate skip are indistinguishable after the fact.

  • 178 skipped specs across five apps: buildiq 62, decidiq 46, dossiq
    37, shillinq 21, integriq 12.

  • decidiq's integration-registry.spec.ts skips 21 tests on
    test.skip(!first, 'no meeting objects on this instance'). The CI
    seeder deliberately provisions registers and schemas only, so that
    condition means "no earlier spec happened to create a meeting" --
    a seeding-order problem, reported as 21 passes.

This is opened as a PR rather than pushed, so the gate runs against
launchpad here and reports its verdict before it can redden development.

`e2e-skip-blocking` exists in the shared quality workflow and is enabled
in ZERO of the 21 fleet apps. It has never been on anywhere.

Its own description says to flip it per app once that app is worked down,
so that it "can then only stay clean". launchpad is the app to start
with: its last E2E run on development was 137 passed, 0 skipped.

Why it matters, measured today:

  - The CI log prints skip COUNTS with no reasons. A runtime
    `test.skip(cond, reason)` is visible ONLY in the Playwright report,
    which is exactly what this check reads. So today a broken fixture and
    a legitimate skip are indistinguishable after the fact.

  - 178 skipped specs across five apps: buildiq 62, decidiq 46, dossiq
    37, shillinq 21, integriq 12.

  - decidiq's integration-registry.spec.ts skips 21 tests on
    `test.skip(!first, 'no meeting objects on this instance')`. The CI
    seeder deliberately provisions registers and schemas only, so that
    condition means "no earlier spec happened to create a meeting" --
    a seeding-order problem, reported as 21 passes.

This is opened as a PR rather than pushed, so the gate runs against
launchpad here and reports its verdict before it can redden development.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ 2d2759b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
format
check-schema-l10n
composer ✅ 104/104
npm ✅ 538/538
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-27 16:07 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 2109a07 into development Aug 27, 2026
77 of 106 checks passed
rubenvdlinde added a commit that referenced this pull request Aug 28, 2026
…#366)

#354 turned this on. #356 removed it 16 minutes later while rewriting
this file's triggers -- not a revert, just two edits landing together and
one line not surviving.

Worth restoring now for a better reason than the first time. When #354
merged, the gate was a NO-OP: it could not find check_e2e_skips.py and
warned instead of failing, so launchpad looked like it was enforcing skip
discipline while measuring nothing. Three fixes later it genuinely runs:

  - hydra-gates v1.10.0 cut, containing the script (#359 vendored it)
  - ConductionNL/.github#595 fixed the lookup path, which had omitted the
    inner hydra-gates/ segment composer installs under, and made a
    missing gate a hard failure instead of a warning

On development's current head the gate EXECUTED and reported:

  0/137 tests skipped (0.0%) across 30 spec files
    V1 spec files executing ZERO tests            : 0
    V2 skips deferring to a deploy state CI decides: 0
    V3 skips/fixmes with no reason recorded       : 0
  Every skip names a real absence and every spec file ran something.

That answers the open question from #354: tests/e2e/docs-screenshots.spec.ts
does NOT trip the zero-test rule.

So this is measured, not hoped for. launchpad passes on real data, and the
flag can only keep it that way -- which is exactly what the input's own
description asks for: flip it per app once that app is worked down.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
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