docs: Phase D.I7b.16 close-out (HANDOVER + plugin-setters + README) #27
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
| # SapuLowcodeEngine CI | |
| # | |
| # Runs on every push to main and on every PR targeting main. | |
| # Five checks across a 3-version Node matrix: | |
| # 1. yarn install --frozen-lockfile | |
| # 2. yarn build (CJS output for all 14 packages) | |
| # 3. yarn test (vitest, 400 tests expected) | |
| # 4. yarn typecheck (per-package tsc, requires build to populate lib/) | |
| # 5. yarn demo:build (Vite production build — proves the public | |
| # surface area is consumable from a host app) | |
| # | |
| # Plus a separate `e2e` job that runs the Playwright suite (P2.5) | |
| # against the Vite dev server. The e2e job runs on a single Node | |
| # version (20.x) — playwright's chromium handles its own browser | |
| # pinning, and the Node matrix is the only real variation. | |
| # | |
| # Lint is intentionally excluded: the `yarn lint` script exists but has | |
| # never been run in CI; first run will surface ~100 pre-existing warnings | |
| # that would drown the signal. Lint cleanup is a separate workstream. | |
| # | |
| # Node matrix covers 20.x (the engines.node lower bound), 22.x (current | |
| # active LTS), and 24.x (current). Yarn 1.x emits DEP0169 url.parse | |
| # warnings under Node 24 — those are stderr noise, not test failures. | |
| # | |
| # Cache: actions/setup-node's built-in `cache: yarn` derives a key from | |
| # the yarn.lock hash; cold install ~170s, warm install ~30s. | |
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| # Cancel in-progress runs on the same ref — saves CI minutes when a PR | |
| # gets force-pushed or new commits land before the previous run finishes. | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| ci: | |
| name: build · test · typecheck · demo:build | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: ['20.x', '22.x', '24.x'] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Use Node.js ${{ matrix.node }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: 'yarn' | |
| - name: Install dependencies | |
| run: yarn install --frozen-lockfile | |
| - name: Build | |
| run: yarn build | |
| - name: Test | |
| run: yarn test | |
| - name: Typecheck | |
| run: yarn typecheck | |
| - name: Demo production build | |
| run: yarn demo:build | |
| e2e: | |
| name: e2e (playwright) | |
| runs-on: ubuntu-latest | |
| # The e2e job only needs to run when the demo, tests, or workflow | |
| # changed. Skips most PRs that touch only docs/comments. | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Use Node.js 20.x | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20.x' | |
| cache: 'yarn' | |
| - name: Install dependencies | |
| run: yarn install --frozen-lockfile | |
| - name: Build workspace packages | |
| # playwright's webServer (yarn demo) imports the workspace | |
| # packages from their lib/ + es/ build, so we have to build | |
| # before running the e2e suite — same caveat as the local flow. | |
| run: yarn build | |
| - name: Install Playwright browsers | |
| run: yarn test:e2e:install | |
| - name: Run Playwright E2E suite | |
| run: yarn test:e2e | |
| - name: Upload Playwright report on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 7 | |