Skip to content
CAI
Software that uses CAICheck a score

grosser/parallel_tests

72.0

Strong · 28 September 2026

1.6k

lines of production code

Ruby

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the parallel\_tests library, a Ruby tool designed to accelerate test suite execution by distributing tests across multiple processes. It provides specialized runners and grouping strategies for RSpec, Minitest, Cucumber, and Spinach, ensuring balanced load distribution and reliable output handling. The library manages process coordination, runtime logging, and failure reporting to support efficient parallel testing workflows.

How it got here

2009–2010 — parallel\_tests library initialization

7 changes.

This period marks the initial release and configuration of the parallel\_tests library, establishing core infrastructure for running RSpec, Cucumber, and Spinach tests in parallel. The work involved setting up project standards, implementing CLI entry points, and creating a comprehensive test suite to validate the new parallel execution logic. It also included early dependency updates to support modern Ruby and Rails versions.

2012 — Test runner infrastructure and logging

7 changes.

This period focused on establishing robust parallel execution infrastructure for Minitest 5, RSpec 3, and Cucumber, introducing dedicated runners and runtime logging mechanisms. Comprehensive test suites were added to verify the correctness of these new components, including CLI argument parsing, test grouping strategies, and failure reporting.

2013–2025 — Gherkin parallelization and Spinach support

4 changes.

This period focused on enhancing parallel test execution for BDD frameworks, introducing a new Gherkin runner with scenario-level grouping and output locking to ensure parallel safety. It also added support for the Spinach BDD test runner and expanded test coverage for Gherkin integration. Additionally, a Rails 7.2 fixture was added to support testing against the latest framework version.

Features

Add Spinach BDD test runner support

Users can now run Spinach BDD tests in parallel. A new runner class has been added that inherits from the existing Gherkin runner, configuring the default test folder to 'features' and explicitly disabling runtime logging as it is not yet supported for this framework.

_lib/parallel\tests/spinach · high confidence

Add dedicated CLI entry points for RSpec, Cucumber, and Spinach

Users can now run parallel tests for specific frameworks using dedicated executable scripts: \parallel\_rspec\, \parallel\_cucumber\, and \parallel\_spinach\. These new binaries in the \bin/\ directory automatically configure the \ParallelTests::CLI\ with the appropriate test type, providing a convenient alternative to passing the \--type\ flag manually when invoking the generic \parallel\_test\ command.

bin · high confidence

Added Minitest 5 runtime logging and test runner infrastructure

This change introduces the core runner and runtime logging components for the Minitest test suite. The new \ParallelTests::Test::Runner\ class handles test file discovery, grouping (by filesize, runtime, or found order), and command execution, including support for environment variables like \TEST\_ENV\_NUMBER\ and \PARALLEL\_TEST\_GROUPS\. A new \ParallelTests::Test::RuntimeLogger\ class is added, which uses Minitest 5's \prepend\ mechanism to automatically record test execution times to a log file, enabling future optimizations based on historical performance data.

_lib/parallel\tests/test · high confidence

Project initialization and configuration setup

The repository has been initialized with essential configuration files to standardize development and testing workflows. A \.gitignore\ file is added to exclude build artifacts, temporary directories, and IDE settings. An \.rspec\ configuration file is introduced to enforce colorized output, random test ordering, and the exclusion of fixture files from test runs. Additionally, a \.rubocop.yml\ configuration file is added to define code style rules, setting the target Ruby version to 3.2 and disabling specific metrics and style checks to suit the project's conventions. A \LICENSE\ file (MIT) is also included to clarify usage rights.

(repo-wide) · high confidence

Removals

Removed legacy parallel spec execution task

The \tasks/parallel\_specs.rake\ file has been deleted, removing the legacy \spec:parallel\ rake task that previously allowed running RSpec tests across multiple processes by copying test environment files and forking processes. This change eliminates the underlying implementation for parallel test execution in this specific task file, likely as part of a migration to a different parallelization strategy or gem.

tasks · high confidence

Behavioural changes

Improved Cucumber parallel execution with scenario-level grouping and failure logging

