mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-10-30 17:27:09 +00:00
Ctrl+C during a render left its whole work dir of captured frames (and a staging dir) in the renders folder. Puppeteer's default SIGINT handler kills Chrome and exits the process before the render's own cancel path can remove them. The engine keeps that default unless the host owns Ctrl+C; the CLI's render cancellation scope claims it while a render runs, so the render aborts and cleans up after itself. A render killed outright (SIGKILL, crash) cannot clean up, so each work dir and staging dir now records its owner process (pid, hostname, boot, and on Linux the pid namespace), and the next render into the same folder removes the ones whose owner has exited. Cancelling a render while its browsers start no longer leaves anything running that kept a batch render alive after Ctrl+C: the BeginFrame warm-up loop, the probe browser and file server, or a capture browser whose launch finished after the cancel (now closed before the worker settles, since Puppeteer's exit hook skips every other live browser).
76 lines
4.0 KiB
JSON
76 lines
4.0 KiB
JSON
{
|
|
"guards": {
|
|
"scripts/check-media-use-copy-parity.test.mjs": [
|
|
"skills/media-use/scripts/lib/**",
|
|
"packages/cli/src/media-use/lib/**",
|
|
"scripts/generate-skill-module-copies.mjs",
|
|
"skills/hyperframes/scripts/lib/frame-packets-core.mjs",
|
|
"skills/media-use/audio/scripts/lib/bgm-volume.mjs"
|
|
],
|
|
"scripts/check-test-reachability.test.mjs": [
|
|
".github/workflows/ci.yml",
|
|
"**/package.json",
|
|
"**/*.test.{mjs,ts,tsx}"
|
|
],
|
|
"scripts/creator-editing-capabilities.test.mjs": [
|
|
"skills/**",
|
|
"packages/core/**",
|
|
"packages/engine/**"
|
|
],
|
|
"scripts/registry-primitive-payloads.test.ts": ["registry/**"],
|
|
"scripts/generate-catalog-previews.test.ts": [
|
|
"registry/**",
|
|
"scripts/**",
|
|
"packages/producer/**"
|
|
],
|
|
"scripts/generate-catalog-payloads.test.ts": ["registry/**", "scripts/**"],
|
|
"skills/product-launch-video/scripts/build-frame-subsets.test.mjs": [
|
|
"scripts/generate-captured-font-copies.mjs",
|
|
"skills/product-launch-video/scripts/build-frame.mjs",
|
|
"skills/product-launch-video/scripts/captions.mjs",
|
|
"skills/product-launch-video/scripts/lib/captured-fonts.mjs",
|
|
"skills/faceless-explainer/scripts/build-frame.mjs",
|
|
"skills/faceless-explainer/scripts/captions.mjs",
|
|
"skills/faceless-explainer/scripts/lib/captured-fonts.mjs",
|
|
"skills/pr-to-video/scripts/build-frame.mjs",
|
|
"skills/pr-to-video/scripts/captions.mjs",
|
|
"skills/pr-to-video/scripts/lib/captured-fonts.mjs"
|
|
],
|
|
"scripts/check-skill-import-boundaries.test.mjs": ["skills/**"]
|
|
},
|
|
"runners": [
|
|
{
|
|
"cwd": ".",
|
|
"command": "set -euo pipefail\nmapfile -t SKILLS_TESTS < <(find skills packages/cli/src/media-use -type f -name \"*.test.mjs\" | sort)\nif [ \"${#SKILLS_TESTS[@]}\" -eq 0 ]; then\necho \"::error::No skills/**/*.test.mjs files found. Did the layout change?\"\nexit 1\nfi\nSKILLS_TESTS+=(scripts/check-media-use-copy-parity.test.mjs scripts/creator-editing-capabilities.test.mjs)\nprintf 'Running %d skills test file(s):\\n' \"${#SKILLS_TESTS[@]}\"\nprintf ' * %s\\n' \"${SKILLS_TESTS[@]}\"\nnode --import ./packages/cli/scripts/test-home.mjs --test \"${SKILLS_TESTS[@]}\"",
|
|
"tests": [
|
|
"skills/**/*.test.mjs",
|
|
"packages/cli/src/media-use/**/*.test.mjs",
|
|
"scripts/check-media-use-copy-parity.test.mjs",
|
|
"scripts/creator-editing-capabilities.test.mjs"
|
|
],
|
|
"sources": {},
|
|
"reason": "Shell find plus an explicit parity file; exact command match invalidates this mapping on edits."
|
|
},
|
|
{
|
|
"cwd": ".",
|
|
"command": "bun run producer:test:${{ matrix.lane }}",
|
|
"tests": [
|
|
"packages/producer/src/**/*.test.ts",
|
|
"packages/producer/scripts/test-classification.test.mjs",
|
|
"packages/producer/tests/**/*.test.ts"
|
|
],
|
|
"sources": {
|
|
"packages/producer/scripts/run-test-lane.mjs": "bff02680f19eebcce0df72cdeedbbc05edfdcede3f3f60658fc0cb18ed8c59f6",
|
|
"packages/producer/scripts/test-classification.mjs": "fa9452d63a9f3b76ab6be7ff001acddfbf3eb117159d932dcd1510eb88b4b5c6",
|
|
".github/workflows/ci.yml#job#producer-source-tests": "3709c6ac6c9f5c7c66f57fc6c1c106aec4ffe906f919eb7cdf2a6ce1d4e0974c",
|
|
"packages/producer/package.json#script#test:unit": "ae6beda8319d166774be958ea5593cd27dbf7f6c9bce1d787a3fe28dfc3477b1",
|
|
"packages/producer/package.json#script#test:integration": "008589f37d026877595a13501cbb66abd5cbe50e21fdcac6904f45466c3f475d",
|
|
"packages/producer/package.json#script#test:classification": "4ad50d88c81de374dd6ef8a53d702a4b1901483837ecd3d833b1cb0c9a29a058",
|
|
"package.json#script#producer:test:unit": "ded6d4183d455d1f414e41d15794c1aef5323e53b5ea5e2ff349e3bb049c18db",
|
|
"package.json#script#producer:test:integration": "8bb545947f4f8fef3bd5c6c9b1bcb394c7c942d7a3ab90cf4540c662572a278e"
|
|
},
|
|
"reason": "Both unit and integration matrix lanes discover tests under src and tests; workflow and runner sources are pinned to invalidate changed selection."
|
|
}
|
|
]
|
|
}
|