unsloth/tests/studio
Daniel Han fdf7f94f46 ci(mac): single-process Chromium + JSON.parse try/catch in pipeTransport
Run 25491698868 / job 74801076186 hit the Playwright pipeTransport
'Unexpected end of JSON input' crash on ALL THREE retry attempts
(at 11:00:52, 11:01:07, 11:01:21 — only ~15s apart). The retry-with-
Studio-reset wrapper from d35bf6a couldn't recover because the
crash hits 100% of attempts on this run, not as a rare race. Two
complementary fixes:

1. tests/studio/playwright_chat_ui.py + playwright_extra_ui.py:
   pass --single-process / --no-sandbox / --disable-dev-shm-usage /
   --disable-gpu to chromium.launch. --single-process is the key
   one: it keeps the renderer in the browser process, eliminating
   the browser↔renderer IPC pipe that was the actual crash site
   (Chromium's renderer was dying mid-startup and corrupting the
   pipe stream the Node driver was parsing).

2. .github/workflows/studio-mac-ui-smoke.yml: backport upstream
   Playwright's try/catch around the two JSON.parse(message) sites
   in driver/.../pipeTransport.js so a malformed stdout chunk
   (e.g. empty buffer between two \0 delimiters) is dropped
   silently instead of throwing and killing the entire Node driver.
   Newer Playwright versions ship this guard upstream; we patch it
   in via a python script after `playwright install chromium` so
   the fix lives only in CI's Mac job. Idempotent: prints "no
   matches; skipping" if upstream changes the pattern.

The retry loop from d35bf6a is kept as a third line of defense
for any residual Chromium-died-and-stayed-dead scenarios.
2026-05-07 11:05:32 +00:00
..
install tests/studio/install: parallel UNSLOTH_STUDIO_HOME smoke test (#5306) 2026-05-07 02:26:58 -07:00
playwright_chat_ui.py ci(mac): single-process Chromium + JSON.parse try/catch in pipeTransport 2026-05-07 11:05:32 +00:00
playwright_extra_ui.py ci(mac): single-process Chromium + JSON.parse try/catch in pipeTransport 2026-05-07 11:05:32 +00:00
run_real_mlx_smoke.py ci(mlx): use mx.get_peak_memory with mx.metal.get_peak_memory fallback 2026-05-07 08:01:31 +00:00
studio_api_smoke.py CI(api-smoke): route status lines via os.write to dodge CodeQL false-positive 2026-05-07 06:16:04 +00:00
test_cancel_atomicity.py Studio: make stop button actually stop generation (#5069) 2026-04-24 10:09:25 -07:00
test_cancel_id_wiring.py Studio: make stop button actually stop generation (#5069) 2026-04-24 10:09:25 -07:00
test_chat_preset_builtin_invariants.py Studio: Dark theme refactor, right sidebar redesign, and chat UI polish (#5150) 2026-05-07 14:33:31 +04:00
test_cli_repo_variant.py Studio: forward llama-server args from unsloth studio run , activate unsloth run , and allow passing model:quant to load models (#5271) 2026-05-04 17:08:04 +04:00
test_cli_run_alias.py Studio: forward llama-server args from unsloth studio run , activate unsloth run , and allow passing model:quant to load models (#5271) 2026-05-04 17:08:04 +04:00
test_cli_studio_defaults.py Default Studio host to 127.0.0.1 and prompt before auto-start (#5267) 2026-05-04 13:03:16 +04:00
test_export_output_path_contract.py feat(studio): MLX training tab on Apple Silicon (LoRA / full FT, VLM, export) (#5265) 2026-05-05 23:54:58 -07:00
test_hardware_dispatch_matrix.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-05-07 03:33:12 +00:00
test_is_mlx_dispatch_gate.py feat(studio): MLX training tab on Apple Silicon (LoRA / full FT, VLM, export) (#5265) 2026-05-05 23:54:58 -07:00
test_llama_cpp_wall_clock_cap.py Studio: make stop button actually stop generation (#5069) 2026-04-24 10:09:25 -07:00
test_mlx_training_worker_behaviors.py feat(studio): MLX training tab on Apple Silicon (LoRA / full FT, VLM, export) (#5265) 2026-05-05 23:54:58 -07:00
test_stream_cancel_registration_timing.py Studio: make stop button actually stop generation (#5069) 2026-04-24 10:09:25 -07:00
test_studio_gguf_export_script_pin.py Pin Studio GGUF export to llama.cpp's local convert script (#5275) 2026-05-05 04:03:28 -07:00
test_studio_text_descender_clipping.py Studio: Fix clipped model selector text descenders (#5210) 2026-04-29 02:51:25 -07:00