test distribution should optimize for * Maximum Unit tests * Sufficient Functional tests to cover important app flows Required number integration tests When we do this, the shape of test distribution generally turns out to be a PYRAMID
a real device to run on - They are much slower - Multiple tests in a _test file depend on each other in terms previous state - Hard to change application setup from test file - Hard to debug failing test. Error messages not descriptive enough
A. Keep it minimal. Test only critical functionality where alignment/size of UI controls could be a make or break scenario. a. [Should Test] Add To Cart button size as without this you get no money b. [Should Not Test] Profile page - They can be flaky as even 1px misalignment causes failure - Need to maintain golden images in CI which can increase repo size [branch golden_test_1]