Skip to content

Improve unit test times with isolated parallel workers#225

Merged
klemen1999 merged 7 commits into
mainfrom
feat/improve-test-times
Jul 21, 2026
Merged

Improve unit test times with isolated parallel workers#225
klemen1999 merged 7 commits into
mainfrom
feat/improve-test-times

Conversation

@rolandocortez

@rolandocortez rolandocortez commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Purpose

Reduce the CI test critical path by optimizing both the unit-test and E2E workflows.

For unit tests, independent model conversions now run in parallel with two pytest-xdist workers. Each worker uses an isolated temporary workspace for downloaded models, subprocess execution, conversion outputs, validation, and cleanup.

For E2E tests, Ubuntu retains full coverage of all 101 public cases using ten duration-balanced serial shards. Windows and macOS run a representative 30-case suite using two balanced shards per platform.

The representative suite covers the available CLI conversion routes while avoiding the cost of repeating the complete model matrix on every operating system. Tests that use the same physical model weights remain grouped where applicable, allowing weight reuse without introducing unsafe concurrent access to shared conversion resources.

Specification

Unit tests

  • Added pytest-xdist as a development dependency.
  • Added one session-scoped temporary workspace per pytest worker.
  • Updated unit tests to:
    • download models into the current worker workspace
    • pass absolute model paths to the CLI
    • run conversion subprocesses from the worker workspace
    • validate NNArchive outputs from the corresponding workspace
  • Updated cleanup fixtures to:
    • clean isolated workspace artifacts for unit tests
    • preserve the existing repository-root behavior for E2E tests
  • Updated the unit-test CI workflow to use:
    • -n 2
    • --dist load
    • session-level weight reuse
  • Preserved subprocess coverage collection by setting absolute coverage paths before starting conversions from the isolated workspaces.
  • Updated the unit-test documentation with the parallel command.

E2E tests

  • Added checked-in deterministic E2E shard assignments generated from hosted CI timing data.
  • Added two E2E suites:
    • full: all 101 public E2E cases
    • representative: 30 CLI conversion cases covering the available conversion routes
  • Updated the GitHub Actions topology to run:
    • Ubuntu: the full suite using 10 shards
    • Windows: the representative suite using 2 shards
    • macOS: the representative suite using 2 shards
  • The full 10-shard assignment contains:
    • 11 tests
    • 9 tests
    • 9 tests
    • 11 tests
    • 11 tests
    • 10 tests
    • 9 tests
    • 11 tests
    • 11 tests
    • 9 tests
  • The representative 2-shard assignment contains:
    • 14 tests
    • 16 tests
  • Kept execution serial inside each shard to avoid unsafe concurrent access to conversion outputs and shared tooling resources.
  • Retained downloaded weights for the duration of each shard.
  • Kept the three private E2E tests on shard 0 only for each operating system.
  • Added explicit pytest options:
    • --e2e-suite
    • --e2e-shard-index
    • --e2e-shard-count
  • The checked-in assignments currently support:
    • full suite with 3 or 10 shards
    • representative suite with 2 shards
  • Unsupported suite and shard-count combinations fail with a clear message.

Dependencies & Potential Impact

Adds:

  • pytest-xdist>=3.6.1

The unit-test workflow deliberately uses two workers instead of -n auto.

In the controlled unit-test benchmark, mean peak aggregate process-tree RSS increased from approximately 1253 MiB during serial execution to 2321 MiB with two workers. This measurement may count some shared pages more than once, but it still supports using a fixed worker count to avoid unnecessary memory pressure on CI runners.

The isolated unit-test workspaces can contain the same model in more than one worker when both workers need it. The measured parallel runs contained 11 weight files representing 10 unique models, with yolov8n present in both workspaces.

E2E sharding increases the number of concurrent CI jobs, but the representative Windows and macOS suites substantially reduce total runner usage compared with running the full suite on every platform.

The latest hosted E2E run completed successfully in 33 minutes and 11 seconds:

  • Ubuntu full suite:
    • 10 shards
    • approximately 15 to 17.5 minutes per shard
  • Windows representative suite:
    • 2 shards
    • approximately 11 minutes per shard
  • macOS representative suite:
    • 2 shards
    • approximately 10 to 11 minutes of execution per shard

