mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-05 00:56:23 +00:00
40 lines
1.7 KiB
JavaScript
40 lines
1.7 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import test from "node:test";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
function read(relativePath) {
|
|
return readFileSync(fileURLToPath(new URL(relativePath, import.meta.url)), "utf8");
|
|
}
|
|
|
|
test("product launch capture treats blocked output as a hard gate", () => {
|
|
const skill = read("../SKILL.md");
|
|
|
|
assert.match(skill, /hyperframes capture[^\n]+--json/);
|
|
assert.match(skill, /capture\/BLOCKED\.md[^\n]+hard stop/i);
|
|
assert.match(skill, /do not[\s\S]{0,120}synthetic[\s\S]{0,120}fallback/i);
|
|
assert.match(skill, /very little text[\s\S]{0,180}empty asset/i);
|
|
assert.match(skill, /show-it-as-is[\s\S]{0,240}provided screenshot/i);
|
|
});
|
|
|
|
test("CLI capture reference documents the two budgets and machine diagnostics", () => {
|
|
const reference = read("../../hyperframes-cli/references/init-and-scaffold.md");
|
|
|
|
assert.match(reference, /--capture-budget/);
|
|
assert.match(reference, /--skip-vision/);
|
|
assert.match(reference, /HYPERFRAMES_CAPTURE_PHASE/);
|
|
assert.match(reference, /BLOCKED\.md[^\n]+hard stop/i);
|
|
assert.match(reference, /--timeout[^\n]+navigation[^\n]+--capture-budget/i);
|
|
assert.match(reference, /fresh output directory/i);
|
|
assert.match(reference, /outer caller timeout[\s\S]{0,180}does not prove/i);
|
|
});
|
|
|
|
test("webpage motion workflow refuses blocked capture artifacts", () => {
|
|
const module = read("../../motion-graphics/categories/webpage/module.md");
|
|
|
|
assert.match(module, /BLOCKED\.md[\s\S]{0,120}stop/i);
|
|
assert.match(module, /provided[\s\S]{0,120}screenshot[\s\S]{0,120}explicit/i);
|
|
assert.match(module, /do not[^\n]+blocked[^\n]+capture/i);
|
|
assert.match(module, /asset-free fallback/i);
|
|
});
|