Thank you for your interest in contributing to BehaveX. Every contribution — code, bug reports, ideas, or documentation — helps make the framework better for everyone.
- Getting Started
- Development Setup
- Running the Tests
- Submitting a Pull Request
- Reporting Issues
- Contributors
- Fork the repository on GitHub
- Clone your fork locally
- Create a branch for your change (
git checkout -b fix/my-fixorfeat/my-feature) - Make your changes
- Run the test suite
- Open a pull request
BehaveX uses uv for dependency management.
# Clone and install
git clone https://github.com/hrcorval/behavex.git
cd behavex
uv syncAlways invoke BehaveX via uv run behavex. Never use python -m behavex or bare behavex.
BehaveX is tested using BehaveX itself (meta-testing). The test suite lives in tests/features/.
# Run the full test suite
uv run behavex tests/features/ --output output/test_run
# Run in parallel (faster)
uv run behavex tests/features/ --output output/test_run --parallel-processes 2 --parallel-scheme scenario
# Run a specific feature
uv run behavex tests/features/my_feature.feature --output output/test_runWhen adding new functionality, add corresponding BDD scenarios under tests/features/. When fixing a bug, add a scenario that reproduces it.
- Keep PRs focused — one fix or feature per PR
- Add or update tests for your change
- Follow existing code style (Python type hints where applicable)
- Write commit messages in English
- Reference any related issue in the PR description
For significant changes, open an issue or a Discussion first to align on approach before investing time in implementation.
Please open a GitHub Issue with:
- BehaveX version (
uv run behavex --version) - Python version
- Operating system
- Minimal reproduction case (feature file + steps if applicable)
- Full error output
BehaveX has been shaped by many contributors over the years. Thank you to everyone who has submitted a pull request, reported a bug, or proposed an idea.
| Contributor | Contributions |
|---|---|
| @iamkenos | Allure formatter fixes (background steps, step serialization), ANSI code stripping in reports, scenario UUID hashing, path resolution fix, env var table alignment |
| @anibalinn | Documentation improvements, dry-run examples, release support |
| @AppeltansPieter | Non-zero exit code on parallel process failure, XML report fix when running from features folder |
| @balaji2711 | Documentation fixes and parallel execution examples |
| @danzou56 | Replaced htmlmin with minify_html for report minification |
| @JackHerRrer | Added unique ID to each Behave instance |
| @AxelFurlanF | Fixed Behave DeprecationWarning for pattern usage |
| @sebns | Fixed tag collection in feature files |
| @ido-ran | Added support for before_tag hook |
| @warshaya | Environment variable handling improvement |
| @RemoYukoff | Fixed invalid escape sequences |
These contributors reported issues that led to concrete fixes in BehaveX:
| Contributor | Issue | Fix |
|---|---|---|
| @rsapping3 | KeyError: 'error_lines' in XML report generation |
Fixed in v4.6.1 |
| @jbridger | ImportError during step loading produced misleading results |
Fixed in v4.6.1 |
| @karl0ss | Scenario output not visible in console | Fixed in v4.6.2 |
| @kconkas | environment.py hooks executing during dry runs; NameError: as_completed |
Fixed in v4.1.0 |
| @michalkovy | Exit code 0 when before_all hook fails |
Fixed in v4.4.x |
| @vibin-c | Python 3.12 distutils incompatibility; Snyk vulnerability in Zipp |
Fixed in v4.4.2 |
| @Kikkomanq | Python 3.13 installation failure | Fixed in v4.1.2 |
| @athiradamodaran | Scenario outline names not displayed correctly in reports | Fixed in v4.3.x |
| @AppeltansPieter | Zero exit code when parallel process fails | Fixed in v4.6.2 |
| @Mahul1992 | Configuration params not read from behavex.cfg / behavex.ini |
Fixed in v4.6.3 |
These contributors proposed features or opened PRs whose ideas directly shaped what was ultimately implemented:
| Contributor | Contribution |
|---|---|
| @bombsimon | Proposed full stack trace display on errors and isatty support for TeePrinter |
| @BackstageBones | Proposed enhanced error parsing with full traceback |
| @chriskite | Proposed Gherkin Rule section support |
| @jbridger | Reported and investigated parallel execution issues |
| @lawnmowerlatte | Proposed feature sorting for optimized parallel runtime |
| @zizzard | Proposed temporary file prefix configuration |