📖 TLDR: We chose integration tests over unit tests for a more efficient and startup-friendly approach. It worked. We're happy.
A very long time ago I stumbled on this interview of Dan Abramov. I was already using a lot of functional tests on my previous project, and wondered, do I really need anything else?
It worked well for us, but in a recent interview, I was asked "what's your unit test code coverage percentage?", after explaining our strategy, the candidate was very surprised by this concept and we talked about it for a few minutes.
So to sum-up, a codebase where any change takes a lot of time, where agility is low and where feature ship slowly. Time is the issue at the end.
You can use toolings to detect basic errors like typos and syntax. It's well documented, not long to set up and catches a lot of small mistakes.
You verify that functions are doing what they are meant to do, without external influence. Using patterns like dependency injection to avoid testing multiple behaviors at the same time.