The inefficiency of tests
So a given web application has an architecture that involves a UI and an API and under that some domain objects, data, etc. When a new feature comes up, there is a gherkin test that does NOT go through selenium, but directly to the API. In developing the gherkin test, the team drives out the changes needed by the API and gets it working. The gherkin test is a "story test" and checks to see if the system (behind the UI) works correctly. It does data, persistence, etc in a safe way. But to build the code, you are doing TDD directly on the API and the deeper domain objects. As you do, you are refactoring and committing (of course). The microtests and the gherkin tests together are super-fast, so you run both in the auto tester . The auto tester re-runs the tests any time the code is changed and compile-able. This means the tests are run many sometimes more than once a minute. You're always clear where you stand. But of course, there is a web page to deal with. You create r...