docs(promotion): add strategy plan and targets tracker #23
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
| # Phase-7 polish-plan test workflow. | |
| # | |
| # Runs the full validation surface produced by polish phases 3–6: | |
| # - renderer-unit: vitest (310 tests) — Phase 4 | |
| # - backend-unit: cargo test --bin mark — Phase 5 (392 tests) | |
| # - renderer-e2e: playwright chromium — Phase 6 (5 specs) | |
| # | |
| # Triggers: push to main, PR targeting main, manual dispatch. Existing | |
| # release.yml + release-tauri.yml are tag/branch-scoped respectively | |
| # and untouched by this file. | |
| # | |
| # Notes on tooling versions: | |
| # - Node 22 + dtolnay/rust-toolchain@stable mirror release.yml so a | |
| # green test run is a reliable predictor of a green release build. | |
| # - cargo test uses --bin mark because src-tauri/Cargo.toml has no | |
| # [lib] target — all 392 unit tests are attached to the binary. | |
| # - Linux Tauri sysdeps (webkit2gtk-4.1, gtk-3, soup-3) are not | |
| # strictly required for `cargo test --bin mark` because the test | |
| # suite does not link the windowing layer, BUT tauri-build runs at | |
| # compile time and pulls webkit pkg-config probes — installing the | |
| # deps avoids spurious failures and keeps parity with future jobs. | |
| # - Playwright runs macos-14 only initially; Linux is added under the | |
| # same matrix entry once it has been observed green at least once. | |
| name: test | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| concurrency: | |
| group: test-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| renderer-unit: | |
| name: renderer unit (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-14] | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 15 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v4 | |
| - name: setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: npm | |
| - name: npm ci | |
| run: npm ci | |
| - name: vitest run | |
| run: npm test | |
| backend-unit: | |
| name: backend unit (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-14] | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v4 | |
| - name: setup rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| src-tauri/target | |
| key: cargo-test-${{ matrix.os }}-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| cargo-test-${{ matrix.os }}- | |
| - name: install tauri sysdeps (linux) | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libwebkit2gtk-4.1-dev \ | |
| libgtk-3-dev \ | |
| libsoup-3.0-dev \ | |
| libjavascriptcoregtk-4.1-dev \ | |
| libayatana-appindicator3-dev \ | |
| librsvg2-dev | |
| - name: cargo test | |
| working-directory: src-tauri | |
| run: cargo test --bin mark | |
| renderer-e2e: | |
| name: renderer e2e playwright (macos-14) | |
| runs-on: macos-14 | |
| timeout-minutes: 25 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v4 | |
| - name: setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: npm | |
| - name: npm ci | |
| run: npm ci | |
| - name: vite build | |
| run: npm run build | |
| - name: cache playwright browsers | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/Library/Caches/ms-playwright | |
| key: playwright-macos-14-${{ hashFiles('package-lock.json') }} | |
| restore-keys: | | |
| playwright-macos-14- | |
| - name: install playwright chromium | |
| run: npx playwright install chromium --with-deps | |
| - name: playwright test | |
| run: npm run test:e2e | |
| - name: upload playwright report | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 14 | |
| status-check: | |
| name: status check | |
| needs: [renderer-unit, backend-unit, renderer-e2e] | |
| runs-on: ubuntu-latest | |
| if: always() | |
| steps: | |
| - name: aggregate | |
| run: | | |
| set -euo pipefail | |
| echo "renderer-unit: ${{ needs.renderer-unit.result }}" | |
| echo "backend-unit: ${{ needs.backend-unit.result }}" | |
| echo "renderer-e2e: ${{ needs.renderer-e2e.result }}" | |
| if [ "${{ needs.renderer-unit.result }}" != "success" ] \ | |
| || [ "${{ needs.backend-unit.result }}" != "success" ] \ | |
| || [ "${{ needs.renderer-e2e.result }}" != "success" ]; then | |
| echo "::error::one or more test jobs failed" | |
| exit 1 | |
| fi | |
| echo "all green" |