- 集成 tauri-plugin-opener:Cargo/lib.rs/capabilities/npm 四处接线,新增 src/openExternal.ts(桌面走 opener,浏览器回退 window.open,相对路径绝对化) - 关于页 4 个链接、活动栏官网菜单、代理错误横幅 2 处健康检查链接全部改走 openExternal,桌面端可正常跳转 - 设置→外观 主题顺序调整为 深色/浅色/跟随系统 - release 二进制重编并验证(浏览器实测关于页链接可开文档页) - 附带工作区中未提交的扁平化重构现状(另一会话进行中) - homepage 落地页与文档终检通过(8787 / 与 /docs 双 200)
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { executeOnce, useTestExecution } from "./execution";
|
|
|
|
describe("shared test execution", () => {
|
|
it("shares a pending run across entry points and releases it after completion", async () => {
|
|
let resolve!: (value: string) => void;
|
|
const task = vi.fn(() => new Promise<string>((r) => { resolve = r; }));
|
|
const first = executeOnce("case-1", task);
|
|
const second = executeOnce("case-1", task);
|
|
expect(first).toBe(second);
|
|
expect(useTestExecution.getState().running.has("case-1")).toBe(true);
|
|
await Promise.resolve();
|
|
expect(task).toHaveBeenCalledTimes(1);
|
|
resolve("report");
|
|
await expect(first).resolves.toBe("report");
|
|
expect(useTestExecution.getState().running.has("case-1")).toBe(false);
|
|
await expect(executeOnce("case-1", async () => "new report")).resolves.toBe("new report");
|
|
});
|
|
|
|
it("clears failed runs and allows retry without clearing other active cases", async () => {
|
|
let resolve!: () => void;
|
|
const other = executeOnce("other", () => new Promise<void>((r) => { resolve = r; }));
|
|
await expect(executeOnce("failed", () => { throw new Error("transport unavailable"); }))
|
|
.rejects.toThrow("transport unavailable");
|
|
expect([...useTestExecution.getState().running]).toEqual(["other"]);
|
|
await expect(executeOnce("failed", async () => "retry")).resolves.toBe("retry");
|
|
resolve();
|
|
await other;
|
|
expect(useTestExecution.getState().running.size).toBe(0);
|
|
});
|
|
});
|