A monorepo + BFF + cross-platform client doesn't just shape how you build—it shapes how you test. Which package gets which kind of test, why the typed contract is both a test target and your single mock boundary, how to set up per-package test environments, and the fixture trick that makes end-to-end runs fast and deterministic—with examples from building the whole thing from scratch.

We will start learning how to test our applications with Cypress, this is a end-to-end testing framework for web test automation. We use this to test the application as a whole, instead of isolated components (cypress can do it, but RTL is better for unit testing), which is done using unit testing and integration testing when you want to make multiple components and layers work together