diff --git a/scripts/lib/tech-log-serving-contract.ts b/scripts/lib/tech-log-serving-contract.ts index aa93419..63ad5d2 100644 --- a/scripts/lib/tech-log-serving-contract.ts +++ b/scripts/lib/tech-log-serving-contract.ts @@ -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)$", diff --git a/tests/support/browser/tech-log-fixtures.ts b/tests/support/browser/tech-log-fixtures.ts index 45fc049..4deab5d 100644 --- a/tests/support/browser/tech-log-fixtures.ts +++ b/tests/support/browser/tech-log-fixtures.ts @@ -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"], diff --git a/tests/unit/tech-log-serving-contract.test.ts b/tests/unit/tech-log-serving-contract.test.ts index 867c88f..2387067 100644 --- a/tests/unit/tech-log-serving-contract.test.ts +++ b/tests/unit/tech-log-serving-contract.test.ts @@ -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)$", diff --git a/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-asset-library-1440-chromium-linux.png b/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-asset-library-1440-chromium-linux.png new file mode 100644 index 0000000..a9e5965 Binary files /dev/null and b/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-asset-library-1440-chromium-linux.png differ diff --git a/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-assets-1440-chromium-linux.png b/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-assets-1440-chromium-linux.png new file mode 100644 index 0000000..a9e5965 Binary files /dev/null and b/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-assets-1440-chromium-linux.png differ diff --git a/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-assets-360-chromium-linux.png b/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-assets-360-chromium-linux.png new file mode 100644 index 0000000..1077a8d Binary files /dev/null and b/tests/visual/__snapshots__/tech-log.visual.spec.ts-snapshots/tech-log-studio-assets-360-chromium-linux.png differ