In behaviour driven development, you write the tests first.
However, when you are in the middle of development and you have a functional but limited application, some tests will have been implemented and some will not have been.
How do you keep all the failures of the not-yet-implemented tests from obscuring the true errors?
I found the solution here:
https://github.com/Codeception/Codeception/issues/3823
Mark the scenarios with a tag (e.g. incomplete) and then use:
codecept run functional --skip-group incomplete
This is a tooling issue. But one solution that is available in many implementations is to tag scenarios. Those not done yet can be tagged wip, as in work in progress. And then just skip those in you build.
Writing features in advance is a good idea if you want them to drive the development. The trick is to write them late enough so they really drive the immediate development. Writing them weeks or months ahead is probably not the way to go. Writing them a a day or a few hours before implementation is probably a better idea.