# Delete tests whose assertions another test already makes

Overlapping tests removed on the evidence that coverage does not move.

Category: Test suite consolidation
Source: https://letsship.ai/use-cases/delete-duplicate-assertions
Published: 2026-08-25

## Goal

Remove tests whose assertions are fully covered by another test, proven by coverage.

## Acceptance criteria

- Coverage is identical before and after, shown in the report
- Each removal names the test that already covers the behaviour
- Nothing is removed on the basis of a similar name alone
- Suite runtime before and after is recorded

## What lands as proof

Two coverage reports that match, which is the only acceptable evidence that nothing was lost.

## 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: Remove duplicate assertions from the {area} suite

Description: Remove tests whose assertions are fully covered by another test, proven by coverage.

Acceptance criteria:
- Coverage is identical before and after, shown in the report
- Each removal names the test that already covers the behaviour
- Nothing is removed on the basis of a similar name alone
- Suite runtime before and after is recorded

Before you create the issue, pick a test area in this repository with obvious overlap and replace {area} with it.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: remove tests whose assertions are fully covered by another test, proven by coverage. 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 coverage identical before and after, proven by the report, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

The run stops once the plan is written. Somebody reads the approach and approves it before any code exists, which is the cheapest moment to redirect the work.
