refactor: add provider-first device lab tests #1962
Workflow file for this run
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: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| ios-runner-swift-compat: | |
| name: iOS Runner Swift Compatibility | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Disallow trailing commas before closing parenthesis in Swift | |
| run: | | |
| if rg -nU --glob '*.swift' ',\s*\n\s*\)' ios-runner; then | |
| echo "Found trailing commas before ')' in Swift files. This syntax requires Swift 6.1+ and breaks older Xcode toolchains." | |
| exit 1 | |
| fi | |
| no-test-di-seams: | |
| name: No test-only DI seams | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Fail if test-only DI seams reappear in production code | |
| run: | | |
| if rg '\?\s*:\s*typeof\s+' src/ --glob '!**/__tests__/**' --glob '!*.test.ts'; then | |
| echo "Found test-only DI seams (optional typeof params) in production code." | |
| exit 1 | |
| fi | |
| fallow: | |
| name: Fallow Code Quality | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup toolchain | |
| uses: ./.github/actions/setup-node-pnpm | |
| - name: Run Fallow audit | |
| env: | |
| FALLOW_BASE: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }} | |
| run: pnpm check:fallow --base "$FALLOW_BASE" | |
| unit: | |
| name: Unit Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup toolchain | |
| uses: ./.github/actions/setup-node-pnpm | |
| - name: Run unit tests | |
| run: pnpm test:unit | |
| coverage: | |
| name: Coverage | |
| runs-on: macos-26 | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup toolchain | |
| uses: ./.github/actions/setup-node-pnpm | |
| - name: Run coverage | |
| run: pnpm test:coverage | |
| typecheck: | |
| name: Typecheck | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup toolchain | |
| uses: ./.github/actions/setup-node-pnpm | |
| - name: Run typecheck | |
| run: pnpm typecheck | |
| android-snapshot-helper: | |
| name: Android Snapshot Helper Package | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup toolchain | |
| uses: ./.github/actions/setup-node-pnpm | |
| - name: Install Android SDK packages | |
| run: | | |
| SDK_ROOT="${ANDROID_HOME:-${ANDROID_SDK_ROOT:-/usr/local/lib/android/sdk}}" | |
| SDKMANAGER="$SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" | |
| if [ ! -x "$SDKMANAGER" ]; then | |
| SDKMANAGER="$SDK_ROOT/cmdline-tools/bin/sdkmanager" | |
| fi | |
| if [ ! -x "$SDKMANAGER" ]; then | |
| echo "sdkmanager not found under $SDK_ROOT" >&2 | |
| exit 1 | |
| fi | |
| yes | "$SDKMANAGER" --licenses >/dev/null | |
| "$SDKMANAGER" "platforms;android-36" "build-tools;36.0.0" | |
| - name: Check Java toolchain | |
| run: | | |
| javac --version | |
| java --version | |
| - name: Package npm-bundled Android snapshot helper | |
| run: pnpm package:android-snapshot-helper:npm | |
| integration: | |
| name: Integration Tests | |
| runs-on: macos-26 | |
| timeout-minutes: 60 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup toolchain | |
| uses: ./.github/actions/setup-node-pnpm | |
| - name: Run integration tests | |
| run: | | |
| pnpm clean:daemon | |
| pnpm test:integration:node | |
| - name: Run provider-backed integration tests | |
| run: pnpm test:integration:provider | |
| - name: Check Provider-backed integration architecture progress | |
| run: pnpm test:integration:progress:check |