Feat/plan and fixes #56
Workflow file for this run
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: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| # A new push to a PR makes the in-flight run irrelevant. | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| ci: | |
| name: lint, typecheck, test, build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Install pnpm | |
| # Version comes from the `packageManager` field in package.json. | |
| uses: pnpm/action-setup@v6 | |
| - name: Install Node | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version-file: .nvmrc | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| # First, not last. Every package consumes its workspace dependencies | |
| # through their published dist rather than a path alias — deliberately, so | |
| # they exercise the shape a consumer gets — which means nothing | |
| # downstream resolves until those dists exist. That includes lint: the | |
| # type-aware rules read an unbuilt import as `error` and report every use | |
| # of it as unsafe, which is a confusing way to be told the build is | |
| # missing. | |
| - name: Build | |
| run: pnpm build | |
| - name: Lint | |
| run: pnpm lint | |
| - name: Check formatting | |
| run: pnpm format:check | |
| - name: Typecheck | |
| run: pnpm typecheck | |
| # Story tests run in a real browser, so the binary has to be present. | |
| - name: Install Playwright Chromium | |
| run: pnpm exec playwright install --with-deps chromium | |
| - name: Test | |
| run: pnpm test | |
| # A budget nobody checks is decoration. Runs after Build because it | |
| # measures the real dist, not a re-bundle of source. | |
| - name: Bundle size | |
| run: pnpm size | |
| - name: Build Storybook | |
| run: pnpm build-storybook |