Shuvcode dev #1206
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: | |
| - dev | |
| - integration | |
| 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 "bot@opencode.ai" | |
| 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 (linux) | |
| if: runner.os != 'Windows' | |
| 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: Run opencode server (windows) | |
| if: runner.os == 'Windows' | |
| shell: pwsh | |
| run: >- | |
| Start-Process -FilePath "bun" -ArgumentList @( | |
| "dev", | |
| "--", | |
| "--print-logs", | |
| "--log-level", | |
| "WARN", | |
| "serve", | |
| "--port", | |
| "4096", | |
| "--hostname", | |
| "0.0.0.0" | |
| ) -WorkingDirectory "packages/opencode" -NoNewWindow | |
| 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 |