Skip to content

Signed-Zoomify redirect coverage and redirect-vocabulary cleanup - #1112

Open
lovasoa wants to merge 2 commits into
masterfrom
test/signed-zoomify-redirects
Open

lovasoa wants to merge 2 commits into
masterfrom
test/signed-zoomify-redirects

Conversation

@lovasoa

@lovasoa lovasoa commented Sep 23, 2026

Copy link
Copy Markdown
Owner

Signed-Zoomify sites (Museum Ludwig / Kulturelles Erbe Koeln) answer the Zoomify metadata and every tile request with a 307 to a per-request signed CDN URL. Core support already landed (14e7a98, 398d1ff); this closes the remaining cleanup and coverage gaps.

refactor(protocol): drop the never-produced redirect-unavailable reason

Extension fetches follow redirects in the browser, so no layer reports this policy reason anymore. Removes the dead BlockedReason variant, its failure.ts/fetch.ts mapping branches, and regenerates packages/wasm-bindings/src/generated.d.ts via cargo xtask protocol generate. TRANSPORT_BAD_REDIRECT stays: the native transport still reports it for malformed redirect targets.

test(extension): reproduce the signed-proxy redirect shape end to end

The extension/tile-redirect scenario now mirrors the real flow: the Zoomify metadata and every tile 307 to a signed URL (previously only tiles redirected, behind a plain DZI). This pins "redirected metadata keeps the requested tile base" through a real browser fetch stack (packaged extension, headless Chromium, pixel-exact assembly) instead of only core unit tests. pyramid.dzi is replaced by ImageProperties.xml, tile bytes are unchanged, and the acceptance matrix maps the behavior to its lanes.

Scope notes

  • No mock-level assertions of fetch options; a test that restates credentials/redirect values is a change detector, not behavior coverage.
  • The website shares the same fetch semantics (credential omission, browser-native redirect following), and its metadata proxy intentionally refuses signed targets, so CORS-less sites stay extension-only by design.
  • No live target for the museum: live checks are opt-in and advisory, and the deterministic corpus now models the exact shape.

Validation

  • cargo xtask ci local and cargo xtask test all green (headless 6/6 including the retargeted signed case)
  • cargo xtask check, cargo xtask fixtures verify (439 files / 58 scenarios)
  • cargo xtask test core, cargo xtask test protocol, cargo xtask test extension

Extension fetches follow redirects in the browser, so no layer reports
this policy reason anymore. Remove the dead BlockedReason variant and
its mapping branches; TRANSPORT_BAD_REDIRECT stays for malformed
redirect targets.
The tile-redirect scenario now mirrors the signed-Zoomify flow: the
Zoomify metadata and every tile 307 to a signed URL. Tile URLs must
keep the requested base although the metadata redirected, so the
headless case pins that rule through a real browser fetch stack, and
the acceptance matrix maps it to its lanes.

This branch was successfully deployed

1 active deployment
preview — 805e2d5b Deployed Sep 23, 2026 by lovasoa via deploy #596
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant