{"adoption": {"forks": 510, "observed_at": "2026-08-28T04:08:07.866053+00:00", "stars": 3517}, "canonical_url": "https://ross.abutalabs.com/products/parallel_tests", "card": {"archived": false, "artifact_type": "library", "description": "Ruby: 2 CPUs = 2x Testing Speed for RSpec, Test::Unit and Cucumber", "domain": ["testing", "developer-tools", "web-development"], "enriched": true, "function": ["testing", "e2e-testing", "concurrency", "cli"], "health_score": 71, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["grosser/parallel_tests"], "name": "grosser/parallel_tests", "platform": ["ruby", "cli", "cross-platform"], "pushed_at": "2026-06-04T21:37:34+00:00", "repo": "grosser/parallel_tests", "stars": 3517, "tags": ["rspec", "cucumber", "minitest", "test-parallelization", "rails", "spinach", "turnip"], "topics": [], "urls": [], "use_cases": ["speed up slow rspec test suite", "run cucumber features in parallel", "parallelize tests in CI to reduce build time", "run tests with a separate database per process", "split tests into balanced groups by runtime", "run arbitrary rake tasks in parallel"], "what_it_is": "A Ruby gem that speeds up test suites by splitting Minitest, RSpec, Cucumber, Spinach, and Turnip tests into balanced groups and running them in parallel across CPU cores, with one database per process. It integrates with Rails via rake tasks for creating, migrating, and preparing parallel test databases.", "when_to_avoid": ["your test suite is already fast or too small to benefit from parallelization", "your tests cannot run in isolation or share mutable global state", "you are not working in Ruby"], "when_to_choose": ["you have a large Ruby/Rails test suite that takes too long to run", "you use RSpec, Minitest, or Cucumber and have multiple CPU cores", "you want per-process test databases with automatic setup rake tasks"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/parallel_tests", "repo": "grosser/parallel_tests", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.866053+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:35:34.397278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a4d54e0c75a21148108fbbab48d53e02da59faf3d6ff48e3ddbef0800e7c9f0", "fetched_at": "2026-08-28T04:08:07.866053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grosser/parallel_tests"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 85, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6317, "days_push": 90, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}