Changelog
The project changelog is also maintained in CHANGELOG.md at the repository root.
Unreleased
[1.3.0] - 2026-08-14
Fixed
- Fixed
configparserusing default interpolation, which causedInterpolationSyntaxErrorwhenbehave.inivalues contained%characters. Now usesinterpolation=Noneto read values literally. - Fixed
RunConfigaccepting empty strings forparallel_scheme,parallel_balance, andparallel_timing_filefields. - Fixed
_normalize_listnot filtering empty strings from list input (only filtered from comma-separated string input). - Fixed
watch.pyusing empty list as default features when profile features list was empty, instead of falling back to["features"]likerun.py. - Fixed
collect_scenariosnot filtering empty strings from include and exclude tags, causing empty tag filters to exclude all scenarios. - Fixed
impact.pynot escaping regex special characters in scenario names before passing them to behave's--nameoption. - Re-added
utils.pytodocs/architecture.mdcore modules table anddocs/python-api.mdmkdocstrings reference (was incorrectly removed in a prior commit — the file exists and is used bycore/output.py). - Added missing
parallel_scheme,parallel_balance, andparallel_timing_filekeys todocs/configuration.mdconfiguration table and merge scope note. - Fixed
docs/commands/run.mddescription to accurately reflect that the orchestrator builds a single behave command and executes it viasubprocess.run, rather than dispatching to separate runner paths. - Fixed broken
behave-modern-file-reportGitHub URL (plural → singular) in README,docs/ecosystem.md, anddocs/installation.md. - Fixed README and
docs/ecosystem.mdlisting "core" as an installable extra for behave, behave-kit, and behave-model. Changed to "included" since these are installed automatically with the base package. - Fixed
docs/index.mdfeatures list missinginit,record, andopencommands. - Fixed README Requirements section incorrectly stating ecosystem packages are installed as optional extras (core deps are installed automatically).
- Added Changelog link to README Links section.
- Updated LICENSE copyright year to
2025-2026. - Updated bug report template version placeholder from
0.1.0to1.2.0. - Removed placeholder
FUNDING.yml(all content was commented out). - Added
.pre-commit-config.yamlto sdist include list. - Fixed
test_steps_no_args_shows_helpandtest_trace_no_args_shows_helptests expecting non-zero exit code when Typer'sno_args_is_help=Truecorrectly exits with 0. - Fixed
docs/ecosystem.mdintro stating "six categories" when the table actually has nine (core, execution, debug, quality, scaffolding, steps, utility, recording, reporting). - Fixed 5 purpose text inconsistencies between README and
docs/ecosystem.mdquick reference tables (behave-comments, behave-doctor, behave-modern-console-report, behave-priority, behave-retry). - Fixed README ecosystem table using "Scaffold" instead of "Scaffolding" for the behave-gen category.
- Fixed
.github/workflows/ci.ymlpip-auditmissing--strictflag, inconsistent with the Makefilesecuritytarget anddocs/ci-cd.mdCI template. - Fixed
docs/ecosystem.mdclaimingbehave-tablesis "bundled with the core installation" when it is not a dependency ofbehave-runner.
Changed
- Extracted shared
validate_shardfunction toorchestrator.pyto eliminate duplicated shard validation logic betweenrun.pyandwatch.py. - Moved inline imports (
importlib,warnings,load_profile,ConfigError) to module level inorchestrator.pyandwatch.py. - Added
__all__tobehave_runner/__init__.pyto explicitly declare the public API. - Fixed misleading
_normalize_profiledocstring that referenced only INI config when it handles both INI and TOML values. - Added
features.pytodocs/python-api.mdAPI reference. - Synced
docs/changelog.mdwithCHANGELOG.md(was missing[1.2.0]section).
[1.2.0] - 2026-08-13
Fixed
- Fixed formatter resolution in
orchestrator.py: changed_REPORT_FORMATTERSfrom entry point names to scoped names (module:Class) so behave 1.2.6 can resolve them viaload_formatter_class(). - Fixed
--parallelbeing passed to behave without checking ifbehave-poolis functionally installed. Added_is_package_functional()helper that verifies a package has real.pyfiles, not just an empty namespace. - Fixed
--runner behave_poolbeing passed to behave (not a valid CLI flag). - Fixed
--shardbeing passed as a CLI flag instead of only viaBEHAVE_POOL_SHARDenvironment variable. - Fixed regression tests failing on Windows due to cross-drive
os.path.relpatherrors by mockingorchestrator.runand usingmonkeypatch.chdir.
Added
- Added comprehensive
behaveproject fixture (tests/fixtures/full/) with 3 features, 10 scenarios, tags, hooks, and intentional failures. - Added integration tests for
selectcommand with full fixture (11 tests). - Added integration tests for
stepscommand (13 tests). - Added integration tests for
tracecommand (7 tests). - Added integration tests for
watchcommand (3 tests). - Added unit tests for
FileWatcher(5 tests: deleted files, nested dirs, run loop, callback, debounce). - Added integration tests for
runcommand with real execution (12 tests).
Changed
- Updated
.gitignoreto cover generated reports and build artifacts.
[1.1.0] - 2026-08-07
Fixed
- Fixed
load_confignot falling back tobehave.iniwhenpyproject.tomlexists but lacks[tool.behave-runner]section. - Fixed
_format_valuenot escaping double quotes and backslashes in TOML string values, which could produce invalid TOML. - Fixed
run.pyonly loading 4 config values from profiles. Now loads all supported values: parallel, retries, dry_run, stop_on_failure, scenario_timeout, priority_order, fail_fast, flaky_report, max_failures. - Fixed
report.pynot supporting "file" format even thoughbehave-modern-file-reportis listed as an optional extra. - Fixed
orchestrator.pynot passing environment variables to subprocess fallback paths. - Fixed README CLI option names and watch command quit instructions.
- Translated
mkdocs.ymlsite description anddocs/index.mdto English. - Fixed
docs/index.mdincorrect examples and non-existent config keys. - Updated
pyproject.tomldevelopment status from Alpha to Production/Stable. - Fixed
.pre-commit-config.yamlmypy hook missing project dependencies. - Added
SECURITY.md. - Improved
orchestrator.pyby reducing duplicated subprocess fallback code. - Improved
output.pysymlink safety inclean_output_dir. - Improved
watcher.pyerror handling to log instead of silently suppressing. - Added
TypedDictfor scenario info infeatures.py. - Added regression tests for all bug fixes.
- Fixed
config_cmd.pyexit code for missing pyproject.toml (1 → 2). - Fixed all Spanish text in docs command reference.
- Fixed
docs/cli.mdreport format names (xlsx → sheets, pdf → file). - Fixed
docs/cli.md--smoke flag incorrectly listed as requiring behave-priority. - Fixed
docs/commands/report.mdformat names and added "file" to format list. - Fixed
docs/commands/run.md--smoke dependency listing. - Fixed
docs/commands/init.mdpositional arg example to use --name flag. - Fixed
docs/quickstart.mdinit example to use --name flag. - Fixed
docs/index.mdinit example and report format example. - Fixed
docs/configuration.mdfallback and merge scope descriptions. - Fixed
docs/installation.mdanddocs/ecosystem.mdpriority extra description. - Added
sdistbuild target topyproject.tomlto include tests and docs. - Refactored
orchestrator.pyto eliminate duplicated subprocess fallback code via_try_optionaland_run_behave_subprocesshelpers. - Added Codecov badge to README.
- Added Dependabot configuration for pip and GitHub Actions.
- Upgraded
codecov-actionto v5 in CI workflow. - Simplified CI pip caching to use
setup-pythonbuilt-in cache. - Added
SECURITY.mdto sdist include list. - Added Requirements and Acknowledgements sections to README.
- Added
banditandpip-auditto dev dependencies for security scanning. - Added
Framework :: Pytestclassifier topyproject.toml. - Added security job to CI workflow (bandit + pip-audit).
- Added GitHub funding configuration file.
- Added bandit configuration to
pyproject.toml. - Added
make securitytarget to Makefile. - Fixed
docs/ecosystem.mdlibrary count (22 → 21). - Fixed
docs/configuration.mdincorrectbehave.iniprofile example. - Updated
docs/ci-cd.mdto reflect codecov-action v5. - Fixed
config.pyload_configcrashing withAttributeErrorif[tool]is not a dictionary inpyproject.toml. - Fixed
config.pyload_confignot catchingUnicodeDecodeErrorfromconfigparserfor non-decodablebehave.inifiles. - Fixed
output.pyclean_output_dircrashing onOSErrorfromiterdir(). - Fixed
run.pyflaky_reportcheck not accounting for profile-defined retries. - Fixed
run.pyprofilemax_failkey being silently ignored. - Fixed
run.pyprofilesmokekey being silently ignored. - Fixed
config_cmd.py_set_config_valuecorrupting TOML when setting dotted keys that conflict with existing subtables. - Fixed
config_cmd.pyconfig setnot catchingConfigError. - Fixed
orchestrator.pyRunConfig.parallel=0being allowed but silently falling back to sequential execution. - Fixed
features.pyfeature.nameandscenario.namebeingNonecrashing withAttributeError/TypeError. - Fixed
features.pyScenarioInfoTypedDict contract being violated when names areNone. - Fixed
watch.pynegative--debouncecausing the watcher to never trigger. - Fixed
output.pyensure_output_dircrashing if path exists as a file. - Fixed
orchestrator.py_try_optionalnot catching non-ImportErrorexceptions from optional dependencies. - Fixed
config.py_ini_flat_to_nestedsilently overwriting leaf values with dicts on key conflicts. - Fixed
Makefiletestandtest-covtargets not excluding e2e tests. - Fixed
.github/workflows/ci.ymlbanditandpip-auditnot declared asdevdependencies. - Fixed
orchestrator.pyrun()saving/restoring all environment variables instead of only behave-specific ones. - Fixed
output.pyrace condition infind_latest_reportwhen callingstat(). - Fixed
select.pyandlist_cmd.pylacking validation for thefmtargument. - Fixed
config_cmd.py_parse_valuenot stripping whitespace from string values. - Fixed
run.pyshard values from profiles not being type-validated.
Added
AGENTS.mdwith project-specific conventions and verification steps.behave_runner/core/features.pywithcollect_scenariosandmatches_tagsutilities extracted fromselect.pyandlist_cmd.py.- Comprehensive regression test suite (
tests/unit/test_regression.py).
[1.0.1] - 2026-08-07
- Updated README and package description to English.
- Added repository topics on GitHub.
- No functional changes.
[1.0.0] - 2026-08-07
- Stable release of
behave-runner. - All 16 CLI commands implemented and documented.
- MkDocs documentation site with architecture, ecosystem, Python API, CI/CD and FAQ pages.
- Community files and README.
- Fixed CI coverage threshold for environments without optional extras.
- Fixed cross-platform
find_project_roottest. - Added
BEHAVE_RUNNER_NO_BROWSERto prevent browser opening during tests.
[0.1.0] - 2026-07-08
- Initial release of
behave-runnerCLI. - Commands:
run,list,select,lint,format,doctor,impact,watch,report,trace,steps,generate,init,config,open,record. - E2E test fixtures for
saucedemo.comandpokeapi.co. - CI workflow with matrix testing across Python 3.11-3.14.
- MkDocs Material documentation site.
- Community files:
CONTRIBUTING.md,CODE_OF_CONDUCT.md,SECURITY.md,SUPPORT.md, issue and pull request templates.