The Cucumber runner now supports grouping tests by individual scenarios (including ScenarioOutlines) and steps, providing more balanced parallel distribution. It introduces a dedicated FailuresLogger that outputs failed scenarios in a rerun-friendly format and a ScenarioLineLogger to accurately track scenario execution. These changes rely on the cuke\_modeler gem (\~\> 3.0) for parsing Gherkin features and improve the accuracy of parallel test execution and failure reporting.

_lib/parallel\tests/cucumber · high confidence

New Gherkin runner with scenario-level grouping and parallel-safe output

The \lib/parallel\_tests/gherkin\ directory now contains a complete, new implementation for running Gherkin (Cucumber) tests in parallel. This includes a new \Runner\ class that supports grouping tests by individual scenarios (\group\_by: :scenarios\) to improve load balancing, and a \Listener\ that accurately counts steps and scenarios, including those in outlines and backgrounds. To prevent output corruption when multiple processes run simultaneously, a new \Io\ module provides file locking (\lock\_output\) for the \RuntimeLogger\, which now uses the Cucumber events API to track and report per-file execution times.

_lib/parallel\tests/gherkin · high confidence

New RSpec logging and runner infrastructure

The RSpec test runner now uses a dedicated set of formatters to improve output clarity and parallel execution reliability. A new base logger class handles file locking to prevent race conditions when multiple processes write to the same log. Specific loggers have been introduced: a verbose logger that displays real-time per-example status (STARTED, PASSED, FAILED, PENDING) with process IDs, a runtime logger that records and sorts example execution times for performance analysis, a failures logger that outputs colorized rerun commands for failed examples, and a summary logger. The runner itself has been refactored to support RSpec 3 as the default, includes binstub detection, and adds colorized summary output for the console.

_lib/parallel\tests/rspec · high confidence

Parallel Tests 5.8.0 release

This update introduces version 5.8.0 of the Parallel Tests library, adding new files for the CLI, grouper, PID management, and Rails integration. The CLI now supports graceful shutdown handling for interrupt signals and manages process groups more robustly. The Grouper component has been refactored to handle test grouping by steps and scenarios, with support for isolating specific tests into separate processes. The PID manager now uses JSON for storing process IDs, and the Rails tasks have been updated to support multiple databases in Rails 6.1+ and to respect the PARALLEL\_RAILS\_ENV environment variable.

_lib/parallel\tests · high confidence

Test coverage

Added Rails 7.2 fixture for testing; Added comprehensive test suite for CLI, Grouper, PID management, and Rake tasks; Added comprehensive test suite for parallel test execution and configuration; Added test coverage for Cucumber and Spinach parallel runners; Added test coverage for RSpec logger and runner components; Added test coverage for the Test runner and Runtime Logger; Added tests for Gherkin listener and runner behavior; Initial release of parallel\_tests library.

Dependencies

Add Rails 7.2 fixture and update development dependencies

This change introduces a new Rails 7.2 test fixture (spec/fixtures/rails72) to allow parallel\_tests to be tested against the latest Rails version, ensuring compatibility with Rails 7.2.2.1. Additionally, the project's own Gemfile and gemspec have been updated: the gemspec now enforces a minimum Ruby version of 3.2.0 and includes metadata for RubyG.org (including MFA requirements and changelog links), while the Gemfile adds development dependencies such as RuboCop (locked to \~\> 1.73.1), Cucumber (10.0.0), and Spinach to support modern testing and linting workflows.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 67 → 72 (+5.4)
  • Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 99 → 99 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 56 → 59 (+3.3)
  • Readiness 63 → 75 (+12.0)
  • Security 80 → 85 (+5.1)

Resolved (4)

  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Outdated: cuke_modeler
  • Outdated: minitest

New (1)

  • Hotspot: lib/parallel_tests/cli.rb (lib/parallel_tests/cli.rb)

Changes since last survey

  • 6 commits — 5 feature/other, 1 fixes

By area

  • (root) — 6 commits

Notable commits

  • fix: Fixes 840 | Sync test env with group (#1036)
  • change: improve cli docs
  • change: retry (#1039)
  • change: test (#1037)
  • change: test (#1038)
  • change: v5.8.0

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

grosser/parallel_tests was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ff7c3e3584e715166d826a2eecc3b875614213d8 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.