From c8232b019a9f0e550481c5bf020654f83c7a057e Mon Sep 17 00:00:00 2001 From: Elijah Morgan Date: Mon, 6 Jan 2025 20:57:02 -0500 Subject: [PATCH] commonize test code --- bindings/wasm/test/helpers.js | 23 +++++++++++++++ bindings/wasm/test/limbo.test.js | 44 ++++++---------------------- bindings/wasm/test/opfs.test.js | 49 ++++++++------------------------ 3 files changed, 44 insertions(+), 72 deletions(-) create mode 100644 bindings/wasm/test/helpers.js diff --git a/bindings/wasm/test/helpers.js b/bindings/wasm/test/helpers.js new file mode 100644 index 000000000..cc9de4ca2 --- /dev/null +++ b/bindings/wasm/test/helpers.js @@ -0,0 +1,23 @@ +import { createServer } from "vite"; +import { chromium } from "playwright"; + +export async function setupTestEnvironment(port) { + const server = await createServer({ + configFile: "./vite.config.js", + root: ".", + server: { port }, + }); + await server.listen(); + const browser = await chromium.launch(); + const context = await browser.newContext(); + const page = await context.newPage(); + globalThis.__page__ = page; + + return { server, browser, context, page }; +} + +export async function teardownTestEnvironment({ server, browser, context }) { + await context.close(); + await browser.close(); + await server.close(); +} diff --git a/bindings/wasm/test/limbo.test.js b/bindings/wasm/test/limbo.test.js index b368f81a2..f7f34bee8 100644 --- a/bindings/wasm/test/limbo.test.js +++ b/bindings/wasm/test/limbo.test.js @@ -1,50 +1,23 @@ -import { - afterAll, - afterEach, - beforeAll, - beforeEach, - expect, - test, -} from "vitest"; -import { chromium } from "playwright"; -import { createServer } from "vite"; +import { afterAll, beforeAll, beforeEach, expect, test } from "vitest"; +import { setupTestEnvironment, teardownTestEnvironment } from "./helpers.js"; -let browser; -let context; -let page; -let server; +let testEnv; beforeAll(async () => { - server = await createServer({ - configFile: "./vite.config.js", - root: ".", - server: { - port: 5174, - }, - }); - await server.listen(); - browser = await chromium.launch(); + testEnv = await setupTestEnvironment(5174); }); beforeEach(async () => { - context = await browser.newContext(); - page = await context.newPage(); - globalThis.__page__ = page; -}); - -afterEach(async () => { - await context.close(); + const { page } = testEnv; + await page.goto("http://localhost:5174/limbo-test.html"); }); afterAll(async () => { - await browser.close(); - await server.close(); + await teardownTestEnvironment(testEnv); }); test("basic database operations", async () => { - const page = globalThis.__page__; - await page.goto("http://localhost:5174/limbo-test.html"); - + const { page } = testEnv; const result = await page.evaluate(async () => { const worker = new Worker("./src/limbo-worker.js", { type: "module" }); @@ -96,3 +69,4 @@ test("basic database operations", async () => { expect(result.result).toHaveLength(1); expect(result.result[0]).toEqual([1, "Alice", "alice@example.org"]); }); + diff --git a/bindings/wasm/test/opfs.test.js b/bindings/wasm/test/opfs.test.js index 82f01c591..ea96add44 100644 --- a/bindings/wasm/test/opfs.test.js +++ b/bindings/wasm/test/opfs.test.js @@ -1,51 +1,25 @@ -import { - afterAll, - afterEach, - beforeAll, - beforeEach, - describe, - expect, - test, -} from "vitest"; -import { chromium } from "playwright"; -import { createServer } from "vite"; +// test/opfs.test.js +import { afterAll, beforeAll, beforeEach, expect, test } from "vitest"; +import { setupTestEnvironment, teardownTestEnvironment } from "./helpers"; -let browser; -let context; -let page; -let server; +let testEnv; beforeAll(async () => { - server = await createServer({ - configFile: "./vite.config.js", - root: ".", - server: { - port: 5173, - }, - }); - await server.listen(); - browser = await chromium.launch(); + testEnv = await setupTestEnvironment(5173); }); beforeEach(async () => { - context = await browser.newContext(); - page = await context.newPage(); - globalThis.__page__ = page; + const { page } = testEnv; await page.goto("http://localhost:5173/index.html"); await page.waitForFunction(() => window.VFSInterface !== undefined); }); -afterEach(async () => { - await context.close(); -}); - afterAll(async () => { - await browser.close(); - await server.close(); + await teardownTestEnvironment(testEnv); }); test("basic read/write functionality", async () => { - const page = globalThis.__page__; + const { page } = testEnv; const result = await page.evaluate(async () => { const vfs = new window.VFSInterface("/src/opfs-worker.js"); let fd; @@ -71,7 +45,7 @@ test("basic read/write functionality", async () => { }); test("larger data read/write", async () => { - const page = globalThis.__page__; + const { page } = testEnv; const result = await page.evaluate(async () => { const vfs = new window.VFSInterface("/src/opfs-worker.js"); let fd; @@ -98,7 +72,7 @@ test("larger data read/write", async () => { }); test("partial reads and writes", async () => { - const page = globalThis.__page__; + const { page } = testEnv; const result = await page.evaluate(async () => { const vfs = new window.VFSInterface("/src/opfs-worker.js"); let fd; @@ -137,7 +111,7 @@ test("partial reads and writes", async () => { }); test("file size operations", async () => { - const page = globalThis.__page__; + const { page } = testEnv; const result = await page.evaluate(async () => { const vfs = new window.VFSInterface("/src/opfs-worker.js"); let fd; @@ -163,3 +137,4 @@ test("file size operations", async () => { expect(Number(result.size1)).toBe(4); expect(Number(result.size2)).toBe(8); }); +