Skip to content

docs: Phase D.I7b.16 close-out (HANDOVER + plugin-setters + README) #27

docs: Phase D.I7b.16 close-out (HANDOVER + plugin-setters + README)

docs: Phase D.I7b.16 close-out (HANDOVER + plugin-setters + README) #27

Workflow file for this run

# 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