feat(cli): opt-in parallel batch rendering (#62) (#64) #84
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| # Skip the expensive Chromium install + e2e render only when every changed | |
| # file is docs/markdown/license — anything else runs the full gate. | |
| - uses: dorny/paths-filter@v3 | |
| id: changes | |
| with: | |
| predicate-quantifier: 'every' | |
| filters: | | |
| docs_only: | |
| - 'docs/**' | |
| - '**/*.md' | |
| - 'LICENSE' | |
| - 'COMMERCIAL.md' | |
| # Agent/config files under the .claude dot-directory don't affect a | |
| # render. Listed explicitly because '**/*.md' (picomatch dot:false) | |
| # won't descend into dot-directories. | |
| - '.claude/**' | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v5 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| # ffmpeg is needed by the unit tests too (cache.test.ts normalizes audio), | |
| # so it always installs — only Chromium + the e2e render are gated below. | |
| - run: sudo apt-get update && sudo apt-get install -y ffmpeg fonts-liberation fonts-noto-color-emoji | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm build | |
| - run: pnpm typecheck | |
| # Unit tests across all packages (core + cli vitest; example-app is e2e-only). | |
| - run: pnpm -r test | |
| - name: Install Playwright Chromium | |
| if: steps.changes.outputs.docs_only != 'true' | |
| run: pnpm --filter tutorial-forge-example-app exec playwright install --with-deps chromium | |
| - name: E2E render against example app | |
| if: steps.changes.outputs.docs_only != 'true' | |
| run: pnpm --filter tutorial-forge-example-app e2e | |
| - name: Publish dry-run | |
| run: pnpm --filter tutorial-forge --filter tutorial-forge-cli publish --dry-run --no-git-checks |