rowboat/.github/workflows/x-tests.yml
Ramnique Singh 6a8e67878d ci(x): typecheck test files — the gap vitest and the build tsconfigs both miss
Test files were typechecked by nothing: tsconfig.build.json excludes
them (correctly — they must not land in dist), and vitest transforms
with esbuild, which strips types without checking them. That gap is
where the review's two tsc breaks and the fixture drift accumulated.

Adds 'typecheck' scripts per package (dev tsconfigs, which include
src/**/*.test.ts; renderer reuses its existing tsc -b), a root
orchestrator mirroring the test script, and a CI step in the vitest
job. All three packages are currently clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 16:30:26 +05:30

69 lines
1.7 KiB
YAML

name: rowboat
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
jobs:
apps-x-vitest:
name: apps/x Vitest suites
runs-on: ubuntu-latest
defaults:
run:
working-directory: apps/x
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
cache-dependency-path: apps/x/pnpm-lock.yaml
- name: Install dependencies
run: pnpm install --frozen-lockfile
# Builds @x/shared (core/renderer tests import its dist), then runs
# the shared, core, and renderer vitest suites in order.
- name: Run apps/x Vitest suites
run: npm test
# Typechecks with the dev tsconfigs, which include test files —
# the build tsconfigs exclude them and vitest strips types without
# checking, so this is the only gate that sees type errors in tests.
- name: Typecheck apps/x packages
run: npm run typecheck
apps-x-electron-package:
name: apps/x Electron package smoke test
runs-on: ubuntu-latest
defaults:
run:
working-directory: apps/x
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 24.15.0
cache: pnpm
cache-dependency-path: apps/x/pnpm-lock.yaml
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Package Electron app without signing
env:
ROWBOAT_SKIP_CODE_SIGNING: "1"
run: npm run package
working-directory: apps/x/apps/main