fix(ci): disable video recording in CI — eliminates ffmpeg dependency… #39
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: test | |
| on: | |
| push: | |
| branches: | |
| - fork/local | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| # Keep every run on fork/local so cancelled checks do not pollute the default branch | |
| # commit history. PRs and other branches still share a group and cancel stale runs. | |
| group: ${{ github.ref == 'refs/heads/fork/local' && format('{0}-{1}', github.workflow, github.run_id) || format('{0}-{1}', github.workflow, github.event.pull_request.number || github.ref) }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| checks: write | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| jobs: | |
| unit: | |
| name: unit (${{ matrix.settings.name }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - name: linux | |
| host: ubuntu-latest | |
| runs-on: ${{ matrix.settings.host }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Setup Node | |
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
| with: | |
| node-version: "24" | |
| - name: Setup Bun | |
| uses: ./.github/actions/setup-bun | |
| - name: Configure git identity | |
| run: | | |
| git config --global user.email "bot@opencode.ai" | |
| git config --global user.name "opencode" | |
| - name: Cache Turbo | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: node_modules/.cache/turbo | |
| key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}-${{ github.sha }} | |
| restore-keys: | | |
| turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}- | |
| turbo-${{ runner.os }}- | |
| - name: Run unit tests | |
| run: bun turbo test:ci | |
| # Retry once — upstream has a confirmed flaky timing test (ws-pool idle timeout) | |
| # that fails intermittently under CI runner latency. One retry is sufficient. | |
| continue-on-error: true | |
| id: unit_tests_first | |
| - name: Retry unit tests (flaky guard) | |
| if: steps.unit_tests_first.outcome == 'failure' | |
| run: bun turbo test:ci | |
| - name: Run HttpApi exerciser gates | |
| if: runner.os == 'Linux' | |
| working-directory: packages/opencode | |
| run: bun run test:httpapi | |
| - name: Publish unit reports | |
| if: always() | |
| uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0 | |
| with: | |
| report_paths: packages/*/.artifacts/unit/junit.xml | |
| check_name: "unit results (${{ matrix.settings.name }})" | |
| detailed_summary: true | |
| include_time_in_summary: true | |
| fail_on_failure: false | |
| - name: Upload unit artifacts | |
| if: always() | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: unit-${{ matrix.settings.name }}-${{ github.run_attempt }} | |
| include-hidden-files: true | |
| if-no-files-found: ignore | |
| retention-days: 7 | |
| path: packages/*/.artifacts/unit/junit.xml | |
| e2e: | |
| name: e2e (linux) | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Setup Node | |
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
| with: | |
| node-version: "24" | |
| - name: Setup Bun | |
| uses: ./.github/actions/setup-bun | |
| - name: Verify system Chromium | |
| run: chromium-browser --version || chromium --version || which chromium-browser || which chromium | |
| - name: Run app e2e tests | |
| run: bun --cwd packages/app test:e2e:local | |
| env: | |
| CI: true | |
| timeout-minutes: 30 | |
| - name: Upload Playwright artifacts | |
| if: always() | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: playwright-linux-${{ github.run_attempt }} | |
| if-no-files-found: ignore | |
| retention-days: 7 | |
| path: | | |
| packages/app/e2e/test-results | |
| packages/app/e2e/playwright-report |