Skip to content

test(e2e): record why version-rollback cannot be driven — the sidebar, not the contract - #91

Merged
rubenvdlinde merged 1 commit into
developmentfrom
on8080
Aug 2, 2026
Merged

test(e2e): record why version-rollback cannot be driven — the sidebar, not the contract#91
rubenvdlinde merged 1 commit into
developmentfrom
on8080

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Ran the rewritten version-rollback spec against the shared dev instance (:8080). It never reached its assertions — and the reason is not the rollback contract.

What blocks it

aside.app-sidebar                       width 0   (closed)
section.app-sidebar__tab[role=tabpanel] display:none
button[aria-label="Open sidebar"]       present AND visible
  -> clicking it TIMES OUT on actionability, at 1280x720 AND at 1920x1080

The sidebar will not open, so every tab-scoped assertion is unreachable — even though the tab's content is mounted underneath it. That's a UI defect to chase on its own, not something a selector change fixes.

The product fix underneath is confirmed

?tab=history deep-links the tab and .version-history__row count is 3, on both instances, where the panel previously rendered empty for every app. The data is right; only the chrome is unreachable.

Three dead ends, recorded so the next attempt skips them

  • getByText('Version history') resolves the tab button's label span, which is display:none once the tab strip collapses to icons. Waiting on its visibility waits forever — 18 resolutions, all "hidden". Five nodes carry that exact text; the deepest is the panel's own <h3>.
  • getByRole('tab', …) finds nothing — these are not ARIA tabs.
  • [aria-label*="sidebar" i] matches "Close sidebar" first; the control is labelled exactly "Open sidebar".

And the one route that works: /applications/{uuid}?tab=history.

Also measured, not guessed

  • A 150s budget for this describe, derived from GET /api/applications taking ~6.9s on the shared box vs ~0.3s on a disposable one (28 apps, 200+ schemas).
  • The sidebar's open/closed state is per-user UI state and differs between instances — so a fixed "open it first" or "click it directly" step is wrong either way.

Still skipped, deliberately

Its assertions remain unexecuted. Shipping an unexecuted spec as coverage is the exact failure mode this file already documents three times over.

🤖 Generated with Claude Code

…, not the contract

Ran it against the shared dev instance. It never reached its assertions, and the
reason is not the rollback contract:

    aside.app-sidebar                       width 0   (closed)
    section.app-sidebar__tab[role=tabpanel] display:none
    button[aria-label="Open sidebar"]       present AND visible
      -> clicking it TIMES OUT on actionability, at 1280x720 AND at 1920x1080

The sidebar will not open, so every tab-scoped assertion is unreachable — even
though the tab's content is mounted underneath it. That is a UI defect to chase
on its own, not something a selector change fixes.

The product fix this spec depends on IS confirmed on both instances:
`?tab=history` deep-links the tab and `.version-history__row` count is 3, where
the panel previously rendered empty for every app. The data is right; only the
chrome is unreachable.

Three dead ends recorded so the next attempt does not repeat them:
  - getByText('Version history') resolves the tab button's LABEL SPAN, which is
    display:none once the tab strip collapses to icons — waiting on its
    visibility waits forever (18 resolutions, all "hidden"). FIVE nodes carry
    that exact text; the deepest is the panel's own <h3>.
  - getByRole('tab', …) finds nothing — these are not ARIA tabs.
  - [aria-label*="sidebar" i] matches "Close sidebar" FIRST; the control is
    labelled exactly "Open sidebar".

And the one route that does work: /applications/{uuid}?tab=history mounts the
tab content directly.

Also carried over from the same run, both measured rather than guessed:
  - a 150s budget for this describe, from GET /api/applications taking ~6.9s on
    the shared box against ~0.3s on a disposable one (28 apps, 200+ schemas);
  - the sidebar's open/closed state is per-user UI state and differs between
    instances, so a fixed "open it first" or "click it directly" step is wrong
    either way.

Stays skipped: its assertions remain unexecuted, and shipping an unexecuted spec
as coverage is the failure mode this file already documents three times.
@rubenvdlinde
rubenvdlinde merged commit 5dbae13 into development Aug 2, 2026
14 of 18 checks passed
@rubenvdlinde
rubenvdlinde deleted the on8080 branch August 2, 2026 11:34
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ 71b9de6

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-08-02 11:35 UTC

Download the full PDF report from the workflow artifacts.

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.

2 participants