## TL;DR

E2E tests must clean up after themselves or the suite slowly rots: leftover data makes tests order-dependent and flaky. The reliable strategies are: delete via API in an after-hook using IDs the test created, seed data with unique markers (a run ID prefix) and bulk-delete by marker, or wrap the run in a database transaction and roll back. Pick one strategy per data store, make cleanup idempotent so double-runs are safe, and never rely on test order for a clean starting state.

## The query

```text
test data cleanup after e2e runs: teardown strategies
```

## Use this when

- Tests pass alone but fail in the full suite.
- Leftover data from old runs pollutes results.

## Not for

- Unit or integration test fixtures; those are cheap to rebuild.
- Backing up production data.

## Steps

1. Inventory what each e2e test creates: users, orders, files, and where they live. Expected output: a list of created entities per test area.
2. Choose one cleanup strategy per store: API delete, marker-based bulk delete, or transaction rollback. Expected output: a documented choice, not a mix.
3. Implement cleanup in after-hooks keyed to the IDs or markers the test created. Expected output: each test deletes exactly what it made.
4. Make cleanup idempotent: deleting twice must not error. Expected output: re-runs of teardown are safe.
5. Verify by running the suite twice back-to-back with no manual reset. Expected output: the second run is as green as the first.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_Z5OeyrKHZJDbDIJ5UKTahQ
