name: CI on: push: branches: [main] pull_request: workflow_dispatch: concurrency: group: ci-${{ github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} env: CARGO_TERM_COLOR: always CARGO_INCREMENTAL: 0 jobs: rust: name: Rust (${{ matrix.os }}) strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-22.04, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: { version: 11 } - uses: actions/setup-node@v4 with: { node-version: 22, cache: pnpm } - uses: dtolnay/rust-toolchain@stable with: { components: "clippy, rustfmt" } - uses: Swatinem/rust-cache@v2 - uses: taiki-e/install-action@nextest - name: Linux deps if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libxdo-dev libssl-dev patchelf # tauri-build checks that frontendDist exists. - run: pnpm install --frozen-lockfile && mkdir -p dist shell: bash - if: runner.os == 'Linux' run: cargo fmt --all --check - run: cargo clippy --workspace --all-targets -- -D warnings # Test fixtures write LF files; keep Git from converting them on checkout. - run: git config --global core.autocrlf false - run: cargo nextest run --workspace --no-fail-fast - name: Bindings are up to date if: runner.os == 'Linux' run: pnpm gen:bindings && git diff --exit-code src/bindings.ts frontend: name: Frontend runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: { version: 11 } - uses: actions/setup-node@v4 with: { node-version: 22, cache: pnpm } - run: pnpm install --frozen-lockfile - run: pnpm typecheck - run: pnpm lint - run: pnpm test - run: pnpm build - run: pnpm exec playwright install --with-deps chromium - run: pnpm e2e - uses: actions/upload-artifact@v4 if: failure() with: name: playwright-report path: playwright-report/ retention-days: 7