The macOS jobs were queued and executed sequentially during this run, making macOS availability the critical path. Queueing may vary depending on shared GitHub Actions capacity. The tested 10/2/2 topology keeps the workflow simple while preserving full Ubuntu coverage and representative cross-platform coverage.

The coverage workflow also updated media/coverage_badge.svg automatically.

No product code or vendored submodules are modified.

Testing & Validation

Unit-test benchmark

A controlled ABBA comparison was run against the same 27-test conversion suite, using a fresh temporary workspace for every execution:

Mode Mean wall time
Serial 179.72 s
2 workers 97.07 s

Results:

  • 82.65 seconds saved on average
  • 45.99% runtime reduction
  • 1.85x speedup

Final local validation

  • All 32 current unit tests passed with two workers.
  • All 9 telemetry tests passed.
  • Pre-commit and git diff --check passed.
  • All 104 E2E cases collect successfully.
  • The full 10-shard public collections contain:
    • 11, 9, 9, 11, 11, 10, 9, 11, 11, and 9 tests
  • The full shard union contains exactly 101 public tests.
  • The representative 2-shard collections contain:
    • 14 tests
    • 16 tests
  • The representative shard union contains exactly 30 public tests.
  • The representative suite is a proper subset of the full suite.
  • No public test appears in more than one shard within either assignment.
  • Collection-drift validation detects both missing and stale assignments.
  • Unsupported suite and shard-count combinations are rejected.
  • Existing --delete-weights-now behavior remains compatible.
  • Python 3.8 dependency resolution selects pytest-xdist 3.6.1.
  • Repository isolation checks passed without leaving weights or conversion outputs in the working tree.

Hosted E2E validation

The successful 10/2/2 hosted E2E run completed in 33 minutes and 11 seconds.

Observed execution times:

  • Ubuntu full suite:
    • fastest shard: 14 minutes 59 seconds
    • slowest shard: 17 minutes 33 seconds
  • Windows representative suite:
    • shard 0: 11 minutes 14 seconds
    • shard 1: 10 minutes 47 seconds
  • macOS representative suite:
    • shard 0: 9 minutes 55 seconds
    • shard 1: 10 minutes 59 seconds

All 14 jobs completed successfully.

Deployment Plan

No deployment required.

Rollout:

  • review the successful hosted 10/2/2 E2E run
  • confirm that private E2E tests run only on shard 0
  • monitor runtime stability and macOS queueing in subsequent PR runs
  • merge after review and successful checks

Rollback:

  • revert the E2E sharding commits to restore one serial E2E job per operating system
  • revert the unit-test parallelization changes to restore serial unit-test execution and per-test weight cleanup

Monitoring:

  • unit-test runtime across the CI matrix
  • E2E shard balance and total wall-clock runtime
  • CI runner usage and queueing
  • memory-related failures or instability
  • model-download and DNS failures
  • coverage generation
  • reviewer feedback on shard configurability and workspace isolation

AI Usage

Assisted-by: ChatGPT

Summary by CodeRabbit

  • Tests
    • Accelerated automated testing with parallel pytest runs and improved coverage reporting across environments.
    • Sharded end-to-end test execution (by suite and index) to reduce runtime while maintaining deterministic coverage.
    • Improved reliability by isolating temporary workspace artifacts per test and cleaning up generated outputs/weights more safely.
    • Expanded validation for explicit model versions, input sizes, encodings, and class names with workspace-scoped output checks.
  • Documentation
    • Updated testing guidance with revised commands and clarified cleanup disk-space vs runtime trade-offs.
  • Chores
    • Added pytest-xdist to support parallel test execution.

@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Unit tests now run in parallel with worker-specific temporary workspaces, while E2E tests are divided across deterministic full and representative suites. Coverage paths, artifact cleanup, archive validation, shard selection, and workflow gating are updated for parallel execution.

Changes

Test Execution

