mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-01 07:24:19 +01:00
commonize test code
This commit is contained in:
23
bindings/wasm/test/helpers.js
Normal file
23
bindings/wasm/test/helpers.js
Normal 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();
|
||||
}
|
||||
@@ -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"]);
|
||||
});
|
||||
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user