mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-15 18:26:05 +00:00
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
// Qa Lab tests cover self check plugin behavior.
|
|
import path from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import type { QaSelfCheckResult } from "./self-check.js";
|
|
import { isQaSelfCheckSuccessful, resolveQaSelfCheckOutputPath } from "./self-check.js";
|
|
|
|
function makeSelfCheckResult(params: {
|
|
scenarioStatus: "pass" | "fail";
|
|
checkStatuses: Array<"pass" | "fail">;
|
|
}): QaSelfCheckResult {
|
|
return {
|
|
outputPath: "/tmp/qa-self-check.md",
|
|
report: "",
|
|
checks: params.checkStatuses.map((status, index) => ({
|
|
name: `check ${String(index + 1)}`,
|
|
status,
|
|
})),
|
|
scenarioResult: {
|
|
name: "QA self-check scenario",
|
|
status: params.scenarioStatus,
|
|
steps: [],
|
|
},
|
|
};
|
|
}
|
|
|
|
describe("isQaSelfCheckSuccessful", () => {
|
|
it("requires the scenario and every check to pass", () => {
|
|
expect(
|
|
isQaSelfCheckSuccessful(
|
|
makeSelfCheckResult({ scenarioStatus: "pass", checkStatuses: ["pass"] }),
|
|
),
|
|
).toBe(true);
|
|
expect(
|
|
isQaSelfCheckSuccessful(
|
|
makeSelfCheckResult({ scenarioStatus: "fail", checkStatuses: ["pass"] }),
|
|
),
|
|
).toBe(false);
|
|
expect(
|
|
isQaSelfCheckSuccessful(
|
|
makeSelfCheckResult({ scenarioStatus: "pass", checkStatuses: ["pass", "fail"] }),
|
|
),
|
|
).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("resolveQaSelfCheckOutputPath", () => {
|
|
it("keeps explicit output paths untouched", () => {
|
|
expect(
|
|
resolveQaSelfCheckOutputPath({
|
|
repoRoot: "/tmp/openclaw-repo",
|
|
outputPath: "/tmp/custom/self-check.md",
|
|
}),
|
|
).toBe("/tmp/custom/self-check.md");
|
|
});
|
|
|
|
it("anchors default self-check reports under unique files in the provided repo root", () => {
|
|
const repoRoot = path.resolve("/tmp/openclaw-repo");
|
|
const firstPath = resolveQaSelfCheckOutputPath({ repoRoot });
|
|
const secondPath = resolveQaSelfCheckOutputPath({ repoRoot });
|
|
|
|
expect(path.dirname(firstPath)).toBe(path.join(repoRoot, ".artifacts", "qa-e2e"));
|
|
expect(path.basename(firstPath)).toMatch(/^self-check-[a-z0-9]+-[a-f0-9]{8}\.md$/u);
|
|
expect(secondPath).not.toBe(firstPath);
|
|
});
|
|
});
|