feat(#386): E2E Phase 4.5 — Mobile component tests via vitest #387

Merged
admin-mrrm merged 2 commits from feat/386-mobile-rntl into main 2026-05-22 16:25:37 +02:00
Owner

Closes #386

Summary

Fügt React-Native-Component-Tests in apps/mobile hinzu — über das bestehende pnpm test (Vitest), nicht über ein separates Jest-Setup. CI führt die Tests jetzt mit aus.

Was drin ist

  • apps/mobile/__tests__/components/counter.test.tsx — Beispiel-Test: Initial-Render + Press-Interaktion gegen einen Mini-RN-Counter
  • apps/mobile/vitest.config.ts — alias react-nativereact-native-web, __tests__/**/*.test.tsx in include, globals: true für RTL-Auto-Cleanup, Setup-File
  • apps/mobile/__tests__/setup.ts — jest-dom Matcher (toHaveTextContent etc.)
  • .drone.yml — turbo-Test-Filter umfasst jetzt @mrrmlab/mobile
  • turbo.json__tests__/** in test.inputs für korrektes Caching

Pivot von RNTL → @testing-library/react

Das Issue nannte ursprünglich @testing-library/react-native. Beim Implementieren stellte sich heraus: RNTL braucht react-test-renderer und importiert RN-Source mit Flow-Syntax, die Vitest/Rollup nicht parsen kann (ohne jest-expo-Preset). Statt einen zweiten Test-Runner (Jest) neben Vitest aufzubauen, ist der kanonische Vitest+RN-Weg: react-nativereact-native-web aliasen, mit @testing-library/react rendern. Komponenten werden so im Web-Modus getestet — gut genug für Logik-Tests, ohne Native-Build-Pipeline. Echtes On-Device-Testing kommt mit Maestro (Phase 4 zweite Hälfte, später).

Test plan

  • pnpm --filter @mrrmlab/mobile test lokal grün (61 Tests inkl. 2 neue Counter-Tests)
  • pnpm --filter @mrrmlab/mobile typecheck grün
  • Drone test-Step grün — beim Push verifizieren

🤖 Generated with Claude Code

Closes #386 ## Summary Fügt React-Native-Component-Tests in `apps/mobile` hinzu — über das bestehende `pnpm test` (Vitest), nicht über ein separates Jest-Setup. CI führt die Tests jetzt mit aus. ## Was drin ist - **`apps/mobile/__tests__/components/counter.test.tsx`** — Beispiel-Test: Initial-Render + Press-Interaktion gegen einen Mini-RN-Counter - **`apps/mobile/vitest.config.ts`** — alias `react-native` → `react-native-web`, `__tests__/**/*.test.tsx` in `include`, `globals: true` für RTL-Auto-Cleanup, Setup-File - **`apps/mobile/__tests__/setup.ts`** — jest-dom Matcher (`toHaveTextContent` etc.) - **`.drone.yml`** — turbo-Test-Filter umfasst jetzt `@mrrmlab/mobile` - **`turbo.json`** — `__tests__/**` in `test.inputs` für korrektes Caching ## Pivot von RNTL → @testing-library/react Das Issue nannte ursprünglich `@testing-library/react-native`. Beim Implementieren stellte sich heraus: RNTL braucht `react-test-renderer` und importiert RN-Source mit Flow-Syntax, die Vitest/Rollup nicht parsen kann (ohne jest-expo-Preset). Statt einen zweiten Test-Runner (Jest) neben Vitest aufzubauen, ist der kanonische Vitest+RN-Weg: `react-native` → `react-native-web` aliasen, mit `@testing-library/react` rendern. Komponenten werden so im Web-Modus getestet — gut genug für Logik-Tests, ohne Native-Build-Pipeline. **Echtes On-Device-Testing kommt mit Maestro (Phase 4 zweite Hälfte, später).** ## Test plan - [x] `pnpm --filter @mrrmlab/mobile test` lokal grün (61 Tests inkl. 2 neue Counter-Tests) - [x] `pnpm --filter @mrrmlab/mobile typecheck` grün - [ ] Drone `test`-Step grün — beim Push verifizieren 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(#386): E2E Phase 4.5 - Mobile component tests via vitest
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
5be0c7747b
Adds React Native component testing to apps/mobile with vitest + happy-dom
+ react-native-web alias. Falls into the existing `pnpm test` flow; no
separate jest setup.

- vitest.config.ts: alias react-native -> react-native-web, include
  __tests__/**/*.test.tsx, enable globals (RTL auto-cleanup)
- __tests__/components/counter.test.tsx: example test (initial render +
  press interaction) using @testing-library/react against an RN component
- __tests__/setup.ts: jest-dom matchers
- .drone.yml: turbo test filter now includes @mrrmlab/mobile
- turbo.json: __tests__/** added to test inputs for correct caching

Maestro (true on-device E2E) is intentionally deferred per Issue #386.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Merge branch 'main' into feat/386-mobile-rntl
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is passing
8ffaff9bc8
admin-mrrm deleted branch feat/386-mobile-rntl 2026-05-22 16:25:37 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!387
No description provided.