Metadata-Version: 2.4
Name: auto_playwright
Version: 0.2.0
Summary: Plain English to Playwright Python Automation
Author: Arif Shah
Requires-Python: >=3.10,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: all
Provides-Extra: dev
Requires-Dist: black ; extra == "dev" or extra == "all"
Requires-Dist: isort ; extra == "dev" or extra == "all"
Requires-Dist: mypy ; extra == "dev" or extra == "all"
Requires-Dist: openai (>=2.16.0,<3.0.0)
Requires-Dist: pip-audit ; extra == "dev" or extra == "all"
Requires-Dist: playwright (>=1.57.0,<2.0.0)
Requires-Dist: pytest ; extra == "dev" or extra == "all"
Requires-Dist: pytest-cov ; extra == "dev" or extra == "all"
Requires-Dist: python-decouple (>=3.8,<4.0)
Requires-Dist: pyyaml (>=6.0.3,<7.0.0)
Requires-Dist: ruff ; extra == "dev" or extra == "all"
Description-Content-Type: text/markdown

# auto-playwright

Plain-English `.flow` files → Playwright (Python) runner.

## Install

### Poetry

```bash
poetry install
```

Dev tools (pytest/formatters) via extras:

```bash
poetry install --extras dev
# or
poetry install --all-extras
```

### pip

```bash
pip install .

# Dev tools
pip install '.[dev]'
```

## Run

```bash
poetry run ap examples/amazon_search.flow
```

### Safety / Logging env vars

- `AUTO_PLAYWRIGHT_ALLOWED_DOMAINS` (optional): comma-separated hostname allowlist for **top-level** navigations.
  - Supports exact hosts (`example.com`) and wildcards (`*.example.com`).
  - If unset/empty, no allowlist is enforced.

- `AUTO_PLAYWRIGHT_POLICY_FILE` (optional): YAML policy file path.
  - `allowed_domains`: additional domain allowlist.
  - `blocked_actions`: DSL actions to block globally (for governance), e.g. `["sleep"]`.
  - Example policy: `tools/runtime_policy.example.yaml`

- `AUTO_PLAYWRIGHT_PERSISTENT_PROFILE` (optional, default `0`): use persistent browser profile (`1`/`true`) vs isolated ephemeral context (default).
- `AUTO_PLAYWRIGHT_PROFILE_DIR` (optional): profile path used when persistent profile is enabled.

- Logs and `run_report.*` are automatically redacted for common secrets (tokens/keys in env + URL query params).

Run a directory (batch mode):

```bash
poetry run ap examples/
```

## Artifacts / Output layout

Each run writes all artifacts under:

```
output/<flow>/<timestamp>/
  run_report.json
  run_report.html
  artifacts/
    trace.zip              (optional)
    video/                 (optional)
    errors/error_step_*.png
    code/                  (debug/dump-code)
    final/                 (final healed test)
    flows/                 (generated flow, if different)
```

## Debug / code generation

Generate both plain + intelligent code and keep the browser open:

```bash
poetry run ap examples/amazon_search.flow --debug
```

Generate code only (no execution):

```bash
poetry run ap examples/amazon_search.flow --dump-code
```

## Tracing / Video / Screenshots

```bash
poetry run ap examples/amazon_search.flow --trace on
poetry run ap examples/amazon_search.flow --trace on-failure

poetry run ap examples/amazon_search.flow --video on
poetry run ap examples/amazon_search.flow --video on-failure

# enabled by default; use --no-screenshot-on-failure to disable
poetry run ap examples/amazon_search.flow --no-screenshot-on-failure
```

## Tests (unit / smoke)

No real browser/network is used in tests.

```bash
poetry run pytest
```

