From 76b613dd99f8b822925450b903715c130445f55e Mon Sep 17 00:00:00 2001 From: homen Date: Wed, 29 Jul 2026 02:37:27 -0700 Subject: [PATCH] ci: add check + Remotion smoke-render workflow A reproducible-walkthrough tool with zero CI undercuts its own thesis. This workflow proves two things on every push/PR: the syntax gate (npm run check) passes, and the render pipeline reproduces a video from the committed walkthrough data alone (frames 0-30 of WT-NodeRoom, whose frames live in public/wt/NodeRoom). The Playwright capture step is deliberately excluded: it needs live localhost apps. Verified locally: check passes, WT-NodeRoom frames 0-30 renders 311 kB. Co-Authored-By: Claude Fable 5 --- .github/workflows/ci.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b929675 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: CI + +# What this proves: the syntax gate passes and the Remotion render pipeline +# reproduces from the committed walkthrough data (src/walkthrough.data.js + +# public/wt/) alone. What it deliberately excludes: the Playwright capture +# step (walkthrough.mjs), which needs live localhost apps and cannot run here. + +on: + pull_request: + push: + branches: [main] + +permissions: + contents: read + +jobs: + check-and-smoke-render: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: npm + - run: npm ci + - run: npm run check + - name: Ensure Remotion headless browser + run: npx remotion browser ensure + - name: Smoke render (frames 0-30 of a bundled walkthrough) + run: npx remotion render src/index.js WT-NodeRoom /tmp/wt-smoke.mp4 --frames=0-30 --concurrency=2 + - name: Verify artifact exists and is non-trivial + run: test -s /tmp/wt-smoke.mp4 && stat -c '%s bytes' /tmp/wt-smoke.mp4