You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.6 KiB

import { readFileSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "vitest";
const SCRIPT_PATH = join(process.cwd(), "scripts", "record-priority1.sh");
const TS_SCRIPT_PATH = join(process.cwd(), "scripts", "record-priority1.ts");
const FORBIDDEN_PATTERNS = [
/dashboard\.priority1\.com/i,
/api\.priority1\.com/i,
];
function isForbiddenPriority1QuoteUrl(url: string): boolean {
return FORBIDDEN_PATTERNS.some((pattern) => pattern.test(url));
}
describe("record-priority1.sh", () => {
const content = readFileSync(SCRIPT_PATH, "utf8");
it("存在且包含 headed 与 codegen 启动", () => {
expect(content).toContain("RPA_HEADLESS=false");
expect(content).toContain("playwright");
expect(content).toContain("codegen");
});
it("禁止 Cabo 后台与 API 门户 URL", () => {
expect(content).toContain("dashboard.priority1.com");
expect(content).toContain("api.priority1.com");
expect(content).toContain("check_url");
});
it("产出录制脚本与 storageState 路径", () => {
expect(content).toContain(".rpa/recordings");
expect(content).toContain("priority1-storage.json");
expect(content).toContain("--save-storage");
});
});
describe("record-priority1.ts (Windows 跨平台)", () => {
const content = readFileSync(TS_SCRIPT_PATH, "utf8");
it("存在且包含 headed codegen 与入口校验", () => {
expect(content).toContain('RPA_HEADLESS: "false"');
expect(content).toContain("playwright");
expect(content).toContain("codegen");
expect(content).toContain("isForbiddenPriority1QuoteUrl");
});
it("产出录制脚本与 storageState 路径", () => {
expect(content).toContain(".rpa/recordings");
expect(content).toContain("priority1-storage.json");
expect(content).toContain("--save-storage");
});
it("默认打开公开询价页", () => {
expect(content).toContain(
"https://www.priority1.com/instant-freight-quotes/",
);
});
});
describe("isForbiddenPriority1QuoteUrl", () => {
it("拒绝 Cabo 后台与 API 门户", () => {
expect(
isForbiddenPriority1QuoteUrl(
"https://dashboard.priority1.com/account/login",
),
).toBe(true);
expect(isForbiddenPriority1QuoteUrl("https://api.priority1.com/docs")).toBe(
true,
);
});
it("允许公开询价页与首页", () => {
expect(
isForbiddenPriority1QuoteUrl(
"https://www.priority1.com/instant-freight-quotes/",
),
).toBe(false);
expect(isForbiddenPriority1QuoteUrl("https://www.priority1.com/")).toBe(
false,
);
});
});