I'm think about extentions. Like pytest has with
pluggy. Many projects has insane envrionment files.
@jenisys, what we think about implement a plugin manager for hooks?
I try explain my idea on this project https://github.com/dunossauro/hook_plug.
Something like install plugins in hooks and inside de plugins you can implamente modules and then put context variables and execute routines in hooks
@ErwinBeen There is a "Visual Testing" section in the Practical Tips on Testing chapter of the documentation. This is not a direct answer to your question, but at least you can find some information there that may help you to dig further.
Extending the docs, once you find something directly useful, is always welcome!
Regarding expansive Setup: Splitup the Setup in two Parts, First Part injects the Context attribute (via fixture and fixture-tag in before_feature or before_all hook), second part performs the setup when the Context attribute is actually used via Lazy-init (via a function call or property or ...). Therefore, you pay only for the setup if it is actually used by a step implementation or Python code. Problem: Other parts (Scenarios, Steps, Fixtures, ...) may partly destroy/modify your setup after it was performed and it may be hard to detect this case.
Linked example has a flaw: The step implementation should not always power-up the board but just ensure that the board is in powered-up state.