Files
suaveplan/packages/foundation/data/packer-browser/tests/e2e/range.spec.ts
2026-05-27 23:47:53 +01:00

37 lines
1.4 KiB
TypeScript

import { expect, test } from "@playwright/test";
/**
* Cluster C Playwright sweep — range-request 206 path. The SW must
* intercept a packed URL whose cached body exceeds the configured
* `rangeThreshold` and serve a `206 Partial Content` response when the
* page issues a fetch carrying a `Range` header. The spec is harness-
* agnostic and assumes the page exposes a packed asset at
* `/sample-large.packed`.
*/
test.describe("packed-resource SW range request (cluster C)", () => {
test("serves 206 Partial Content for a ranged packed request", async ({
page,
}) => {
await page.goto("/");
await page.evaluate(async () => {
await navigator.serviceWorker.register("/service-worker.js");
await navigator.serviceWorker.ready;
});
const response = await page.evaluate(async () => {
const r = await fetch("/sample-large.packed", {
headers: { Range: "bytes=0-9" },
});
return {
status: r.status,
contentRange: r.headers.get("Content-Range"),
acceptRanges: r.headers.get("Accept-Ranges"),
contentLength: r.headers.get("Content-Length"),
};
});
expect(response.status).toBe(206);
expect(response.contentRange).toMatch(/^bytes 0-9\/\d+$/);
expect(response.acceptRanges).toBe("bytes");
expect(response.contentLength).toBe("10");
});
});