test(visual): rebaseline for the surface/table theme defaults
Picks up the AppShell and Table defaults added in "ui chnages". All 10 baselines moved, which is what a change to the shared theme should do: the page now sits on --ema-surface-page so cards read as raised rather than blending into it, and tables get the registry treatment — uppercase letterspaced headers, hairline borders, hover tint. Also fixes the skip-link test, which had been skipping in both apps rather than running. It navigated to the landing route, which mounts no app shell and so has no skip link to find — a skipped test that looks green while asserting nothing. It now runs against the gallery, which mounts the same SkipLink/MAIN_CONTENT_ID pair the real shells do; the shells themselves sit behind auth, which this suite deliberately avoids depending on. 12 passing, 0 skipped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@@ -100,29 +100,21 @@ for (const app of APPS) {
|
||||
}
|
||||
|
||||
/**
|
||||
* The skip link, on a real app shell.
|
||||
* The skip link.
|
||||
*
|
||||
* Not on the gallery route: the point of a skip link is bypassing the nav, and
|
||||
* the gallery has none. The login page is the shell-less public route both apps
|
||||
* share, so this uses the landing route instead — it carries the chrome without
|
||||
* needing a session.
|
||||
* A skip link is invisible until focused, so a broken one and a working one
|
||||
* look identical in every screenshot — only a focus test separates them.
|
||||
*
|
||||
* A skip link is invisible until focused, which means a broken one and a
|
||||
* working one look identical in every screenshot. Only a focus test separates
|
||||
* them.
|
||||
* Runs against the gallery, which mounts the same SkipLink/MAIN_CONTENT_ID
|
||||
* pair the real shells do. The shells themselves live behind auth, and the
|
||||
* public landing route carries no nav to skip past.
|
||||
*/
|
||||
test.describe('skip link', () => {
|
||||
for (const app of APPS) {
|
||||
test(`${app.name} — reveals on focus and targets main`, async ({ page }) => {
|
||||
await page.goto(`${app.url}/`, { waitUntil: 'networkidle' });
|
||||
await page.goto(`${app.url}/__gallery`, { waitUntil: 'networkidle' });
|
||||
|
||||
const link = page.locator('.ema-skip-link');
|
||||
if ((await link.count()) === 0) {
|
||||
// The public landing route does not mount the app shell in every app;
|
||||
// skipping is honest here, where asserting absence would be wrong.
|
||||
test.skip(true, 'landing route does not mount the app shell');
|
||||
return;
|
||||
}
|
||||
|
||||
// Off-screen until focused...
|
||||
await expect(link).not.toBeInViewport();
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 211 KiB |
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 210 KiB |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 231 KiB |
|
Before Width: | Height: | Size: 222 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 226 KiB After Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 215 KiB After Width: | Height: | Size: 214 KiB |