Files
harness-tools/extensions/pi-workflow/run-label.test.ts
T

73 lines
2.1 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import { deriveRunLabel, deriveRunLabels } from "./run-label.ts";
test("run labels prefer feature names and normalize request fallbacks", () => {
assert.equal(
deriveRunLabel({
runId: "12345678-aaaa",
featureName: "search-page",
request: "Ignored request",
}),
"search-page",
);
assert.equal(
deriveRunLabel({
runId: "12345678-bbbb",
request: " Audit\n\tcache behavior ",
}),
"Audit cache behavior",
);
assert.equal(
deriveRunLabel({ runId: "12345678-cccc", request: "x".repeat(48) }),
"x".repeat(48),
);
});
test("request labels truncate at whole words and hard-cut overlong words", () => {
assert.equal(
deriveRunLabel({
runId: "12345678-aaaa",
request: "Build a searchable dashboard that clearly identifies every active workflow run",
}),
"Build a searchable dashboard that clearly…",
);
assert.equal(
deriveRunLabel({
runId: "12345678-bbbb",
request: `${"one ".repeat(11)}two continued`,
}),
`${"one ".repeat(11)}two…`,
);
assert.equal(
deriveRunLabel({ runId: "12345678-cccc", request: "x".repeat(60) }),
`${"x".repeat(47)}…`,
);
});
test("run labels fall back to the canonical ID when requests are missing", () => {
assert.equal(deriveRunLabel({ runId: "12345678-aaaa" }), "12345678-aaaa");
assert.equal(
deriveRunLabel({ runId: "12345678-bbbb", request: "" }),
"12345678-bbbb",
);
});
test("run labels disambiguate collisions with extendable ID prefixes", () => {
assert.deepEqual(
deriveRunLabels([
{ runId: "12345678-aaaa", featureName: "search-page" },
{ runId: "12345678-bbbb", featureName: "search-page" },
{ runId: "87654321-cccc", featureName: "other" },
]),
["search-page · 12345678-a", "search-page · 12345678-b", "other"],
);
assert.deepEqual(
deriveRunLabels([
{ runId: "aaaaaaaa-1111", request: "Audit cache" },
{ runId: "bbbbbbbb-2222", request: "Audit cache" },
]),
["Audit cache · aaaaaaaa", "Audit cache · bbbbbbbb"],
);
});