callstack / callstack/react-native-testing-library

RFC: RNTL Cookbook

Open
#1,624 11 comments 16 reactions 0 assignees View on GitHub
discussion good first issue help wanted
Dominant language
TypeScript
Stars
3.4k
Forks
281
PR merge metrics
No merged PRs in 30d

Description

## RNTL Cookbook

RNTL is feature-complete, so the next big frontier is documenting and sharing best practices so our users can get the most out of using RNTL. Specifically, we could have a significant impact by:
* Describe best practices around common tasks like async tests, network calls,
* Provide ready-made recipes for testing popular libraries like state management, React Navigation
* Provide copy-pastable information about mocking and RNTL setup

I propose creating an RNTL Cookbook. It would be a documentation section where we would gather relatively short "recipes" for handling different concerns, tips & tricks, etc.

### Proposed topics

#### Basic
- [ ] Jest Config
- [x] Custom Render functions #1622
- [x] Testing async code
- [ ] Mocking in general
- [x] Mocking network calls with `fetch`
- [ ] Mocking React Native parts

#### Popular libraries
- [ ] Gesture Handler
- [ ] Reanimated
- [ ] ...

#### Navigation
- [ ] React Navigation
- [ ] Expo Router (?)

#### State management
- [ ] Redux (classic)
- [ ] Redux (RTK)
- [ ] Zustand
- [x] Jotai
- [ ] Valtio
- [ ] ...

#### Other
- [ ] Custom component snapshot matcher (?)
- [ ] Testing Event Emitters / Streams

Each documentation page should be brief and accompanied by an easy-to-understand example showcasing the essence of the recipe/technique. Additionally, I will create an `examples/cookbook` app based on a `basic` example app that will provide runnable code for all recipes.

We would invite our users to share their own best practices, tips & tricks, etc. so this becomes a crowdsource effort and a common knowledge base making our (developer) lives easier and more productive.

CC: @thymikee @pierrezimmermannbam @MattAgn @AugustinLF

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.