UNPKG

@webcontainer/test

Version:

Utilities for testing applications in WebContainers

56 lines (54 loc) 1.58 kB
// src/commands/index.ts import { resolve } from "node:path"; import { snapshot } from "@webcontainer/snapshot"; var readDirectory = async (context, directory) => { const root = context.project.config.root; const resolved = resolve(root, directory); if (!resolved.startsWith(root)) { throw new Error( `[vitest:webcontainers] Cannot read files outside project root: ${JSON.stringify( { directory, resolved }, null, 2 )}` ); } const tree = await snapshot(directory); return tree.toString("base64"); }; // src/plugin.ts var COEP = "Cross-Origin-Embedder-Policy"; var COOP = "Cross-Origin-Opener-Policy"; function vitestWebContainers() { return { name: "vitest:webcontainers", config(config, env) { if (env.mode !== "test") { return; } config.test ||= {}; config.test.browser ||= {}; config.test.browser.commands ||= {}; config.test.browser.commands.readDirectory = readDirectory; config.server ||= {}; config.server.headers ||= {}; const headers = config.server.headers; if (headers[COEP] && headers[COEP] !== "require-corp") { console.warn( `[vitest:webcontainers] Overriding ${COEP} header during test run` ); } if (headers[COOP] && headers[COOP] !== "same-origin") { console.warn( `[vitest:webcontainers] Overriding ${COOP} header during test run` ); } headers[COEP] = "require-corp"; headers[COOP] = "same-origin"; } }; } export { vitestWebContainers };