test: dedupe and optimize test suites

This commit is contained in:
Peter Steinberger
2026-02-19 15:18:50 +00:00
parent b0e55283d5
commit a1cb700a05
80 changed files with 2627 additions and 2962 deletions

View File

@@ -1,4 +1,4 @@
import { describe, expect, it, vi } from "vitest";
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
let page: { evaluate: ReturnType<typeof vi.fn> } | null = null;
let locator: { evaluate: ReturnType<typeof vi.fn> } | null = null;
@@ -29,64 +29,61 @@ vi.mock("./pw-session.js", () => {
};
});
describe("evaluateViaPlaywright (abort)", () => {
it("rejects when aborted after page.evaluate starts", async () => {
vi.clearAllMocks();
const ctrl = new AbortController();
let evaluateViaPlaywright: typeof import("./pw-tools-core.interactions.js").evaluateViaPlaywright;
let evalCalled!: () => void;
const evalCalledPromise = new Promise<void>((resolve) => {
evalCalled = resolve;
});
function createPendingEval() {
let evalCalled!: () => void;
const evalCalledPromise = new Promise<void>((resolve) => {
evalCalled = resolve;
});
return {
evalCalledPromise,
resolveEvalCalled: evalCalled,
};
}
describe("evaluateViaPlaywright (abort)", () => {
beforeAll(async () => {
({ evaluateViaPlaywright } = await import("./pw-tools-core.interactions.js"));
});
beforeEach(() => {
vi.clearAllMocks();
});
it.each([
{ label: "page.evaluate", fn: "() => 1" },
{ label: "locator.evaluate", fn: "(el) => el.textContent", ref: "e1" },
])("rejects when aborted after $label starts", async ({ fn, ref }) => {
const ctrl = new AbortController();
const pending = createPendingEval();
const pendingPromise = new Promise(() => {});
page = {
evaluate: vi.fn(() => {
evalCalled();
return new Promise(() => {});
if (!ref) {
pending.resolveEvalCalled();
}
return pendingPromise;
}),
};
locator = { evaluate: vi.fn() };
const { evaluateViaPlaywright } = await import("./pw-tools-core.interactions.js");
const p = evaluateViaPlaywright({
cdpUrl: "http://127.0.0.1:9222",
fn: "() => 1",
signal: ctrl.signal,
});
await evalCalledPromise;
ctrl.abort(new Error("aborted by test"));
await expect(p).rejects.toThrow("aborted by test");
expect(forceDisconnectPlaywrightForTarget).toHaveBeenCalled();
});
it("rejects when aborted after locator.evaluate starts", async () => {
vi.clearAllMocks();
const ctrl = new AbortController();
let evalCalled!: () => void;
const evalCalledPromise = new Promise<void>((resolve) => {
evalCalled = resolve;
});
page = { evaluate: vi.fn() };
locator = {
evaluate: vi.fn(() => {
evalCalled();
return new Promise(() => {});
if (ref) {
pending.resolveEvalCalled();
}
return pendingPromise;
}),
};
const { evaluateViaPlaywright } = await import("./pw-tools-core.interactions.js");
const p = evaluateViaPlaywright({
cdpUrl: "http://127.0.0.1:9222",
fn: "(el) => el.textContent",
ref: "e1",
fn,
ref,
signal: ctrl.signal,
});
await evalCalledPromise;
await pending.evalCalledPromise;
ctrl.abort(new Error("aborted by test"));
await expect(p).rejects.toThrow("aborted by test");