From 3c9ac14d4393c4140c7bb8986a88ffb93af3a0d3 Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Thu, 25 Jun 2026 09:48:09 +0200 Subject: [PATCH] ci: run only deterministic unit suites in Test Suite workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Unit Tests job ran the entire tests/ tree, which includes provider graph tests (tests/graphs/*), integration tests and browser/network suites. Without API keys these fail, and tests/test_chromium.py launches a real headless browser that hangs forever — the last run was killed at GitHub's 6h limit. Narrow CI to the 9 deterministic, mock-based suites (56 tests, ~3s), drop the unused Playwright browser install, and add timeout-minutes: 15 so a future hang can't burn the full runner budget. The excluded suites should be re-added once mocked or gated behind markers + secrets. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/test-suite.yml | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index 677332de..28958ba4 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -11,6 +11,8 @@ jobs: unit-tests: name: Unit Tests runs-on: ubuntu-latest + # Hard cap so a hanging test can never burn the full 6h runner budget again. + timeout-minutes: 15 steps: - name: Checkout code @@ -27,8 +29,21 @@ jobs: - name: Install dependencies run: uv sync - - name: Install Playwright browsers - run: uv run playwright install chromium - + # Run only the deterministic, mock-based unit suites. The provider graph + # tests (tests/graphs/*), integration tests (tests/integration/*) and the + # browser/network suites (e.g. tests/test_chromium.py) require real API + # keys or live network/browsers, so in CI they either fail or hang + # indefinitely. They should be re-added here once mocked or gated behind + # markers + secrets. - name: Run unit tests - run: uv run pytest tests/ -m "unit or not integration" + run: > + uv run pytest + tests/test_batch_api.py + tests/test_csv_scraper_multi_graph.py + tests/test_depth_search_graph.py + tests/test_json_scraper_graph.py + tests/test_minimax_models.py + tests/test_scrape_do.py + tests/test_search_graph.py + tests/utils/convert_to_md_test.py + tests/utils/parse_state_keys_test.py