chore(deps): bump jsdom from 29.1.1 to 30.0.1 #573
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: | |
| push: | |
| branches: [main, master] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| frontend: | |
| name: Frontend | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 | |
| - name: Setup Node | |
| uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: 24 | |
| cache: pnpm | |
| - name: Install dependencies | |
| id: install | |
| run: pnpm install --frozen-lockfile | |
| - name: Audit dependencies | |
| run: pnpm audit --audit-level=high --ignore-registry-errors | |
| - name: Typecheck | |
| run: pnpm typecheck | |
| - name: Format check | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| run: pnpm format:check | |
| - name: Lint | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| run: pnpm lint | |
| - name: knip (unused exports / dependencies) | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| run: pnpm knip --no-progress | |
| - name: Frontend tests with coverage | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| run: pnpm vitest run --coverage --reporter=junit --outputFile=test-results.junit.xml | |
| - name: Upload test results to Codecov | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| fail_ci_if_error: false | |
| - name: Upload coverage report | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: coverage-report | |
| path: coverage/ | |
| retention-days: 14 | |
| - name: Upload coverage to Codecov | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| directory: coverage | |
| flags: frontend | |
| fail_ci_if_error: false | |
| - name: Frontend build | |
| if: ${{ !cancelled() && steps.install.outcome == 'success' }} | |
| run: pnpm exec vite build | |
| rust-fmt-check: | |
| name: Rust Format | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 # stable | |
| with: | |
| toolchain: 1.96.0 | |
| components: rustfmt | |
| - name: Rust format check | |
| run: cargo fmt --manifest-path src-tauri/Cargo.toml --check | |
| rust-test: | |
| name: Rust Test | |
| runs-on: macos-14 | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Setup Node | |
| uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: 24 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 # stable | |
| with: | |
| toolchain: 1.96.0 | |
| - name: Cache Cargo registry | |
| uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: | | |
| ~/.cargo/registry/index | |
| ~/.cargo/registry/cache | |
| ~/.cargo/git/db | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('src-tauri/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo- | |
| - name: Cache sidecar downloads | |
| uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: src-tauri/binaries/.cache | |
| key: ${{ runner.os }}-uv-sidecars-${{ hashFiles('scripts/prepare-sidecars.mjs') }} | |
| - name: Prepare sidecars | |
| run: node scripts/prepare-sidecars.mjs | |
| - name: Rust compile check | |
| run: cargo check --manifest-path src-tauri/Cargo.toml | |
| - name: Clippy | |
| run: cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings | |
| - name: Rust audit | |
| run: | | |
| cargo install cargo-audit --locked | |
| cd src-tauri && cargo audit | |
| - name: Rust tests | |
| run: cargo test -q --manifest-path src-tauri/Cargo.toml | |
| cargo-deny: | |
| name: Cargo Deny | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: cargo-deny | |
| uses: EmbarkStudios/cargo-deny-action@3c6349835b2b7b196a839186cb8b78e02f7b5f25 # v2.1.1 | |
| with: | |
| manifest-path: src-tauri/Cargo.toml | |
| pr-lint: | |
| name: PR Title | |
| runs-on: ubuntu-slim | |
| if: github.event_name == 'pull_request' | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Check PR title | |
| uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| workflow-lint: | |
| name: Workflow lint | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| permissions: | |
| contents: read | |
| security-events: write # Needed by zizmor-action to upload SARIF results. | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: actionlint | |
| uses: reviewdog/action-actionlint@dbe5299849118fd6f099ba563d263d770955a64a # v1.73.2 | |
| with: | |
| actionlint_flags: "" | |
| - name: zizmor | |
| uses: zizmorcore/zizmor-action@3dc1ecc9bcb9e94e9b2c709687979e1298497054 # v0.6.2 | |
| with: | |
| persona: pedantic | |
| min-severity: low | |
| validate: | |
| name: Validate | |
| runs-on: ubuntu-slim | |
| needs: [frontend, rust-fmt-check, rust-test, cargo-deny, pr-lint, workflow-lint] | |
| if: ${{ always() }} | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Check required jobs | |
| run: | | |
| echo "frontend: ${{ needs.frontend.result }}" | |
| echo "rust-fmt-check: ${{ needs['rust-fmt-check'].result }}" | |
| echo "rust-test: ${{ needs['rust-test'].result }}" | |
| echo "cargo-deny: ${{ needs['cargo-deny'].result }}" | |
| echo "pr-lint: ${{ needs['pr-lint'].result }}" | |
| echo "workflow-lint: ${{ needs['workflow-lint'].result }}" | |
| test "${{ needs.frontend.result }}" = "success" | |
| test "${{ needs['rust-fmt-check'].result }}" = "success" | |
| test "${{ needs['rust-test'].result }}" = "success" | |
| test "${{ needs['cargo-deny'].result }}" = "success" | |
| test "${{ needs['workflow-lint'].result }}" = "success" | |
| # pr-lint only runs on PRs; skip on push | |
| if [ "${{ needs.pr-lint.result }}" != "skipped" ]; then | |
| test "${{ needs.pr-lint.result }}" = "success" | |
| fi |