Metadata-Version: 2.4
Name: behave-runner
Version: 1.0.1
Summary: A unified CLI entry point for the Behave BDD ecosystem, with subcommands for running, listing, selecting, linting, formatting, watching, reporting and more.
Project-URL: Documentation, https://mathiaspaulenko.github.io/behave-runner/
Project-URL: Homepage, https://github.com/MathiasPaulenko/behave-runner
Project-URL: Repository, https://github.com/MathiasPaulenko/behave-runner
Project-URL: Issues, https://github.com/MathiasPaulenko/behave-runner/issues
Project-URL: Changelog, https://github.com/MathiasPaulenko/behave-runner/blob/main/CHANGELOG.md
Author: Mathias Paulenko
License-Expression: MIT
License-File: LICENSE
Keywords: bdd,behave,cli,impact-analysis,runner,test-runner,typer,watch
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Testing :: BDD
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: behave-kit>=0.1.0
Requires-Dist: behave-model>=1.0
Requires-Dist: behave>=1.2.6
Requires-Dist: rich>=13.0
Requires-Dist: typer>=0.12
Provides-Extra: all
Requires-Dist: behave-comments>=0.1.0; extra == 'all'
Requires-Dist: behave-doctor>=0.1.0; extra == 'all'
Requires-Dist: behave-format>=0.1.0; extra == 'all'
Requires-Dist: behave-gen>=0.1.0; extra == 'all'
Requires-Dist: behave-lint>=0.1.0; extra == 'all'
Requires-Dist: behave-modern-console-report>=0.1.0; extra == 'all'
Requires-Dist: behave-modern-file-report>=0.1.0; extra == 'all'
Requires-Dist: behave-modern-html-report>=0.1.0; extra == 'all'
Requires-Dist: behave-modern-json-report>=0.1.0; extra == 'all'
Requires-Dist: behave-modern-md-report>=0.1.0; extra == 'all'
Requires-Dist: behave-modern-sheets-report>=0.1.0; extra == 'all'
Requires-Dist: behave-pool>=0.1.0; extra == 'all'
Requires-Dist: behave-priority>=0.1.0; extra == 'all'
Requires-Dist: behave-retry>=0.1.0; extra == 'all'
Requires-Dist: behave-steplib>=0.1.0; extra == 'all'
Requires-Dist: behave-trace>=0.1.0; extra == 'all'
Requires-Dist: wavexis>=0.1.0; extra == 'all'
Provides-Extra: comments
Requires-Dist: behave-comments>=0.1.0; extra == 'comments'
Provides-Extra: dev
Requires-Dist: build>=1.0; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pre-commit>=3.0; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocs>=1.6; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.24; extra == 'docs'
Provides-Extra: doctor
Requires-Dist: behave-doctor>=0.1.0; extra == 'doctor'
Provides-Extra: format
Requires-Dist: behave-format>=0.1.0; extra == 'format'
Provides-Extra: gen
Requires-Dist: behave-gen>=0.1.0; extra == 'gen'
Provides-Extra: lint
Requires-Dist: behave-lint>=0.1.0; extra == 'lint'
Provides-Extra: parallel
Requires-Dist: behave-pool>=0.1.0; extra == 'parallel'
Provides-Extra: priority
Requires-Dist: behave-priority>=0.1.0; extra == 'priority'
Provides-Extra: record
Requires-Dist: wavexis>=0.1.0; extra == 'record'
Provides-Extra: report-console
Requires-Dist: behave-modern-console-report>=0.1.0; extra == 'report-console'
Provides-Extra: report-file
Requires-Dist: behave-modern-file-report>=0.1.0; extra == 'report-file'
Provides-Extra: report-html
Requires-Dist: behave-modern-html-report>=0.1.0; extra == 'report-html'
Provides-Extra: report-json
Requires-Dist: behave-modern-json-report>=0.1.0; extra == 'report-json'
Provides-Extra: report-md
Requires-Dist: behave-modern-md-report>=0.1.0; extra == 'report-md'
Provides-Extra: report-sheets
Requires-Dist: behave-modern-sheets-report>=0.1.0; extra == 'report-sheets'
Provides-Extra: retry
Requires-Dist: behave-retry>=0.1.0; extra == 'retry'
Provides-Extra: steplib
Requires-Dist: behave-steplib>=0.1.0; extra == 'steplib'
Provides-Extra: trace
Requires-Dist: behave-trace>=0.1.0; extra == 'trace'
Description-Content-Type: text/markdown

