compare-test-case
Compares a single test case's behavior across two branches, analyzing pass/fail status, duration, flakiness, and failure details. Useful for investigating test regressions introduced by a feature branch.
What this skill does
# Compare Test Case ## Quick Start You'll typically receive a test case identifier and two branches. Follow these steps: 1. Run `tuist test case show <id-or-identifier> --json` to get the test case metrics. 2. Run `tuist test case run list <identifier> --json` to see runs across branches. 3. Compare behavior between base and head branches. 4. Inspect failures with `tuist test case run show <run-id> --json`. 5. Summarize findings with root cause analysis. ## Step 1: Resolve the Test Case ### By ID or dashboard URL ```bash tuist test case show <test-case-id> --json ``` ### By identifier (Module/Suite/TestCase) ```bash tuist test case show Module/Suite/TestCase --json ``` ### If no test case is provided Discover flaky or failing tests to investigate: ```bash tuist test case list --flaky --json --page-size 10 ``` Key fields from the response: - `id` -- unique identifier for subsequent commands - `name`, `module_name`, `suite_name` -- the test identity - `reliability_rate` -- percentage of successful runs - `flakiness_rate` -- percentage of flaky runs in the last 30 days - `total_runs` / `failed_runs` -- volume context - `is_flaky` / `is_quarantined` -- current flags ## Step 2: Get Runs on Each Branch List test case runs filtered by the test case, and look at the `git_branch` field: ```bash tuist test case run list <identifier> --json --page-size 20 ``` Separate runs by branch. For each branch, compute: - Pass rate: `passed_runs / total_runs * 100` - Average duration - Flaky run count - Most recent status ### Defaults - If no base branch is provided, use the project's default branch (usually `main`). - If no head branch is provided, detect the current git branch. ## Step 3: Compare Branch Behavior | Metric | Base branch | Head branch | Verdict | |---|---|---|---| | Pass rate | e.g. 100% | e.g. 60% | REGRESSION | | Avg duration | e.g. 0.5s | e.g. 2.1s | REGRESSION | | Flaky runs | 0 | 3 | NEW FLAKINESS | | Last status | success | failure | REGRESSION | Classify the change: - **Newly failing**: 100% pass rate on base, <100% on head - **Newly flaky**: No flaky runs on base, flaky runs on head - **Duration regression**: >50% increase in average duration - **Fixed**: Failing on base, passing on head - **Stable**: Same behavior on both branches ## Step 4: Inspect Failures For each failing run on the head branch: ```bash tuist test case run show <test-case-run-id> --json ``` Examine: - `failures[].message` -- the assertion or error message - `failures[].path` -- source file path - `failures[].line_number` -- exact line of failure - `failures[].issue_type` -- type of issue - `repetitions` -- shows retry behavior (e.g., pass-fail-pass means flaky) - `crash_report` -- crash data if the test runner crashed ## Step 5: Identify Root Cause Based on the comparison: ### Newly failing - Check commits between base and head branches for changes to the test file or the code under test. - Look at the failure message for clues about what changed. ### Newly flaky - Common patterns: timing/async issues, shared state, environment dependencies. - Check if `repetitions` show intermittent pass/fail patterns. - See the fix-flaky-tests skill for detailed flaky test analysis patterns. ### Duration regression - Check if setup/teardown time increased. - Check if the test is doing more work (new assertions, larger data sets). - Check if a dependency became slower. ## Summary Format Produce a summary with: 1. **Test case info**: Name, module, suite, overall reliability. 2. **Base branch behavior**: Pass rate, avg duration, flaky count. 3. **Head branch behavior**: Pass rate, avg duration, flaky count. 4. **Verdict**: What changed and classification. 5. **Root cause**: Hypothesis based on failure analysis. 6. **Recommendations**: Specific file paths, line numbers, and fix suggestions. Example: ``` Test Case Comparison: AuthModuleTests/LoginTests/test_login_with_expired_token Overall reliability: 85% (was 100% before head branch) Base (main): Pass rate: 100% (15/15 runs) Avg duration: 0.3s Flaky: No Head (feature/auth-refactor): Pass rate: 60% (3/5 runs) Avg duration: 0.5s Flaky: Yes (2 flaky runs) Verdict: NEWLY FLAKY -- test was stable on main but intermittently fails on feature branch Root cause: The auth refactor introduced an async token refresh that races with the test's synchronous assertion. Failures show "Expected status 401, got nil" at Tests/AuthModuleTests/LoginTests.swift:42, suggesting the response arrives before the token refresh completes. Recommendations: - Add an await/expectation before the assertion at LoginTests.swift:42 - Consider mocking the token refresh to make the test deterministic ``` ## Done Checklist - Resolved the test case identity - Gathered runs on both branches - Compared pass rates, durations, and flakiness - Inspected failure details for failing runs - Identified root cause with file paths and line numbers - Provided actionable fix recommendations
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.