# Test IDs conventions This app uses React Native `testID` props to support **E2E tests** (Detox / RN testing tools) and to enable reliable UI targeting without relying on translated text. ## Goals - Stable selectors for tests across refactors. - Human-readable IDs that encode *where* and *what*. - Low risk: adding `testID` must not change UI behavior. ## When to add a `testID` Add a `testID` when the element is: - A primary action (CTA) users tap. - Navigation chrome (header left/back/menu, header right quick actions). - A key form control (input, send button, attachment/mic button). - A container representing a screen root (rare; see existing example). Avoid adding `testID` to purely decorative views/icons. ## Naming rules ### Format Use lowercase, kebab-case. Recommended pattern: ``` -- ``` Examples: - `header-left-back` - `header-right-menu` - `send-alert-cta-red` - `chat-input-send` ### Prefixes Use a consistent prefix based on where the element lives: - `header-left-*` for left header controls - `header-right-*` for right header controls - `send-alert-*` for Send Alert screen actions - `chat-input-*` for ChatInput controls ### Uniqueness Within a given screen/component, each `testID` must be unique. ### Do not encode text Do not include localized labels (e.g. avoid `envoyer-message`). IDs must remain stable even if copy changes. ## Mapping to files - Header buttons: [`src/navigation/HeaderLeft.js`](src/navigation/HeaderLeft.js:1), [`src/navigation/HeaderRight.js`](src/navigation/HeaderRight.js:1) - Send Alert CTAs: [`src/scenes/SendAlert/index.js`](src/scenes/SendAlert/index.js:1) - Chat input controls: [`src/containers/ChatInput/index.js`](src/containers/ChatInput/index.js:1) ## Existing usage - Screen root container example: [`src/layout/Layout.js`](src/layout/Layout.js:49) uses `testID="main-layout"`.