# behave-runner

> A unified CLI entry point for the Behave BDD ecosystem.

<!-- markdownlint-disable MD013 -->
[![CI](https://github.com/MathiasPaulenko/behave-runner/actions/workflows/ci.yml/badge.svg)](https://github.com/MathiasPaulenko/behave-runner/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/behave-runner)](https://pypi.org/project/behave-runner/)
[![Python](https://img.shields.io/pypi/pyversions/behave-runner)](https://pypi.org/project/behave-runner/)
[![Docs](https://img.shields.io/badge/docs-mkdocs-blue)](https://mathiaspaulenko.github.io/behave-runner/)
[![License](https://img.shields.io/pypi/l/behave-runner)](https://github.com/MathiasPaulenko/behave-runner/blob/main/LICENSE)
<!-- markdownlint-enable MD013 -->

`behave-runner` is a single, extensible command-line interface for the
[Behave](https://behave.readthedocs.io/) BDD ecosystem. It wraps common Behave
workflows into focused subcommands and degrades gracefully when optional plugins
are not installed.

## Why behave-runner?

- **One CLI for everything** — run, list, filter, lint, format, watch, report,
  trace, generate and analyze scenarios from one tool.
- **Plugin-friendly** — optional extras add parallel execution, retries,
  priority ordering, trace viewers, report formatters, step libraries and more
  without breaking core behavior.
- **Fast feedback** — watch mode, impact analysis and rich terminal output keep
  the test loop tight.
- **Project scaffolding** — initialize a new Behave project, generate steps or
  features, and validate project health with `doctor`.

## Features

- Run, list, select, lint, format, watch, report, trace, steps, impact,
  generate, init, config, open and record commands.
- Optional parallel execution, sharding, retries and priority ordering.
- Configuration profiles via `pyproject.toml` or `behave.ini`.
- Watch mode that re-runs tests when files change.
- Reports in console, HTML, Markdown, JSON, XLSX and PDF formats.
- Trace viewer and web dashboard support.
- Step library management and feature/step generation.
- Impact analysis to detect scenarios affected by code changes.
- Graceful degradation when optional extras are missing.

## Installation

```bash
pip install behave-runner
```

To install all optional extensions:

```bash
pip install "behave-runner[all]"
```

For development:

```bash
pip install -e ".[dev]"
pre-commit install
```

## Quick Start

```bash
behave-runner init
behave-runner run
behave-runner list
behave-runner watch
```

## Commands

| Command     | Description                                              |
| ----------- | -------------------------------------------------------- |
| `run`       | Execute Behave tests.                                    |
| `watch`     | Re-run tests when files change.                          |
| `list`      | List scenarios without executing them.                   |
| `select`    | Filter scenarios by tags, regex or name.                 |
| `lint`      | Lint `.feature` files.                                   |
| `format`    | Format `.feature` files.                                 |
| `doctor`    | Check project health.                                    |
| `init`      | Initialize a new Behave project.                         |
| `generate`  | Generate steps or features.                              |
| `record`    | Record a browser session and generate steps.             |
| `report`    | Generate and open reports.                               |
| `trace`     | View traces or serve a trace dashboard.                  |
| `steps`     | Manage step libraries.                                   |
| `impact`    | Detect scenarios affected by code changes.               |
| `open`      | Open the latest report or trace in the default browser.  |
| `config`    | Manage configuration profiles.                           |

## Documentation

Full documentation is available at:

<https://mathiaspaulenko.github.io/behave-runner/>

## Contributing

Contributions are welcome. Please read
[CONTRIBUTING.md](https://github.com/MathiasPaulenko/behave-runner/blob/main/CONTRIBUTING.md)
for guidelines.

## Links

- **Repository**: <https://github.com/MathiasPaulenko/behave-runner>
- **Issues**: <https://github.com/MathiasPaulenko/behave-runner/issues>
- **Discussions**: <https://github.com/MathiasPaulenko/behave-runner/discussions>
- **PyPI**: <https://pypi.org/project/behave-runner/>

## License

MIT
