99 workflow_dispatch :
1010jobs :
1111 test :
12- runs-on : blacksmith-4vcpu-ubuntu-2404
12+ name : test (${{ matrix.settings.name }})
13+ strategy :
14+ fail-fast : false
15+ matrix :
16+ settings :
17+ - name : linux
18+ host : blacksmith-4vcpu-ubuntu-2404
19+ playwright : bunx playwright install --with-deps
20+ workdir : .
21+ command : |
22+ git config --global user.email "bot@opencode.ai"
23+ git config --global user.name "opencode"
24+ bun turbo typecheck
25+ bun turbo test
26+ - name : windows
27+ host : windows-latest
28+ playwright : bunx playwright install
29+ workdir : packages/app
30+ command : bun test:e2e
31+ runs-on : ${{ matrix.settings.host }}
32+ defaults :
33+ run :
34+ shell : bash
1335 steps :
1436 - name : Checkout repository
1537 uses : actions/checkout@v4
@@ -21,42 +43,63 @@ jobs:
2143
2244 - name : Install Playwright browsers
2345 working-directory : packages/app
24- run : bunx playwright install --with-deps
46+ run : ${{ matrix.settings.playwright }}
47+
48+ - name : Set OS-specific paths
49+ run : |
50+ if [ "${{ runner.os }}" = "Windows" ]; then
51+ printf '%s\n' "OPENCODE_E2E_ROOT=${{ runner.temp }}\\opencode-e2e" >> "$GITHUB_ENV"
52+ printf '%s\n' "OPENCODE_TEST_HOME=${{ runner.temp }}\\opencode-e2e\\home" >> "$GITHUB_ENV"
53+ printf '%s\n' "XDG_DATA_HOME=${{ runner.temp }}\\opencode-e2e\\share" >> "$GITHUB_ENV"
54+ printf '%s\n' "XDG_CACHE_HOME=${{ runner.temp }}\\opencode-e2e\\cache" >> "$GITHUB_ENV"
55+ printf '%s\n' "XDG_CONFIG_HOME=${{ runner.temp }}\\opencode-e2e\\config" >> "$GITHUB_ENV"
56+ printf '%s\n' "XDG_STATE_HOME=${{ runner.temp }}\\opencode-e2e\\state" >> "$GITHUB_ENV"
57+ printf '%s\n' "MODELS_DEV_API_JSON=${{ github.workspace }}\\packages\\opencode\\test\\tool\\fixtures\\models-api.json" >> "$GITHUB_ENV"
58+ else
59+ printf '%s\n' "OPENCODE_E2E_ROOT=${{ runner.temp }}/opencode-e2e" >> "$GITHUB_ENV"
60+ printf '%s\n' "OPENCODE_TEST_HOME=${{ runner.temp }}/opencode-e2e/home" >> "$GITHUB_ENV"
61+ printf '%s\n' "XDG_DATA_HOME=${{ runner.temp }}/opencode-e2e/share" >> "$GITHUB_ENV"
62+ printf '%s\n' "XDG_CACHE_HOME=${{ runner.temp }}/opencode-e2e/cache" >> "$GITHUB_ENV"
63+ printf '%s\n' "XDG_CONFIG_HOME=${{ runner.temp }}/opencode-e2e/config" >> "$GITHUB_ENV"
64+ printf '%s\n' "XDG_STATE_HOME=${{ runner.temp }}/opencode-e2e/state" >> "$GITHUB_ENV"
65+ printf '%s\n' "MODELS_DEV_API_JSON=${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json" >> "$GITHUB_ENV"
66+ fi
2567
2668 - name : Seed opencode data
2769 working-directory : packages/opencode
2870 run : bun script/seed-e2e.ts
2971 env :
30- MODELS_DEV_API_JSON : ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
72+ MODELS_DEV_API_JSON : ${{ env.MODELS_DEV_API_JSON }}
3173 OPENCODE_DISABLE_MODELS_FETCH : " true"
3274 OPENCODE_DISABLE_SHARE : " true"
3375 OPENCODE_DISABLE_LSP_DOWNLOAD : " true"
3476 OPENCODE_DISABLE_DEFAULT_PLUGINS : " true"
3577 OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER : " true"
36- OPENCODE_TEST_HOME : ${{ runner.temp }}/opencode-e2e/home
37- XDG_DATA_HOME : ${{ runner.temp }}/opencode-e2e/share
38- XDG_CACHE_HOME : ${{ runner.temp }}/opencode-e2e/cache
39- XDG_CONFIG_HOME : ${{ runner.temp }}/opencode-e2e/config
40- XDG_STATE_HOME : ${{ runner.temp }}/opencode-e2e/state
78+ OPENCODE_TEST_HOME : ${{ env.OPENCODE_TEST_HOME }}
79+ XDG_DATA_HOME : ${{ env.XDG_DATA_HOME }}
80+ XDG_CACHE_HOME : ${{ env.XDG_CACHE_HOME }}
81+ XDG_CONFIG_HOME : ${{ env.XDG_CONFIG_HOME }}
82+ XDG_STATE_HOME : ${{ env.XDG_STATE_HOME }}
4183 OPENCODE_E2E_PROJECT_DIR : ${{ github.workspace }}
4284 OPENCODE_E2E_SESSION_TITLE : " E2E Session"
4385 OPENCODE_E2E_MESSAGE : " Seeded for UI e2e"
4486 OPENCODE_E2E_MODEL : " opencode/gpt-5-nano"
4587
4688 - name : Run opencode server
47- run : bun run dev -- --print-logs --log-level WARN serve --port 4096 --hostname 0.0.0.0 &
89+ working-directory : packages/opencode
90+ run : bun dev -- --print-logs --log-level WARN serve --port 4096 --hostname 0.0.0.0 &
4891 env :
49- MODELS_DEV_API_JSON : ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
92+ MODELS_DEV_API_JSON : ${{ env.MODELS_DEV_API_JSON }}
5093 OPENCODE_DISABLE_MODELS_FETCH : " true"
5194 OPENCODE_DISABLE_SHARE : " true"
5295 OPENCODE_DISABLE_LSP_DOWNLOAD : " true"
5396 OPENCODE_DISABLE_DEFAULT_PLUGINS : " true"
5497 OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER : " true"
55- OPENCODE_TEST_HOME : ${{ runner.temp }}/opencode-e2e/home
56- XDG_DATA_HOME : ${{ runner.temp }}/opencode-e2e/share
57- XDG_CACHE_HOME : ${{ runner.temp }}/opencode-e2e/cache
58- XDG_CONFIG_HOME : ${{ runner.temp }}/opencode-e2e/config
59- XDG_STATE_HOME : ${{ runner.temp }}/opencode-e2e/state
98+ OPENCODE_TEST_HOME : ${{ env.OPENCODE_TEST_HOME }}
99+ XDG_DATA_HOME : ${{ env.XDG_DATA_HOME }}
100+ XDG_CACHE_HOME : ${{ env.XDG_CACHE_HOME }}
101+ XDG_CONFIG_HOME : ${{ env.XDG_CONFIG_HOME }}
102+ XDG_STATE_HOME : ${{ env.XDG_STATE_HOME }}
60103 OPENCODE_CLIENT : " app"
61104
62105 - name : Wait for opencode server
@@ -68,24 +111,21 @@ jobs:
68111 exit 1
69112
70113 - name : run
71- run : |
72- git config --global user.email "bot@opencode.ai"
73- git config --global user.name "opencode"
74- bun turbo typecheck
75- bun turbo test
114+ working-directory : ${{ matrix.settings.workdir }}
115+ run : ${{ matrix.settings.command }}
76116 env :
77117 CI : true
78- MODELS_DEV_API_JSON : ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
118+ MODELS_DEV_API_JSON : ${{ env.MODELS_DEV_API_JSON }}
79119 OPENCODE_DISABLE_MODELS_FETCH : " true"
80120 OPENCODE_DISABLE_SHARE : " true"
81121 OPENCODE_DISABLE_LSP_DOWNLOAD : " true"
82122 OPENCODE_DISABLE_DEFAULT_PLUGINS : " true"
83123 OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER : " true"
84- OPENCODE_TEST_HOME : ${{ runner.temp }}/opencode-e2e/home
85- XDG_DATA_HOME : ${{ runner.temp }}/opencode-e2e/share
86- XDG_CACHE_HOME : ${{ runner.temp }}/opencode-e2e/cache
87- XDG_CONFIG_HOME : ${{ runner.temp }}/opencode-e2e/config
88- XDG_STATE_HOME : ${{ runner.temp }}/opencode-e2e/state
124+ OPENCODE_TEST_HOME : ${{ env.OPENCODE_TEST_HOME }}
125+ XDG_DATA_HOME : ${{ env.XDG_DATA_HOME }}
126+ XDG_CACHE_HOME : ${{ env.XDG_CACHE_HOME }}
127+ XDG_CONFIG_HOME : ${{ env.XDG_CONFIG_HOME }}
128+ XDG_STATE_HOME : ${{ env.XDG_STATE_HOME }}
89129 PLAYWRIGHT_SERVER_HOST : " localhost"
90130 PLAYWRIGHT_SERVER_PORT : " 4096"
91131 VITE_OPENCODE_SERVER_HOST : " localhost"
0 commit comments