test(e2e): record why version-rollback cannot be driven — the sidebar, not the contract - #91
Merged
Conversation
…, 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.
Contributor
Quality Report — ConductionNL/openbuild @
|
| 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ran the rewritten
version-rollbackspec against the shared dev instance (:8080). It never reached its assertions — and the reason is not the rollback contract.What blocks it
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=historydeep-links the tab and.version-history__rowcount 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 isdisplay:noneonce 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
GET /api/applicationstaking ~6.9s on the shared box vs ~0.3s on a disposable one (28 apps, 200+ schemas).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