flotilla/e2e/harness/net/context.ts

26 lines
777 B
TypeScript
Raw Permalink Normal View History

import type {BrowserContext} from "@playwright/test"
// State the harness keeps per browser context, outside the browser: recorded traffic, blocked
// requests, the hosting fake's store. Reading one before the route installer that owns it has run
// is a spec calling things out of order, which the error names.
export const makeContextStore = <T>(installer: string) => {
const byContext = new WeakMap<BrowserContext, T>()
return {
set: (context: BrowserContext, value: T) => {
byContext.set(context, value)
return value
},
get: (context: BrowserContext) => {
const value = byContext.get(context)
2026-09-21 16:48:35 +00:00
if (value) {
return value
}
throw new Error(`${installer} was never called for this browser context`)
},
}
}