import { expect, test } from "@playwright/test"; test("M8-17 streams a 64 MiB sparse bundle with bounded paging and cancellation", async ({ page }) => { test.setTimeout(60_000); await page.goto("/"); const result = await page.evaluate(() => new Promise((resolve, reject) => { const worker = new Worker("/src/workers/nanovdb-sparse-performance-test.worker.ts", { type: "module" }); worker.onmessage = (event) => { worker.terminate(); event.data.error ? reject(new Error(event.data.error)) : resolve(event.data); }; worker.onerror = (event) => { worker.terminate(); reject(new Error(event.message)); }; worker.postMessage({}); })); console.log("nanovdb-sparse-performance", JSON.stringify({ bundleBytes: result.bundleBytes, requestedPageIds: result.requestedPageIds, loadedPageCount: result.loadedPageCount, transferredBytes: result.transferredBytes, peakRangeBytes: result.peakRangeBytes, firstPageMs: result.firstPageMs, successElapsedMs: result.successElapsedMs, cancel: result.cancel, })); const mib = 1024 * 1024; expect(result.bundleBytes).toBe(64 * mib); expect(result.chunkBytes).toBe(4 * mib); expect(result.pageBytes).toBe(256 * 1024); expect(result.requestedPageIds).toEqual([0, 16, 128, 192]); expect(result.loadedPageCount).toBe(result.requestedPageIds.length); expect(result.transferredBytes).toBe(4 * result.chunkBytes); expect(result.rangeCalls).toBe(result.requestedPageIds.length); expect(result.peakRangeBytes).toBe(result.chunkBytes); expect(result.firstPageMs).toBeLessThan(10_000); expect(result.successElapsedMs).toBeLessThan(30_000); expect(result.successCoordinatorStats).toEqual({ pendingPages: 0, subscribers: 0, pageIds: [] }); expect(result.cancel.status).toBe("CANCELLED"); expect(result.cancel.errorName).toBe("AbortError"); expect(result.cancel.consumerCalls).toBe(0); expect(result.cancel.rangeCalls).toBe(1); expect(result.cancel.abortedRequests).toBe(1); expect(result.cancel.transferredBytes).toBeGreaterThan(0); expect(result.cancel.transferredBytes).toBeLessThan(result.chunkBytes); expect(result.cancel.peakRangeBytes).toBe(result.chunkBytes); expect(result.cancel.cancelLatencyMs).toBeLessThan(2_000); expect(result.cancel.coordinatorStats).toEqual({ pendingPages: 0, subscribers: 0, pageIds: [] }); });