Skip to content

ci: split module tests into separate job to prevent shard 0 timeouts#655

Merged
torlando-tech merged 2 commits intomainfrom
ci/split-module-tests
Mar 11, 2026
Merged

ci: split module tests into separate job to prevent shard 0 timeouts#655
torlando-tech merged 2 commits intomainfrom
ci/split-module-tests

Conversation

@torlando-tech
Copy link
Copy Markdown
Owner

Summary

  • Moves :reticulum and :data module tests out of Kotlin test shard 0 into a new module-tests job
  • Shard 0 was overloaded (~12min vs ~9-10min for other shards), causing intermittent 15min timeout failures on slow CI runners
  • New job runs in parallel with existing app test shards, wired into ci-passed gate

Test plan

  • All 4 app test shards pass
  • New Module Tests (reticulum + data) job passes
  • ci-passed gate correctly depends on the new job

🤖 Generated with Claude Code

Shard 0/4 was running both app sharded tests AND :reticulum/:data
module tests, making it ~12min vs ~9-10min for other shards. With
a 15min timeout this caused intermittent timeout failures on slow
CI runners.

Moves :reticulum and :data tests into a new `module-tests` job
that runs in parallel with the app test shards.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 11, 2026

Greptile Summary

This PR splits :reticulum and :data module tests out of kotlin-tests shard 0 (which was consistently ~12 min vs. ~9–10 min for other shards, causing intermittent 15-min timeout failures) into a new parallel module-tests job. The new job runs after lint and validate-wrapper — same as the other test jobs — and is correctly wired into the ci-passed gate via both its needs declaration and the shell failure-check condition.

  • The previously raised concern about the missing Robolectric SDK cache has been fully addressed: Clean AIDL generated code, Clean JaCoCo execution data, and Cache Robolectric Android SDKs steps are all present and identical to the kotlin-tests job.
  • The ci-passed needs array and failure-check condition both include module-tests, so the gate will block on failures from the new job.
  • One minor gap: the success summary table in the CI Summary step was not updated to include a Module Tests row, even though the failure table was. This creates a cosmetic inconsistency in the step summary output.

Confidence Score: 4/5

  • Safe to merge — structural CI refactor with correct gate wiring and all required setup steps present.
  • The change is a well-structured CI reorganization: the new job mirrors the kotlin-tests setup exactly, the Robolectric cache concern from the prior review has been resolved, and the ci-passed gate correctly blocks on the new job. The only issue is a cosmetic omission in the success summary table, which has no impact on correctness or reliability.
  • No files require special attention beyond the minor success-summary table omission in .github/workflows/ci.yml.

Important Files Changed

Filename Overview
.github/workflows/ci.yml Moves :reticulum and :data module tests into a new parallel module-tests job; correctly includes all required setup steps (Robolectric cache, AIDL/JaCoCo clean) and wires the job into the ci-passed gate — one minor omission: the success summary table is not updated to include Module Tests.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A([validate-wrapper]) --> D
    B([lint]) --> D
    A --> E
    B --> E
    A --> F
    B --> F
    A --> G
    B --> G

    D["kotlin-tests\n(4 shards × :app tests)"]
    E["module-tests\n(:reticulum + :data tests)"]
    F["instrumented-tests"]
    G["other jobs\n(threading-audit, proguard, python-tests)"]

    D --> H
    E --> H
    F --> H
    G --> H

    H(["ci-passed\n✅ CI Passed — APK Ready"])
Loading

Comments Outside Diff (1)

  1. .github/workflows/ci.yml, line 641 (link)

    Module Tests missing from success summary table

    The failure path of the ci-passed job correctly adds a Module Tests row (line 624), but the success path (CI Summary step) was not updated — it still ends with Kotlin Tests and omits the new job. This means the green-path step summary will be inconsistent with reality.

Last reviewed commit: c7af7ee

@sentry
Copy link
Copy Markdown
Contributor

sentry bot commented Mar 11, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…ests job

Copies the Clean AIDL, Clean JaCoCo, and Cache Robolectric steps from
kotlin-tests into module-tests to prevent stale cache issues and avoid
re-downloading Robolectric SDKs on every run.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@torlando-tech
Copy link
Copy Markdown
Owner Author

@greptileai

@torlando-tech torlando-tech merged commit 35f989f into main Mar 11, 2026
15 checks passed
@torlando-tech torlando-tech deleted the ci/split-module-tests branch March 11, 2026 02:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant