@@ -27,11 +27,11 @@ concurrency:
2727 cancel-in-progress : true
2828
2929jobs :
30- # On every push/PR: smoke matrix (912 cells, ubuntu, no real MLX
31- # training — backend just verifies). Quick gate, ~10 min .
30+ # On every push/PR: smoke matrix (912 cells). The backend imports MLX, so
31+ # this runs on the repository's persistent Apple Silicon runner .
3232 preset-matrix :
33- name : Preset matrix (smoke, ubuntu )
34- runs-on : ubuntu-latest
33+ name : Preset matrix (smoke, self-hosted macOS )
34+ runs-on : [self-hosted, macOS, ARM64, cppmega-mlx-macos]
3535 timeout-minutes : 25
3636 strategy :
3737 fail-fast : false
4747 - uses : actions/setup-python@v5
4848 with :
4949 python-version : " 3.13"
50+ - name : Bind E2E backend to the selected Python
51+ run : echo "VBGUI_E2E_PYTHON=$(command -v python)" >> "$GITHUB_ENV"
5052 - name : Python deps
5153 run : |
5254 python -m pip install --upgrade pip
6365 npm run typecheck
6466 - name : Playwright browsers
6567 working-directory : vbgui
66- run : npx playwright install --with-deps chromium
68+ run : npx playwright install chromium
6769 - name : Run preset matrix shard ${{ matrix.shard }}/4
6870 working-directory : vbgui
6971 env :
8789 # Specialised + canvas smoke scenarios — run on every push (lightweight).
8890 specialised :
8991 name : Specialised + canvas smoke
90- runs-on : ubuntu-latest
92+ runs-on : [self-hosted, macOS, ARM64, cppmega-mlx-macos]
9193 timeout-minutes : 15
9294 steps :
9395 - uses : actions/checkout@v4
9698 cache-dependency-path : vbgui/package-lock.json }
9799 - uses : actions/setup-python@v5
98100 with : { python-version: "3.13" }
101+ - name : Bind E2E backend to the selected Python
102+ run : echo "VBGUI_E2E_PYTHON=$(command -v python)" >> "$GITHUB_ENV"
99103 - run : |
100104 python -m pip install --upgrade pip
101105 pip install -e ".[gui,parquet,widget]"
@@ -107,7 +111,7 @@ jobs:
107111 npm ci
108112 npm run typecheck
109113 - working-directory : vbgui
110- run : npx playwright install --with-deps chromium
114+ run : npx playwright install chromium
111115 - working-directory : vbgui
112116 env : { NODE_ENV: development, CI: "1" }
113117 run : |
@@ -131,7 +135,7 @@ jobs:
131135 mini-train-matrix :
132136 name : Mini-train matrix (macOS, nightly)
133137 if : github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
134- runs-on : macos-latest
138+ runs-on : [self-hosted, macOS, ARM64, cppmega-mlx-macos]
135139 timeout-minutes : 60
136140 steps :
137141 - uses : actions/checkout@v4
@@ -140,6 +144,8 @@ jobs:
140144 cache-dependency-path : vbgui/package-lock.json }
141145 - uses : actions/setup-python@v5
142146 with : { python-version: "3.13" }
147+ - name : Bind E2E backend to the selected Python
148+ run : echo "VBGUI_E2E_PYTHON=$(command -v python)" >> "$GITHUB_ENV"
143149 - run : |
144150 python -m pip install --upgrade pip
145151 pip install -e ".[gui,parquet,widget]"
@@ -151,7 +157,7 @@ jobs:
151157 npm ci
152158 npm run typecheck
153159 - working-directory : vbgui
154- run : npx playwright install --with-deps chromium
160+ run : npx playwright install chromium
155161 - working-directory : vbgui
156162 env : { NODE_ENV: development, CI: "1" }
157163 run : |
@@ -172,7 +178,7 @@ jobs:
172178 matrix-report :
173179 name : Matrix report
174180 needs : [preset-matrix, specialised]
175- runs-on : ubuntu-latest
181+ runs-on : [self-hosted, Linux, X64, cppmega-mlx]
176182 if : always()
177183 steps :
178184 - uses : actions/checkout@v4
0 commit comments