From c8050b72585fc637653a055be0d5b45f47345637 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Wed, 3 Jun 2026 21:38:41 -0700 Subject: [PATCH] ci: run integration tests in isolated-mode (4-way parallel), mirroring dasImgui dasImgui's tests.yml runs the integration suite with --isolated-mode --isolated-mode-threads 4 (each test in its own subprocess, 4 in parallel on per-worker live-API ports 9090..9093). The node-editor suite was still single-threaded. with_node_editor_app is a thin wrapper over dasImgui's with_imgui_app, which already reads --worker-index and derives the per-worker --live-port, so node-editor inherits the no-collision parallelism for free. No --exclude entries: the node-editor suite has no glfw_synth/key_hud GLFW event-queue tests and no >16-POST Windows-stall tests, so dasImgui's exclude list does not apply. windows-latest stays disabled (already, matching dasImgui). Verified locally: 23/23 integration tests pass headless (116.8s single-threaded). Co-Authored-By: Claude Opus 4.8 --- .github/workflows/tests.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 614763a..4efba85 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -177,6 +177,19 @@ jobs: - name: "Run integration tests (headless)" working-directory: ${{ github.workspace }}/daslang-src + # --isolated-mode + --isolated-mode-threads 4: each test runs in its own + # subprocess, with 4 in parallel. dastest brands each subprocess argv with + # --worker-index N (N in 0..3); with_node_editor_app is a thin wrapper over + # dasImgui's with_imgui_app, which reads --worker-index and derives a + # per-worker live-API port (9090 + N), passed to the spawned daslang-live + # as --live-port. So the 4 workers bind ports 9090/9091/9092/9093 and don't + # race for 9090. Mirrors dasImgui's tests.yml (~3x wall-time reduction). + # + # No --exclude entries: unlike dasImgui, the node-editor suite has no + # GLFW-event-queue synth tests (glfw_synth / key_hud) and no >16-POST + # Windows-stall tests — every test drives synth IO through the harness and + # stays within libhv's per-subprocess POST ceiling. Add excludes here if a + # heavy test is later introduced. env: DASLIVE_HV_LOG: stderr DASLIVE_HV_LOG_LEVEL: DEBUG @@ -185,4 +198,6 @@ jobs: ${BIN_DIR}/daslang dastest/dastest.das -- \ --test modules/dasImguiNodeEditor/tests/integration \ --timeout 600 \ + --isolated-mode \ + --isolated-mode-threads 4 \ --headless