This has been going on for a long time but not everyone noticed it. Teams that use the Gherkin syntax to define a behavior are likely to exploit those definitions in two ways:
- Bind automatically with Specflow or Cucumber.
- Treat as a manual test script.
This is an early form of multi-binding.
I'm talking about something more than that and it's the foundation of stability in all my pipelines. So we need to discuss it, first.
In my environment, any given test can be executed all of the following ways:
- As a unit test.
- As an integration test with no networking (everything runs in a single process).
- As an integration test for the backend with mocked data.
- As a gate between the blue and green environments of the backend.
- As an integration test for the Android client, with a local server and a mocked database.
- As an integration test for the WebGL client, with a local server and a mocked database.
- As a gate between the blue and green environments of one of my WebGL deployments.
There's nothing to stop me from adding more ways to run tests if I need them. This seems pretty good for what amounts to a one-man show.