name: Test on: workflow_call: workflow_dispatch: permissions: contents: read jobs: build-check-test: timeout-minutes: 10 runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest node-version: 20 - os: ubuntu-latest node-version: 22 # - os: windows-latest # node-version: 22 - os: macos-latest node-version: 22 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: npm # macOS node-gyp/electron rebuilds can fail with Python 3.12/distutils; pin 3.11. - name: Setup Python (for node-gyp on macOS) if: matrix.os == 'macos-latest' uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install dependencies run: npm ci - name: Install web-ui dependencies run: npm ci --prefix web-ui - name: Install packages/desktop dependencies run: npm ci --prefix packages/desktop - name: Build run: npm run build - name: Lint run: npm run lint - name: Typecheck run: npm run typecheck - name: Root tests run: npm test - name: Web UI tests run: npm --prefix web-ui run test - name: packages/desktop typecheck run: npm --prefix packages/desktop run typecheck - name: packages/desktop tests run: npm --prefix packages/desktop test