diff --git a/examples/web-worker/e2e/basic.test.ts b/examples/web-worker/e2e/basic.test.ts index 09221dc..e99494f 100644 --- a/examples/web-worker/e2e/basic.test.ts +++ b/examples/web-worker/e2e/basic.test.ts @@ -1,4 +1,5 @@ import { expect, test } from "@playwright/test"; +import { createEditor } from "./helper"; test("basic", async ({ page }) => { await page.goto("/"); @@ -23,3 +24,11 @@ test("worker in worker", async ({ page }) => { "Rendered in web worker in web worker", ); }); + +test("reload worker change @dev", async ({ page }) => { + await page.goto("/"); + await expect(page.getByTestId("worker-message")).toContainText("dep-ok"); + using file = createEditor("./src/worker/dep.tsx"); + file.edit((s) => s.replace(`"dep-ok"`, `"dep-edit-ok"`)); + await expect(page.getByTestId("worker-message")).toContainText("dep-edit-ok"); +}); diff --git a/examples/web-worker/e2e/helper.ts b/examples/web-worker/e2e/helper.ts new file mode 100644 index 0000000..e804b90 --- /dev/null +++ b/examples/web-worker/e2e/helper.ts @@ -0,0 +1,15 @@ +import fs from "node:fs"; + +export function createEditor(filepath: string) { + let init = fs.readFileSync(filepath, "utf-8"); + let data = init; + return { + edit(editFn: (data: string) => string) { + data = editFn(data); + fs.writeFileSync(filepath, data); + }, + [Symbol.dispose]() { + fs.writeFileSync(filepath, init); + }, + }; +} diff --git a/examples/web-worker/playwright.config.ts b/examples/web-worker/playwright.config.ts index 51ebbc7..056e6d4 100644 --- a/examples/web-worker/playwright.config.ts +++ b/examples/web-worker/playwright.config.ts @@ -1,7 +1,8 @@ import { defineConfig, devices } from "@playwright/test"; const port = Number(process.env["E2E_PORT"] || 6174); -const command = process.env["E2E_PREVIEW"] +const isPreview = Boolean(process.env["E2E_PREVIEW"]); +const command = isPreview ? `pnpm preview --port ${port} --strict-port` : `pnpm dev --port ${port} --strict-port`; @@ -20,6 +21,7 @@ export default defineConfig({ command, port, }, + grepInvert: isPreview ? /@dev/ : /@build/, forbidOnly: !!process.env["CI"], retries: process.env["CI"] ? 2 : 0, reporter: "list",