| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- name: test
- on:
- push:
- branches:
- - dev
- pull_request:
- workflow_dispatch:
- jobs:
- test:
- name: test (${{ matrix.settings.name }})
- strategy:
- fail-fast: false
- matrix:
- settings:
- - name: linux
- host: blacksmith-4vcpu-ubuntu-2404
- playwright: bunx playwright install --with-deps
- workdir: .
- command: |
- git config --global user.email "[email protected]"
- git config --global user.name "opencode"
- bun turbo typecheck
- bun turbo test
- - name: windows
- host: windows-latest
- playwright: bunx playwright install
- workdir: packages/app
- command: bun test:e2e
- 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: Install Playwright browsers
- working-directory: packages/app
- run: ${{ matrix.settings.playwright }}
- - name: Set OS-specific paths
- run: |
- if [ "${{ runner.os }}" = "Windows" ]; then
- printf '%s\n' "OPENCODE_E2E_ROOT=${{ runner.temp }}\\opencode-e2e" >> "$GITHUB_ENV"
- printf '%s\n' "OPENCODE_TEST_HOME=${{ runner.temp }}\\opencode-e2e\\home" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_DATA_HOME=${{ runner.temp }}\\opencode-e2e\\share" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_CACHE_HOME=${{ runner.temp }}\\opencode-e2e\\cache" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_CONFIG_HOME=${{ runner.temp }}\\opencode-e2e\\config" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_STATE_HOME=${{ runner.temp }}\\opencode-e2e\\state" >> "$GITHUB_ENV"
- printf '%s\n' "MODELS_DEV_API_JSON=${{ github.workspace }}\\packages\\opencode\\test\\tool\\fixtures\\models-api.json" >> "$GITHUB_ENV"
- else
- printf '%s\n' "OPENCODE_E2E_ROOT=${{ runner.temp }}/opencode-e2e" >> "$GITHUB_ENV"
- printf '%s\n' "OPENCODE_TEST_HOME=${{ runner.temp }}/opencode-e2e/home" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_DATA_HOME=${{ runner.temp }}/opencode-e2e/share" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_CACHE_HOME=${{ runner.temp }}/opencode-e2e/cache" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_CONFIG_HOME=${{ runner.temp }}/opencode-e2e/config" >> "$GITHUB_ENV"
- printf '%s\n' "XDG_STATE_HOME=${{ runner.temp }}/opencode-e2e/state" >> "$GITHUB_ENV"
- printf '%s\n' "MODELS_DEV_API_JSON=${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json" >> "$GITHUB_ENV"
- fi
- - name: Seed opencode data
- working-directory: packages/opencode
- run: bun script/seed-e2e.ts
- env:
- MODELS_DEV_API_JSON: ${{ env.MODELS_DEV_API_JSON }}
- OPENCODE_DISABLE_MODELS_FETCH: "true"
- OPENCODE_DISABLE_SHARE: "true"
- OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
- OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
- OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
- OPENCODE_TEST_HOME: ${{ env.OPENCODE_TEST_HOME }}
- XDG_DATA_HOME: ${{ env.XDG_DATA_HOME }}
- XDG_CACHE_HOME: ${{ env.XDG_CACHE_HOME }}
- XDG_CONFIG_HOME: ${{ env.XDG_CONFIG_HOME }}
- XDG_STATE_HOME: ${{ env.XDG_STATE_HOME }}
- OPENCODE_E2E_PROJECT_DIR: ${{ github.workspace }}
- OPENCODE_E2E_SESSION_TITLE: "E2E Session"
- OPENCODE_E2E_MESSAGE: "Seeded for UI e2e"
- OPENCODE_E2E_MODEL: "opencode/gpt-5-nano"
- - name: Run opencode server
- working-directory: packages/opencode
- run: bun dev -- --print-logs --log-level WARN serve --port 4096 --hostname 0.0.0.0 &
- env:
- MODELS_DEV_API_JSON: ${{ env.MODELS_DEV_API_JSON }}
- OPENCODE_DISABLE_MODELS_FETCH: "true"
- OPENCODE_DISABLE_SHARE: "true"
- OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
- OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
- OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
- OPENCODE_TEST_HOME: ${{ env.OPENCODE_TEST_HOME }}
- XDG_DATA_HOME: ${{ env.XDG_DATA_HOME }}
- XDG_CACHE_HOME: ${{ env.XDG_CACHE_HOME }}
- XDG_CONFIG_HOME: ${{ env.XDG_CONFIG_HOME }}
- XDG_STATE_HOME: ${{ env.XDG_STATE_HOME }}
- OPENCODE_CLIENT: "app"
- - name: Wait for opencode server
- run: |
- for i in {1..60}; do
- curl -fsS "http://localhost:4096/global/health" > /dev/null && exit 0
- sleep 1
- done
- exit 1
- - name: run
- working-directory: ${{ matrix.settings.workdir }}
- run: ${{ matrix.settings.command }}
- env:
- CI: true
- MODELS_DEV_API_JSON: ${{ env.MODELS_DEV_API_JSON }}
- OPENCODE_DISABLE_MODELS_FETCH: "true"
- OPENCODE_DISABLE_SHARE: "true"
- OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
- OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
- OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
- OPENCODE_TEST_HOME: ${{ env.OPENCODE_TEST_HOME }}
- XDG_DATA_HOME: ${{ env.XDG_DATA_HOME }}
- XDG_CACHE_HOME: ${{ env.XDG_CACHE_HOME }}
- XDG_CONFIG_HOME: ${{ env.XDG_CONFIG_HOME }}
- XDG_STATE_HOME: ${{ env.XDG_STATE_HOME }}
- PLAYWRIGHT_SERVER_HOST: "localhost"
- PLAYWRIGHT_SERVER_PORT: "4096"
- VITE_OPENCODE_SERVER_HOST: "localhost"
- VITE_OPENCODE_SERVER_PORT: "4096"
- OPENCODE_CLIENT: "app"
- timeout-minutes: 30
|