| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- name: test
- on:
- push:
- branches:
- - dev
- pull_request:
- workflow_dispatch:
- jobs:
- unit:
- name: unit (linux)
- runs-on: blacksmith-4vcpu-ubuntu-2404
- defaults:
- run:
- shell: bash
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- - name: Setup Bun
- uses: ./.github/actions/setup-bun
- - name: Configure git identity
- run: |
- git config --global user.email "[email protected]"
- git config --global user.name "opencode"
- - name: Run unit tests
- run: bun turbo test
- e2e:
- name: e2e (${{ matrix.settings.name }})
- needs: unit
- strategy:
- fail-fast: false
- matrix:
- settings:
- - name: linux
- host: blacksmith-4vcpu-ubuntu-2404
- playwright: bunx playwright install --with-deps
- - name: windows
- host: blacksmith-4vcpu-windows-2025
- playwright: bunx playwright install
- runs-on: ${{ matrix.settings.host }}
- env:
- PLAYWRIGHT_BROWSERS_PATH: 0
- defaults:
- run:
- shell: bash
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- - name: Setup Bun
- uses: ./.github/actions/setup-bun
- - name: Install Playwright browsers
- working-directory: packages/app
- run: ${{ matrix.settings.playwright }}
- - name: Run app e2e tests
- run: bun --cwd packages/app test:e2e:local
- env:
- CI: true
- timeout-minutes: 30
- - name: Upload Playwright artifacts
- if: failure()
- uses: actions/upload-artifact@v4
- with:
- name: playwright-${{ matrix.settings.name }}-${{ github.run_attempt }}
- if-no-files-found: ignore
- retention-days: 7
- path: |
- packages/app/e2e/test-results
- packages/app/e2e/playwright-report
- required:
- name: test (linux)
- runs-on: blacksmith-4vcpu-ubuntu-2404
- needs:
- - unit
- - e2e
- if: always()
- steps:
- - name: Verify upstream test jobs passed
- run: |
- echo "unit=${{ needs.unit.result }}"
- echo "e2e=${{ needs.e2e.result }}"
- test "${{ needs.unit.result }}" = "success"
- test "${{ needs.e2e.result }}" = "success"
|