# Consolidate scattered test helpers into one shared module

The same helper reimplemented in six suites, collected into one shared module.

Category: Test suite consolidation
Source: https://letsship.ai/use-cases/consolidate-scattered-test-helpers
Published: 2026-08-25

## Goal

Collect duplicated test helpers into one shared module and migrate every suite onto it.

## Acceptance criteria

- One implementation of each helper remains
- Every suite imports it rather than defining its own
- Behavioural differences between the copies are reconciled explicitly, not averaged
- All touched suites pass

## What lands as proof

The deleted copies in the diff, and a passing suite proving the reconciled helper covers every case.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Move the duplicated test helpers into one module

Description: Collect duplicated test helpers into one shared module and migrate every suite onto it.

Acceptance criteria:
- One implementation of each helper remains
- Every suite imports it rather than defining its own
- Behavioural differences between the copies are reconciled explicitly, not averaged
- All touched suites pass

Before you create the issue, search this repository's test directories for helpers defined more than once and name the worst offender in the description.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: collect duplicated test helpers into one shared module and migrate every suite onto it. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means every suite imports the shared helper, the duplicates are deleted, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

None is required before the run starts. Every claim this ticket makes can be checked by machine, so the agent works straight through and a person reviews the finished pull request like any other.
