Repository navigation
test(e2e): add Playwright smoke suite and accessible names for icon-only controls - #5872
Merged
Merged
Conversation
Several interactive elements had no accessible name, so screen readers announced them as plain "button" and tests had to locate them via DOM structure. - nav dropdown: optional `buttonLabel` prop; used for the chevron of external views with a link and for the user menu - instance sidebar: label the landmark, label group toggles with "Expand/Collapse <group>" and expose `aria-expanded` - wallboard: hexagons get role="button", a name and keyboard support - iframes: meaningful titles instead of none / "Google"
Unit tests cover components and server logic in isolation, but several releases shipped a completely broken UI (#4646, #4649, #4831, #5438, #5724). These tests start the packaged servlet sample and drive it in a browser. - two scenarios: insecure, and secure with form login + context path - shell, every instance view, login/logout and UI extensions - fail on uncaught exceptions, console errors and missing assets - session stored once per scenario, external requests stubbed - separate GitHub workflow, not part of the Maven reactor
SteKoe
marked this pull request as ready for review
November 6, 2026 13:39
SteKoe
enabled auto-merge (squash)
November 6, 2026 13:43
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.
Why
An analysis of the last three years of issues showed a recurring class of regressions that our unit tests can't catch: the assembled application breaks after a release. The UI doesn't load, the sidebar is empty, login/logout fails with a context path, or extension views lose their route. Examples: #4646, #4649, #4831, #4986, #5438, #3828/#3829, #5724, #4259, #4272.
Vitest tests components against mocked responses and JUnit tests the server. Nothing checks that server-rendered HTML, the built bundle, Spring Security, the context path and extensions work together. This PR adds a small, targeted Playwright smoke suite for exactly that. It is not meant to replace unit tests; business logic stays in Vitest/JUnit.
What
1.
fix(ui): accessible names for icon-only controlsSeveral controls had no accessible name. Screen readers announced them as plain "button", and tests had to find them through the DOM structure (
xpath=following-sibling::button,:scope > a > button,.hex).buttonbuttonLabelprop onsba-nav-dropdown)button<aside>buttonaria-expanded<g>with no rolerole="button", name "{app} ({status})", focusable, Enter/Spacetitle="Google"New strings in
enandde; other locales fall back to English. Unit tests added for the user menu name and the group toggles.2.
test(e2e): Playwright smoke suite (spring-boot-admin-e2e/)Starts the packaged servlet sample incl. custom UI in two scenarios:
insecuresecure: form login + context path/admin65 tests, about 50 s:
shell.spec.tsinstance-views.spec.tssecurity.spec.tsextensions.spec.tsEvery UI test fails on uncaught exceptions,
console.errorand missing scripts/stylesheets.Follows Playwright best practices:
storageState)Separate workflow
.github/workflows/e2e.yml. Not part of the Maven reactor, so./mvnw installdoes not need browsers.Found while writing the tests
hex-mesh.vuerenders<path d="M NaN,NaN …">on first render (probablysideLength = 0before the first layout pass). Currently ignored intests/fixtures.ts→ follow-up issue./customSubin the custom-ui sample shows the parent view's content instead of "Hello from the submenu item". The test pins the current behaviour; is this intended?Open questions for the team
sba-nav-dropdownhas a new optional propbuttonLabel. Worth a changelog line.How to test
Locally: full Vitest suite green (608 tests), lint without new warnings, E2E suite green incl.
--repeat-each=3(193 passed).