Installation
Install robo-appian into the Python environment that runs your tests. The package provides Appian-specific components and a platform-independent CLI for provisioning framework-managed browser binaries. Generic the browser automation runtime wrappers and pytest lifecycle are supplied by its robo-automation dependency.
Requirements
- Python 3.12 (
>=3.12,<3.13) - pytest
- one or more the browser automation runtime-supported browser engines installed for the environment that executes the tests
playwright, pytest, and robo-automation are direct dependencies in the current package metadata. The generic fixture stack itself is owned by robo-automation; a consuming project does not need pytest-playwright for that stack.
Install with pip
Install with Poetry
Installing the Python package installs the browser automation runtime. Browser binaries are provisioned explicitly so projects can choose only what they need.
Install browser binaries
The CLI invokes the browser automation runtime with the current Python interpreter (sys.executable -m playwright install ...), so it works consistently in Windows, Linux, macOS, virtual environments, Poetry environments, and CI agents.
Install the full framework-managed browser set:
all is an explicit alias for the same full install:
Install only one engine:
robo-appian install-browser firefox
robo-appian install-browser chromium
robo-appian install-browser webkit
With Poetry:
Install the browser you actually run
The default generic browser lifecycle uses BROWSER=chromium when no browser is configured. If your test environment sets BROWSER=firefox, install Firefox with robo-appian install-browser firefox.
Configure the runtime browser
The generic lifecycle owned by the robo-automation pytest plugin reads browser configuration from the automation environment. The primary settings are:
| Setting | Purpose | Default |
|---|---|---|
BROWSER |
Browser engine: chromium, firefox, or webkit |
chromium |
HEAD_LESS |
Run without a visible browser window | true |
WAIT_TIME |
Default operation/navigation timeout in seconds | automation-project configuration |
For example:
Then provision the matching engine:
Enable the pytest fixtures
Installing robo-automation registers robo_automation.pytest_plugin through pytest's pytest11 entry-point group. Under normal plugin autoloading, no conftest.py import, pytest_plugins declaration, or -p option is required.
Use the page fixture in Appian tests. The supporting runtime is configured automatically through the installed plugins:
robo-automation: robo_page -> AppianPage
↓
robo-appian: appian_page -> AppianPage
↓
page -> AppianPage
A normal Appian test consumes AppianPage:
from robo_appian import AppianPage
def test_home(page: AppianPage) -> None:
page.goto("https://your-appian-site.example/")
Application projects can override generic context inputs such as storage_state, context_options, wait_time, and context_page_handler, and may override page when application-specific navigation/login is required. See Pytest Integration.
Verify the installation
Verify both package layers:
python -c "import robo_appian; from robo_appian import AppianPage, AppianLocator; print('imports OK')"
Verify the CLI:
What installation does not configure
robo-appian intentionally does not know your application-specific:
- Appian URLs
- credentials or secret-management policy
- authentication workflow
- business workflows and assertions
- test data
- application labels and rules
- worker-to-credential mapping
Those remain in the consuming project. robo-appian owns reusable Appian interaction mechanics; robo-automation owns the generic browser/runtime wrapper and pytest layer.
Contributor project environment
Run python tools/setup_venv.py from the library checkout. Setup uses an external
Poetry 2.5.1 for dependency synchronization, then installs Poetry 2.5.1 inside
robo-appian/.venv for publishing. It verifies the local module with
.venv/Scripts/python.exe -m poetry --version on Windows (or .venv/bin/python
on Unix) and checks installed dependency compatibility. An external Poetry
installation is required initially; --bootstrap-poetry permits a temporary
bootstrap when it is unavailable. The --with-docs and --browser options are
preserved.