commonize test code

This commit is contained in:
Elijah Morgan
2025-01-06 20:57:02 -05:00
parent b9c94ba53c
commit c8232b019a
3 changed files with 44 additions and 72 deletions

View File

@@ -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();
}

View File

@@ -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"]);
});

View File

@@ -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);
});