| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- name: test
- on:
- push:
- branches:
- - dev
- pull_request:
- workflow_dispatch:
- concurrency:
- # Keep every run on dev so cancelled checks do not pollute the default branch
- # commit history. PRs and other branches still share a group and cancel stale runs.
- group: ${{ case(github.ref == 'refs/heads/dev', 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
- jobs:
- unit:
- name: unit (${{ matrix.settings.name }})
- strategy:
- fail-fast: false
- matrix:
- settings:
- - name: linux
- host: blacksmith-4vcpu-ubuntu-2404
- - name: windows
- host: blacksmith-4vcpu-windows-2025
- runs-on: ${{ matrix.settings.host }}
- 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 }})
- strategy:
- fail-fast: false
- matrix:
- settings:
- - name: linux
- host: blacksmith-4vcpu-ubuntu-2404
- - name: windows
- host: blacksmith-4vcpu-windows-2025
- runs-on: ${{ matrix.settings.host }}
- env:
- PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/.playwright-browsers
- 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: Read Playwright version
- id: playwright-version
- run: |
- version=$(node -e 'console.log(require("./packages/app/package.json").devDependencies["@playwright/test"])')
- echo "version=$version" >> "$GITHUB_OUTPUT"
- - name: Cache Playwright browsers
- id: playwright-cache
- uses: actions/cache@v4
- with:
- path: ${{ github.workspace }}/.playwright-browsers
- key: ${{ runner.os }}-${{ runner.arch }}-playwright-${{ steps.playwright-version.outputs.version }}-chromium
- - name: Install Playwright system dependencies
- if: runner.os == 'Linux'
- working-directory: packages/app
- run: bunx playwright install-deps chromium
- - name: Install Playwright browsers
- if: steps.playwright-cache.outputs.cache-hit != 'true'
- working-directory: packages/app
- run: bunx playwright install 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: 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
|