LightBDD
LightBDD copied to clipboard
Implement configurable scenario execution scheduler
Description
Implement scenario execution scheduler with support for:
- asynchronous test execution (i.e. starting the next scenario when the current one is blocked on await),
- parallelization support by scheduling scenario execution on the thread pool, enabling non-async scenarios to execute in parallel),
- controlling max concurrent scenario tasks that are executed at the same time (defaulting to
Environment.ProcessorCount
), - execution prioritization (
High, Normal, Low
) impacting the execution order, - execution model, being thread pool (default), dedicated single thread, and further options to customize (to enable UI test run),
- constraint/isolation model, supporting concurrent execution and exclusive execution
Features
- [x] Asynchronous test execution,
- [x] Execution model: Thread pool parallelization,
- [x] Concurrency limits,
- [x] Execution prioritization,
- [x] Execution model: Dedicated single thread
- [ ] Execution model: extensions
- [x] Isolation model: concurrent execution
- [x] Isolation model: exclusive execution
Note: consider implementing another constraint attribute, similar to IScenarioExecutionSchedulerAttribute
but in the namespace of IScenarioRequireExclusiveRunAttribute
, that would allow further customizable constraining of the scenario execution, allowing for example additional throttling of the annotated tests