Layer / File(s) Summary
Unit-test workspace isolation
tests/conftest.py, tests/helper_functions.py, tests/test_unittests.py
Tests prepare models, run the CLI, clean artifacts, and validate archives within worker-specific workspaces.
Unit-test parallel CI execution
.github/workflows/unittests.yaml, requirements-dev.txt, tests/README.md
Development requirements, CI commands, coverage paths, and documented commands enable two-worker pytest execution with updated weight handling.
Deterministic E2E sharding
tests/e2e_shards.py
A pytest plugin defines full and representative assignments, validates shard options and nodeids, and selects the requested shard.
E2E workflow shard wiring
.github/workflows/end2end_tests.yaml
Full and representative workflows run shard matrices, pass shard arguments to pytest, and gate private-model setup and execution to the first eligible shard.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Suggested reviewers: klemen1999

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant Pytest
  participant E2EShardPlugin
  GitHubActions->>Pytest: pass suite, shard index, and shard count
  Pytest->>E2EShardPlugin: collect E2E tests
  E2EShardPlugin->>Pytest: validate assignments and deselect other shards
  Pytest->>GitHubActions: execute selected shard
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is clear and relevant: it captures the unit test parallelization and isolated worker work, which is a major part of the PR.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/improve-test-times

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@rolandocortez
rolandocortez requested a review from klemen1999 July 15, 2026 19:18

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
tests/README.md (1)

21-25: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Add language identifier to fenced code block.

Specifying a language for the fenced code block improves syntax highlighting and resolves a markdownlint warning.

♻️ Proposed fix
-```
+```bash
 pytest tests/test_unittests.py -n 2 --dist load --download-weights --log-cli-level=INFO --log-file=out.log --log-file-level=DEBUG
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @tests/README.md around lines 21 - 25, Update the fenced command block in the
tests README to specify the bash language identifier, preserving the existing
pytest command unchanged.


</details>

<!-- cr-comment:v1:46eb3ed9d26b48d1f77dd292 -->

_Source: Linters/SAST tools_

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @tests/README.md:

  • Around line 21-25: Update the fenced command block in the tests README to
    specify the bash language identifier, preserving the existing pytest command
    unchanged.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: defaults

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `789f4b11-3fad-4515-ba03-2ef80ad207b3`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 01b44ad8dbefbcceaedbcaef48950f2ab04a354a and 649c30a36d666eec02a0cd601fa4f0301967b36b.

</details>

<details>
<summary>📒 Files selected for processing (6)</summary>

* `.github/workflows/unittests.yaml`
* `requirements-dev.txt`
* `tests/README.md`
* `tests/conftest.py`
* `tests/helper_functions.py`
* `tests/test_unittests.py`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown

☂️ Python Coverage

current status: ✅

Overall Coverage

Lines Covered Coverage Threshold Status
1935 1123 58% 0% 🟢

New Files

No new covered files...

Modified Files

No covered modified files...

updated for commit: 9d3ef11 by action🐍

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown

Test Results

  6 files    6 suites   13m 31s ⏱️
 32 tests  32 ✅ 0 💤 0 ❌
192 runs  192 ✅ 0 💤 0 ❌

Results for commit 9d3ef11.

♻️ This comment has been updated with latest results.

@rolandocortez
rolandocortez force-pushed the feat/improve-test-times branch from 4486f07 to f77bed7 Compare July 17, 2026 13:58

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
tests/test_unittests.py (1)

101-103: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Include CLI output in assertion failure messages.

When a negative test fails (e.g., the CLI succeeds when it was expected to fail, or fails with an unexpected error code), the assertion message only prints the exit codes. Appending result.stdout to these messages will make debugging CI failures significantly easier by revealing the actual error or unexpected output.

  • tests/test_unittests.py#L101-L103: Append \nOutput:\n{result.stdout} to the assertion message string.
  • tests/test_unittests.py#L150-L152: Append \nOutput:\n{result.stdout} to the assertion message string.
  • tests/test_unittests.py#L196-L198: Append \nOutput:\n{result.stdout} to the assertion message string.
  • tests/test_unittests.py#L238-L240: Append \nOutput:\n{result.stdout} to the assertion message string.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_unittests.py` around lines 101 - 103, Append the CLI output to
