Metadata-Version: 2.4
Name: robo-test-studio
Version: 0.1.2
Summary: Semantic browser recording, review, Python generation and Testcase Studio
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.12,<3.13
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: playwright (==1.63.0)
Requires-Dist: pytest (==9.1.1)
Requires-Dist: robo-appian (==0.1.38)
Description-Content-Type: text/markdown

# RoboTest Studio

Low-code/no-code test automation studio for recording, reviewing, generating,
and executing Appian tests.
Automation engineers can use RoboAppian component APIs directly; business users
record, review, verify, approve and execute in Studio without editing Python.
Both paths use the same semantic APIs and runtime. Unsupported controls still
need engineer mappings, and business expectations must be supplied explicitly.

## Project boundaries

| Project | Owns |
| --- | --- |
| `robo-appian` | Appian components, synchronization, assertions and runtime adapter |
| `robo-automation` | Browser resources, pytest integration, evidence infrastructure |
| `robo-test-studio` | Capture, recording model, approval, generation, UI and execution orchestration |
| `core-recorder` | Consumer configuration, recordings, test data and generated tests |

Dependency direction is Studio → Appian → Automation. Appian has no mandatory
Studio dependency and contains no recorder modules or CLI implementation.
Studio supplies the `appian` command for recording, review, generation and UI launch.
Generated tests import RoboAppian and pytest; they can execute without Studio.
Optional execution step telemetry is provided by `robo_appian.execution`.
See [migration](MIGRATION.md) to update earlier commands and imports.

## Setup from this workspace

```powershell
cd robo-test-studio
python tools/setup.py --browser chromium
poetry run appian ui
```

For business testing, run setup from the consumer `core-recorder` folder instead,
then launch `poetry run appian ui` there. This keeps recordings and
artifacts in the consumer project.

Distribution / import / executable: `robo-test-studio` / `robo_test_studio` /
`robo-test-studio`. `python -m robo_test_studio` also works.

```powershell
appian record --url "https://your-appian-host/suite/sites/your-site" --output recordings/request --start-recording
appian review recordings/request/recording.json
appian validate recordings/request/recording.json
appian generate recordings/request/recording.json --output tests/generated/test_request.py
```

Setup uses Poetry for environments and dependencies and accepts optional
`--browser chromium|chrome|msedge`. A standalone checkout uses compatible released
dependencies; workspace setup uses editable siblings when present. The new
library's lockfile is generated by `poetry lock` during setup. The new public
execution/input-key modules require current workspace Appian code until compatible
artifacts are released. Existing library versions are preserved. No uploads are
performed, and Studio is included in the publish-all release list after its dependencies.

## Environment setup options

From the library project directory:

```powershell
python tools/setup.py --help
python tools/setup.py --browser chromium --docs
```

The Python entry point delegates to `tools/setup.py` on Windows, Linux and
macOS. Python 3.12 is required. Setup selects
Poetry 2.5.1, creates or uses this project's `.venv`, locks and validates
dependencies, installs the project, and verifies local library imports. If
an Appian sibling checkout exists, Poetry installs Appian editable; otherwise it
resolves the released Appian dependency. Appian 0.1.36 or newer supplies Studio's
runtime configuration API and brings Automation transitively. Studio does not
declare or install an editable Automation checkout directly. Project packages are
managed through Poetry; Poetry itself lives in separate shared tooling.

Omit `--browser` to skip browser installation. The compatibility `--docs` option installs documentation
tools; website source and its normal build environment live in the public docs project. Existing environments are preserved. `--help` lists every supported
option without installing anything. Setup does not publish packages or sites.

After setup, run commands from this project:

```powershell
poetry run appian ui
poetry run python -c "import sys; print(sys.executable)"
```

For consumer recordings/tests, use the existing `core-recorder/tools/setup.py`
entry point from that project's folder, then launch Studio there.

## Documentation and checks

Maintain documentation in the public `robo-test-studio-docs` project. From that
project, run `python tools/setup.py --build` or `python tools/setup.py --serve`.
Run library unit and DOM checks from this private library project after setup.

## Documentation sites

- [RoboTest Studio](https://dinilmithra.github.io/robo-test-studio-docs/): recording, review, generation and execution workflows.
- [RoboAppian](https://dinilmithra.github.io/robo-appian-docs/): semantic component APIs and runtime integration.

The sites have separate GitHub Pages workflows. These links are the configured
destinations; deployment requires pushing each repository and enabling Pages.
See the public documentation repository README for publishing setup and
[MIGRATION.md](MIGRATION.md) for the library separation.

## License

Released under the [MIT License](LICENSE). Copyright (c) 2026 Dinil Mithra.
Third-party dependencies retain their own licenses.

## Snapshot defaults

This library project's `.env` keeps recording, execution and failure snapshots
off, including before-and-after capture. Enable capture in your consumer
application's `.env` and launch Studio from that application directory. Consumer
configuration and session overrides remain independent of the library's defaults.
See [Evidence](https://dinilmithra.github.io/robo-test-studio-docs/evidence/) for configuration details.

## Compiled distribution (maintainers)

Use `python scripts/github/build_compiled_wheel.py --plan` to review the protection
inventory and `python scripts/github/build_compiled_wheel.py` to build an audited native
wheel. See [compiled distributions](COMPILED_WHEELS.md) for requirements,
platform builds, readable entry-point exceptions and release instructions.

## Documentation

User documentation and homepage assets are maintained in the separate public
`robo-test-studio-docs` repository. This private project contains the library source.
The public repository owns its Poetry documentation environment and Pages workflow.
No documentation deployment token is required in this private repository.

Documentation site: https://dinilmithra.github.io/robo-test-studio-docs/ .

Internal documentation: [technical-documentation](technical-documentation/README.md).

## Repository environment setup

From this repository, run `python tools/setup.py --help` to see every supported option,
then `python tools/setup.py` with Python 3.12. Setup uses Poetry 2.5.1 and preserves
the existing repository-specific installation and validation steps.

## Setup security updates

Run `python tools/setup.py` with Python 3.12 to secure the project environment.
Setup verifies pip is at least 26.2.2, upgrading older pip through the official
SHA256-pinned wheel before downloading Poetry. Newer stable pip is preserved.
Poetry 2.5.1 tooling requires certifi>=2026.10.19. Existing external Poetry tools
with an outdated CA bundle are not used or modified; setup creates a secure
bootstrap environment where allowed. Appian setup needs `--bootstrap-poetry`
when no secure external Poetry installation is available.

Project dependencies and lockfiles stay under Poetry management. If certifi is
already locked below the security minimum, setup updates that lock through Poetry
and stops if the project constraints cannot resolve a safe version. A project
without certifi in its lockfile does not need to add it solely for the Poetry tool.
Downloads or verification failures stop setup before it reports success.

## Standalone setup

Environment creation, secure tooling bootstrap and Poetry validation are included in the project setup implementation. Run `python tools/setup.py --help`; a separate environment helper module is not required. Project setup options and existing environment names are preserved.

