Skip to content

Latest commit

 

History

History
133 lines (96 loc) · 5.83 KB

File metadata and controls

133 lines (96 loc) · 5.83 KB

Contributing to BehaveX

Thank you for your interest in contributing to BehaveX. Every contribution — code, bug reports, ideas, or documentation — helps make the framework better for everyone.

Table of Contents


Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a branch for your change (git checkout -b fix/my-fix or feat/my-feature)
  4. Make your changes
  5. Run the test suite
  6. Open a pull request

Development Setup

BehaveX uses uv for dependency management.

# Clone and install
git clone https://github.com/hrcorval/behavex.git
cd behavex
uv sync

Always invoke BehaveX via uv run behavex. Never use python -m behavex or bare behavex.


Running the Tests

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_run

When adding new functionality, add corresponding BDD scenarios under tests/features/. When fixing a bug, add a scenario that reproduces it.


Submitting a Pull Request

  • 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.


Reporting Issues

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

Contributors

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.

Code Contributors

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

Bug Reporters

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

Ideas and Inspiration

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