From d52cd2b4bff16bc227bdd6a8c482997af11a133a Mon Sep 17 00:00:00 2001 From: Jason Ross Date: Fri, 3 Jul 2026 13:00:09 -0500 Subject: [PATCH] docs(claude): require unit + E2E tests in the definition of done Codify that a task/PR isn't complete without both passing unit tests and E2E/instrumented tests covering the change. Writing and committing the E2E/instrumented test is required; only running it against a booted emulator locally stays optional, since CI's E2E matrix covers that. Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 8f8ed87..b7182e6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -61,6 +61,15 @@ JVM unit tests use JUnit4 + `kotlin.test`, **Turbine** for `Flow`, **MockK** for **GreenMail** for a real in-process IMAP/SMTP server, and coroutines-test. `org.json` is pulled in as a real dependency for unit tests because `android.jar`'s version is a no-op stub. +## Definition of done + +A change is not done until it ships with passing **unit tests** and **E2E/instrumented tests** +that exercise the new or changed behaviour. Writing and committing that E2E/instrumented test +is a required part of every task — it must exist and compile (the fast gate above already +checks this via `compileDebugAndroidTestKotlin`). Only *running* it against a booted emulator +locally remains optional: per "Emulator E2E is left to CI unless asked," CI's E2E matrix is +what executes it before merge. + ## Repo etiquette - Branch off `main`; branch names like `feat-…` / `fix-…`. PRs target `main` and must pass