each exit-code assertion failure message in tests/test_unittests.py at lines
101-103, 150-152, 196-198, and 238-240, using result.stdout with the “Output”
label. Update the assertion messages associated with the affected test checks
while preserving their existing exit-code details.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@tests/test_unittests.py`:
- Around line 101-103: Append the CLI output to each exit-code assertion failure
message in tests/test_unittests.py at lines 101-103, 150-152, 196-198, and
238-240, using result.stdout with the “Output” label. Update the assertion
messages associated with the affected test checks while preserving their
existing exit-code details.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: afc547ca-3750-449a-9767-84840e0372af

📥 Commits

Reviewing files that changed from the base of the PR and between 649c30a and f77bed7.

⛔ Files ignored due to path filters (1)
  • media/coverage_badge.svg is excluded by !**/*.svg
📒 Files selected for processing (8)
  • .github/workflows/end2end_tests.yaml
  • .github/workflows/unittests.yaml
  • requirements-dev.txt
  • tests/README.md
  • tests/conftest.py
  • tests/e2e_shards.py
  • tests/helper_functions.py
  • tests/test_unittests.py
🚧 Files skipped from review as they are similar to previous changes (4)
  • requirements-dev.txt
  • tests/helper_functions.py
  • .github/workflows/unittests.yaml
  • tests/README.md

rolandocortez and others added 6 commits July 20, 2026 14:42
Add a shared ten-shard assignment while preserving the existing three-shard fallback.

Run ten E2E shards per platform and fail explicitly when the public E2E collection drifts from the checked-in assignments.
@rolandocortez
rolandocortez force-pushed the feat/improve-test-times branch from f338409 to 2aad6cc Compare July 20, 2026 12:53

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
tests/test_unittests.py (2)

306-308: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove redundant pytest import.

pytest is already imported at the module level (line 7), making this local import unnecessary.

♻️ Proposed fix
 def test_e2e_shard_assignment_detects_collection_drift():
     import importlib
-
-    import pytest
 
     e2e_shards = importlib.import_module("e2e_shards")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_unittests.py` around lines 306 - 308, Remove the redundant local
pytest import near the affected test code in tests/test_unittests.py, while
retaining the existing module-level import. Do not change the test behavior or
other imports.

304-310: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove redundant pytest import.

pytest is already imported at the module level (line 7), making this local import unnecessary.

♻️ Proposed fix
 def test_e2e_shard_assignment_detects_collection_drift():
     import importlib
