
Compare Test Runs
- 194 installs
- 34 repo stars
- Updated March 27, 2026
- tuist/agent-skills
Helps with testing & qa tasks.
About
compare-test-runs is a Claude Code skill for testing & qa. It helps solo builders move faster with AI-assisted development.
- compare-test-runs
- Testing & QA
- AI-coding skill
Compare Test Runs by the numbers
- 194 all-time installs (skills.sh)
- +6 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #815 of 2,153 Testing & QA skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/tuist/agent-skills --skill compare-test-runsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 194 |
|---|---|
| repo stars | ★ 34 |
| Last updated | March 27, 2026 |
| Repository | tuist/agent-skills ↗ |
What it does
Helps with testing & qa tasks.
Files
Compare Test Runs
Quick Start
You'll typically receive two test run identifiers. Follow these steps:
1. Run tuist test show <id> --json for both base and head test runs. 2. Run tuist test module list <test-run-id> --json and tuist test suite list <test-run-id> --json to get module and suite breakdowns. 3. Run tuist test case run list <identifier> --json to get individual test case results. 4. Compare failures, flaky tests, durations, and overall status. 5. Inspect failing test cases with tuist test case run show <id> --json. 6. Summarize findings with actionable recommendations.
Step 1: Resolve Test Runs
If base/head are test run IDs or dashboard URLs
Fetch each directly:
tuist test show <base-id> --json
tuist test show <head-id> --jsonIf base/head are branch names
List recent test runs on each branch to identify test run IDs:
tuist test list --git-branch <base-branch> --json --page-size 5
tuist test list --git-branch <head-branch> --json --page-size 5Pick the latest test run ID from each branch's results.
Defaults
- If no base is provided, use the project's default branch (usually
main). - If no head is provided, detect the current git branch.
Step 2: Compare Top-Level Metrics
After fetching both test runs, compare:
| Metric | What to check |
|---|---|
status | Flag if base passed but head failed |
duration | Flag if head is >10% slower |
total_test_count | Note if test count changed (new or removed tests) |
failed_test_count | Compare failure counts |
flaky_test_count | Compare flaky counts |
avg_test_duration | Flag significant changes |
Step 3: Get Module and Suite Breakdowns
Fetch module and suite-level results for both test runs to understand which areas regressed:
tuist test module list <base-test-run-id> --json
tuist test module list <head-test-run-id> --json
tuist test suite list <base-test-run-id> --json
tuist test suite list <head-test-run-id> --jsonMatch modules and suites by name across both runs to identify areas with new failures or duration regressions.
Step 4: Get Individual Test Case Results
Fetch test case runs for both test runs:
tuist test case run list <identifier> --json --page-size 100Match test cases by their name + module_name + suite_name across both runs.
Step 5: Classify Changes
Group test cases into categories:
1. New failures: Tests that passed in base but failed in head. 2. Fixed tests: Tests that failed in base but passed in head. 3. Newly flaky: Tests not flaky in base but flaky in head. 4. No longer flaky: Tests that were flaky in base but stable in head. 5. New tests: Tests present in head but not in base. 6. Removed tests: Tests present in base but not in head. 7. Duration regressions: Tests with >50% duration increase.
Step 6: Inspect Failures
For each new failure, get detailed information:
tuist test case run show <test-case-run-id> --jsonKey fields to examine:
failures[].message-- the assertion or error messagefailures[].path-- source file pathfailures[].line_number-- exact line of failurefailures[].issue_type-- type of issuerepetitions-- if present, shows retry behavior (flaky detection)crash_report-- crash data if test runner crashed
Step 7: Inspect Attachments
The tuist test case run show output includes attachment and crash report information. Review:
- Screenshots or UI test artifacts
- Log files or crash reports
- Any diagnostic data attached to failing runs
Summary Format
Produce a summary with:
1. Overall verdict: Better, worse, or neutral compared to base. 2. New failures: List each with failure message, file path, and line number. 3. New flaky tests: List with flakiness context. 4. Fixed tests: List tests that are now passing. 5. Duration: Overall and notable per-test regressions. 6. Recommendations: Actionable next steps for each issue.
Example:
Test Run Comparison: base (run-123 on main) vs head (run-456 on feature-x)
Status: success -> failure -- REGRESSION
Duration: 120.5s -> 145.2s (+21%)
Tests: 342 -> 345 (3 new tests)
Failures: 0 -> 2 (2 new failures)
Flaky: 1 -> 3 (2 newly flaky)
New Failures:
1. AuthModuleTests/LoginTests/test_login_with_expired_token
Message: "Expected status 401, got 500"
File: Tests/AuthModuleTests/LoginTests.swift:42
Likely cause: Server error handling changed for expired tokens
2. NetworkTests/RetryTests/test_retry_on_timeout
Message: "Timed out waiting for retry"
File: Tests/NetworkTests/RetryTests.swift:87
Likely cause: Timeout threshold too low after network layer refactor
Newly Flaky:
1. CacheTests/WriteCacheTests/test_concurrent_writes (flaky in 3/5 runs)
Recommendations:
- Fix expired token handling in AuthModule
- Increase timeout in RetryTests or mock the network layer
- Investigate concurrent write synchronization in CacheTestsDone Checklist
- Resolved both base and head test runs
- Compared top-level metrics
- Fetched module and suite breakdowns for both runs
- Identified new failures, fixed tests, and flaky changes
- Inspected failure details for new failures
- Provided actionable recommendations with file paths