test: give the Asset Library a visual golden, and a URL that resolves
`/studio/assets` was the one route in the TechLog route contract missing
from `TECH_LOG_CANONICAL_ROUTES` and `TECH_LOG_STUDIO_STATE_PATHS`, so it
had no golden, no responsive-overflow check, and no Axe scan. That gap was
not hypothetical: the responsive overflow just fixed in the Asset search row
shipped in two places and was only caught in the Picker, which has a golden;
the Library's identical copy would have gone unseen.
Verifying the render before capturing anything turned up a second defect.
`studioSpaPathPatterns` in the production serving contract never listed
`/studio/assets`, so a hard navigation or reload of that URL was answered
with the in-shell Studio 404 -- the screen was reachable only by client-side
navigation from another Studio page. A golden taken then would have frozen a
404. With the pattern added, the route serves 200 text/html like its
siblings, and the page renders correctly at both breakpoints:
scrollWidth == clientWidth == viewport at 360 and 1440, `main` and the `h1`
visible, the search label/input/button all inside the 360px viewport, and no
critical or serious Axe violations in chromium.
Three new goldens, no existing golden regenerated:
tech-log-studio-assets-{360,1440} from the canonical route list and
tech-log-studio-asset-library-1440 from the Studio state list, matching how
every other Studio route appears in both. `pnpm test:visual` is 133 passed,
up from 130.
The demo profile seeds no assets, so the golden captures the empty state --
which still covers the header, heading, search row and status region, the
surface the overflow regression lived on.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b2f577ef49
commit
cf45bcc7dc
@@ -33,6 +33,11 @@ const staticPublicPaths = Object.freeze([
|
||||
|
||||
const studioSpaPathPatterns = Object.freeze([
|
||||
"^/studio$",
|
||||
// The Asset Library is a first-class Studio route (TECH_LOG_STUDIO_ASSETS in
|
||||
// the route contract) but was never listed here, so a hard navigation or a
|
||||
// reload of /studio/assets was served the in-shell Studio 404 -- the screen
|
||||
// was only reachable by client-side navigation from another Studio page.
|
||||
"^/studio/assets$",
|
||||
"^/studio/documents$",
|
||||
"^/studio/documents/new$",
|
||||
"^/studio/documents/[^/]+/(edit|validation|preview|publish)$",
|
||||
|
||||
@@ -28,6 +28,7 @@ export const TECH_LOG_CANONICAL_ROUTES = [
|
||||
{ routeId: "TECH_LOG_STUDIO_DOCUMENT_PUBLISH", path: "/studio/documents/11111111-1111-4111-8111-111111111113/publish", layout: "STUDIO" },
|
||||
{ routeId: "TECH_LOG_STUDIO_PUBLICATIONS", path: "/studio/publications", layout: "STUDIO" },
|
||||
{ routeId: "TECH_LOG_STUDIO_PUBLICATION_PREVIEW", path: "/studio/publications/66666666-6666-4666-8666-666666666661/preview", layout: "STUDIO" },
|
||||
{ routeId: "TECH_LOG_STUDIO_ASSETS", path: "/studio/assets", layout: "STUDIO" },
|
||||
{ routeId: "TECH_LOG_STUDIO_NOT_FOUND", path: "/studio/unknown-screen", layout: "STUDIO" },
|
||||
{ routeId: "NOT_FOUND", path: "/unknown-public-screen", layout: "PUBLIC" },
|
||||
] as const;
|
||||
@@ -82,6 +83,7 @@ export const TECH_LOG_STUDIO_STATE_PATHS = [
|
||||
["publish-ready", "/studio/documents/11111111-1111-4111-8111-111111111113/publish"],
|
||||
["publish-blocked", "/studio/documents/11111111-1111-4111-8111-111111111114/publish"],
|
||||
["publications", "/studio/publications"],
|
||||
["asset-library", "/studio/assets"],
|
||||
["publication-snapshot", "/studio/publications/66666666-6666-4666-8666-666666666661/preview"],
|
||||
["missing-document", "/studio/documents/99999999-9999-4999-8999-999999999999/edit"],
|
||||
["missing-publication", "/studio/publications/99999999-9999-4999-8999-999999999999/preview"],
|
||||
|
||||
@@ -47,6 +47,7 @@ describe("TechLog production serving contract", () => {
|
||||
expect(contract.studioPathPrefix).toBe("/studio");
|
||||
expect(contract.studioSpaPathPatterns).toEqual([
|
||||
"^/studio$",
|
||||
"^/studio/assets$",
|
||||
"^/studio/documents$",
|
||||
"^/studio/documents/new$",
|
||||
"^/studio/documents/[^/]+/(edit|validation|preview|publish)$",
|
||||
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Reference in New Issue
Block a user