Metadata-Version: 2.4
Name: marionette-test
Version: 0.1.6
Summary: Automated API testing tool for Spring projects, with custom action hooks and Essay-compatible evidence layout
Project-URL: Homepage, https://pypi.org/project/marionette-test/
Project-URL: Repository, https://github.com/luvmagi/marionette-test
Project-URL: Changelog, https://github.com/luvmagi/marionette-test/blob/main/CHANGELOG.md
Author-email: luvmagi <luvmagi@outlook.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.11
Requires-Dist: fastapi>=0.110
Requires-Dist: httpx>=0.27
Requires-Dist: jsonpath-ng>=1.6
Requires-Dist: jsonschema>=4.21
Requires-Dist: psycopg2-binary>=2.9
Requires-Dist: pydantic>=2.6
Requires-Dist: questionary>=2.0
Requires-Dist: rich>=13.7
Requires-Dist: ruamel-yaml>=0.18
Requires-Dist: typer>=0.12
Requires-Dist: uvicorn>=0.27
Provides-Extra: dev
Requires-Dist: hatch>=1.9; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Requires-Dist: twine>=5.0; extra == 'dev'
Description-Content-Type: text/markdown

# marionette-test

Automated API testing tool for Spring projects, with custom action hooks and an
Essay-compatible evidence layout.

> Alpha — V1 backend-API surface is implemented and tested. See
> `docs/marionette-test/` for the design specs and `docs/guides/` for user-facing
> documentation.

## Install

```bash
pip install marionette-test
```

## Quick start

```bash
cd <your-project>
marionette-test init                  # scaffold workspace
$EDITOR config/env.yml                # point at your backend + DB
export DB_PASSWORD=... API_BEARER_TOKEN=...
marionette-test doctor                # six read-only checks
marionette-test run                   # execute every FeatureUnit
marionette-test serve                 # FastAPI + UI on :8765
```

A complete walk-through is in [docs/guides/01-getting-started.md](docs/guides/01-getting-started.md).

## User guides

| Guide                                                                       | What it covers                                  |
| --------------------------------------------------------------------------- | ----------------------------------------------- |
| [01 — Getting Started](docs/guides/01-getting-started.md)                   | Install, scaffold, write & run your first test |
| [02 — Writing FeatureUnits](docs/guides/02-feature-units.md)                | Full YAML schema reference                     |
| [03 — Custom Actions](docs/guides/03-custom-actions.md)                     | `@action`, `Context`, 4 hook timings           |
| [04 — Database Baseline](docs/guides/04-database-baseline.md)               | `pg_dump` / `pg_restore` / clone lifecycle     |
| [05 — CLI Reference](docs/guides/05-cli-reference.md)                       | Every subcommand and flag                      |
| [06 — Variables & Assertions](docs/guides/06-variables-and-assertions.md)   | `${...}` grammar, `expect.*` rule grammar      |

## Develop locally

This repo uses [uv](https://github.com/astral-sh/uv) for environment management.

```bash
uv sync                         # create .venv and install runtime + dev deps
uv run marionette-test --version
uv run pytest                   # full test suite
uv run ruff check src/ tests/
```

Build a wheel locally:

```bash
uv run hatch build              # produces dist/*.whl + *.tar.gz
```

Build the React UI (output lands inside the Python package so the wheel ships
it):

```bash
cd web
npm install
npm run build                   # → src/marionette/test/web_dist/
```

## License

MIT — see [LICENSE](LICENSE).