-
-    import pytest
 
     e2e_shards = importlib.import_module("e2e_shards")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_unittests.py` around lines 304 - 310, Remove the redundant local
pytest import from test_e2e_shard_assignment_detects_collection_drift, relying
on the existing module-level import while leaving the test’s other imports and
behavior unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/end2end_tests.yaml:
- Around line 54-56: Update the google-github-actions/auth step to reference a
reviewed, trusted 40-character commit SHA instead of the mutable `@v2` tag, while
preserving the existing authentication configuration and condition.
- Line 25: Update the E2E workflow matrix’s shard list to contain exactly three
shards, and change the corresponding --e2e-shard-count argument to 3 so both
values match the supported configuration.

---

Nitpick comments:
In `@tests/test_unittests.py`:
- Around line 306-308: Remove the redundant local pytest import near the
affected test code in tests/test_unittests.py, while retaining the existing
module-level import. Do not change the test behavior or other imports.
- Around line 304-310: Remove the redundant local pytest import from
test_e2e_shard_assignment_detects_collection_drift, relying on the existing
module-level import while leaving the test’s other imports and behavior
unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e353ecbe-cf24-431b-ac66-1b8270c2cd17

📥 Commits

Reviewing files that changed from the base of the PR and between f77bed7 and 2aad6cc.

⛔ Files ignored due to path filters (1)
  • media/coverage_badge.svg is excluded by !**/*.svg
📒 Files selected for processing (8)
  • .github/workflows/end2end_tests.yaml
  • .github/workflows/unittests.yaml
  • requirements-dev.txt
  • tests/README.md
  • tests/conftest.py
  • tests/e2e_shards.py
  • tests/helper_functions.py
  • tests/test_unittests.py
🚧 Files skipped from review as they are similar to previous changes (6)
  • requirements-dev.txt
  • tests/README.md
  • tests/helper_functions.py
  • .github/workflows/unittests.yaml
  • tests/e2e_shards.py
  • tests/conftest.py

Comment thread .github/workflows/end2end_tests.yaml
Comment thread .github/workflows/end2end_tests.yaml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
.github/workflows/end2end_tests.yaml (1)

24-24: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Align the workflow to the supported E2E shard count.

The job configures ten shards, but the underlying test suite requires exactly three shards and rejects unsupported counts. Update both the matrix and the CLI argument to match the supported count of 3.

  • .github/workflows/end2end_tests.yaml#L24-L24: Change the shard matrix list to [0, 1, 2].
  • .github/workflows/end2end_tests.yaml#L51-L51: Change the argument --e2e-shard-count 10 to --e2e-shard-count 3.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/end2end_tests.yaml at line 24, Update
.github/workflows/end2end_tests.yaml at lines 24-24 and 51-51: change the shard
matrix to [0, 1, 2] and change the E2E CLI argument from --e2e-shard-count 10 to
--e2e-shard-count 3.
🧹 Nitpick comments (2)
.github/workflows/end2end_tests.yaml (1)

31-31: 🔒 Security & Privacy | 🔵 Trivial | 💤 Low value

Disable credential persistence in checkout.

The actions/checkout step persists the GitHub token in the local git config by default. Since these jobs do not push back to the repository, you can disable this to reduce the risk of credential exposure if a later step is compromised.

  • .github/workflows/end2end_tests.yaml#L31-L31: Add persist-credentials: false to the with block.
  • .github/workflows/end2end_tests.yaml#L79-L79: Add persist-credentials: false to the with block.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/end2end_tests.yaml at line 31, Disable checkout credential
persistence by adding persist-credentials: false to the with blocks of both
actions/checkout steps at .github/workflows/end2end_tests.yaml lines 31-31 and
79-79.

Source: Linters/SAST tools

tests/e2e_shards.py (1)

314-317: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove redundant parentheses. The codebase contains several instances of unnecessary wrapping parentheses around variables and strings, which can be safely removed for cleaner syntax.

  • tests/e2e_shards.py#L314-L317: remove parentheses around REPRESENTATIVE_E2E_SHARD_ASSIGNMENTS_BY_COUNT.
  • tests/e2e_shards.py#L342-L348: remove parentheses around the help string.
  • tests/e2e_shards.py#L437-L440: remove parentheses around REPRESENTATIVE_PUBLIC_NODEIDS.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/e2e_shards.py` around lines 314 - 317, Remove the redundant wrapping
parentheses in tests/e2e_shards.py at lines 314-317 around
REPRESENTATIVE_E2E_SHARD_ASSIGNMENTS_BY_COUNT, lines 342-348 around the help
string, and lines 437-440 around REPRESENTATIVE_PUBLIC_NODEIDS; preserve the
existing values and behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In @.github/workflows/end2end_tests.yaml:
- Line 24: Update .github/workflows/end2end_tests.yaml at lines 24-24 and 51-51:
change the shard matrix to [0, 1, 2] and change the E2E CLI argument from
--e2e-shard-count 10 to --e2e-shard-count 3.

---

Nitpick comments:
In @.github/workflows/end2end_tests.yaml:
- Line 31: Disable checkout credential persistence by adding
persist-credentials: false to the with blocks of both actions/checkout steps at
.github/workflows/end2end_tests.yaml lines 31-31 and 79-79.

In `@tests/e2e_shards.py`:
- Around line 314-317: Remove the redundant wrapping parentheses in
tests/e2e_shards.py at lines 314-317 around
REPRESENTATIVE_E2E_SHARD_ASSIGNMENTS_BY_COUNT, lines 342-348 around the help
string, and lines 437-440 around REPRESENTATIVE_PUBLIC_NODEIDS; preserve the
existing values and behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 34b6bfd5-e1b0-42a9-9b66-2e76ca0e5b16

📥 Commits

Reviewing files that changed from the base of the PR and between 2aad6cc and 9d3ef11.

📒 Files selected for processing (3)
  • .github/workflows/end2end_tests.yaml
  • tests/e2e_shards.py
  • tests/test_unittests.py

@klemen1999 klemen1999 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM thanks

@klemen1999
klemen1999 merged commit 0338cfc into main Jul 21, 2026
28 checks passed
@klemen1999
klemen1999 deleted the feat/improve-test-times branch July 21, 2026 20:35
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.

3 participants