name: CI on: workflow_dispatch: push: branches: - master pull_request: branches: - master concurrency: group: "${{ github.workflow }}-${{ github.head_ref }}" cancel-in-progress: ${{ github.event_name == 'pull_request' }} permissions: {} jobs: build-and-test: name: Build and test ${{ matrix.node }} on ${{ matrix.os }} strategy: fail-fast: false matrix: node: [24] os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} permissions: contents: read steps: - name: Checkout code uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install Dependencies uses: ./.github/actions/install-dependencies with: node-version: ${{ matrix.node }} - name: Build packages run: pnpm run build:packages - name: Build frontend run: pnpm run build:frontend - name: Run tests run: pnpm run test frontend-test-e2e: name: Frontend E2E test permissions: contents: read timeout-minutes: 60 runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install Dependencies uses: ./.github/actions/install-dependencies - name: Build packages run: pnpm run build:packages - name: Install Playwright Browsers run: pnpm exec playwright install --with-deps - name: Run Playwright tests run: pnpm --filter ./apps/frontend/ run test:e2e backend-test-e2e: name: Backend E2E test runs-on: ubuntu-latest permissions: contents: read continue-on-error: true steps: - name: Checkout code uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install Dependencies uses: ./.github/actions/install-dependencies - name: Build packages run: pnpm run build:packages - name: Run backend end-to-end tests run: pnpm --filter ./apps/backend/ run test:e2e code-checks: name: Code checks runs-on: ubuntu-latest permissions: contents: read steps: - name: Checkout code uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install Dependencies uses: ./.github/actions/install-dependencies - name: Format run: pnpm run format:check - name: Lint run: pnpm run lint - name: Lint (knip) run: pnpm run lint:knip - name: Typecheck run: pnpm run typecheck