Skip to main content

robo-appian

robo-appian (robo appian / robo_appian) by Dinil Mithra makes Appian pages easier to automate with readable Python. It is a Python automation and testing library for Appian applications.

It is designed for people who know their web application and only need basic Python to start writing automation.

Quick example

from robo_appian import AppianPage


def test_update_item(page: AppianPage) -> None:
    page.textbox(label="Description").fill("Example item")
    page.date(label="Start Date").fill("10/15/2026")
    page.radio(label="Priority").select("High")
    page.button(name="Submit").click()

The goal is to describe the page using the same text a user sees.

Install

pip install robo-appian
python -m playwright install firefox

Python 3.12 is required. robo-appian uses robo-automation for generic browser and pytest infrastructure.

Common controls

page.textbox(label="Description").fill("Example item")
page.textbox(placeholder="example@example.com").fill("user@example.com")
page.textbox("Employee").select(search_text="John", value="John Smith")
page.date(label="Start Date").fill("10/15/2026")
page.radio(label="Priority").select("High")
page.button(name="Next").click()

Textboxes, dates, and selection components automatically move focus out after a value changes so Appian can process it.

What belongs where?

Your application tests
        ↓
robo-appian       Appian controls and Appian behavior
        ↓
robo-automation   Browser and pytest infrastructure
        ↓
Playwright

Your application project should own application URLs, login policy, business workflows, assertions, and test data.

Documentation

Start with the beginner guides:

  • Installation
  • Quick Start
  • Your First Test
  • Choosing a Component
  • Troubleshooting

Advanced architecture and pytest integration are documented separately for framework maintainers.

Full documentation:

https://dinilmithra.github.io/robo-appian-docs/

License

robo-appian is licensed under the MIT License.

Error handling

Appian-specific library failures use RoboAppianError, which is also a RoboAutomationError. Normal tests should usually let pytest report these errors. If you need recovery or diagnostic handling, see How to use RoboAppianError for examples using code, details, to_dict(), and exception chaining.

Runtime boundary for application projects

Application projects should normally import automation APIs only from robo_appian.

from robo_appian import AppianPage, AppianRuntime, RoboAppianError

AppianRuntime provides the Appian-facing browser/session lifecycle used by advanced consumer fixtures. It intentionally hides lower browser and performance implementation classes. Normal test authors usually only need the page fixture and component APIs shown above.

Automation authoring

Use the component APIs directly to build application-specific automation suites. Recording, step review, test generation and Testcase Studio are supplied by a separate optional authoring library. Generated tests use the same public Appian components and runtime; installing the authoring UI is not required to run them.

Exact keyed grid rows

grid.row_matching(column_name="Vendor #", value="549") returns a live row matched by normalized exact text in the named column. With its default wait=True, it requires one matching grid and one matching row; duplicates fail rather than selecting the first match. timeout, tri-state visible, and wait=False are available. Existing positional/named row, column, cell and counting APIs are unchanged. This lookup only searches rendered rows and does not paginate.

Use grid.row(name=..., exact=True, unique=True) to require a unique named row. One-based row and column numbers are also supported. Numbered rows are positional and do not remain bound to the same record after sorting or filtering.

Dialog-scoped fields

AppianDialog now exposes textbox(...), date(...) and grid(...) using the existing component constructors with dialog scope. dialog.grid(..., wait=False) supports optional lookup; default grid/row/cell/component synchronization remains in place. Grid cell actions retain the original AppianPage as their owner.

Headless execution

Pytest browsers default to visible (HEAD_LESS=N) in this workspace. Use HEAD_LESS=Y for headless execution. See the Headless execution guide for project .env, shell, CI and VS Code examples, configuration precedence, and the proposed fixture override.

Repository-only Component identification requirements describe how RoboAppian recognizes buttons and other components. This technical reference is kept outside the GitHub Pages documentation source.

Setup help

From the project directory:

py -3.12 .\tools\setup.py --help

Options include --browser {all,chromium,firefox,webkit}, --with-docs, --bootstrap-poetry, and --bootstrap-timeout (30 seconds by default). Help lists supported choices and defaults without creating an environment or installing packages. Unknown options are rejected before setup begins.

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 for requirements, platform builds, readable entry-point exceptions and release instructions.

Documentation

User documentation and homepage assets are maintained in the separate public robo-appian-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-appian-docs/ .

Internal documentation: technical-documentation.

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. Supply --bootstrap-poetry if the pinned Poetry tool is not installed.

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.

Metadata

Release files for robo-appian 0.1.37

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for robo-appian 0.1.37
File Actions
robo_appian-0.1.37-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for robo_appian-0.1.37-cp312-cp312-win_amd64.whl
robo_appian-0.1.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details for robo_appian-0.1.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
robo_appian-0.1.37-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details for robo_appian-0.1.37-cp312-cp312-macosx_15_0_x86_64.whl
robo_appian-0.1.37-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details for robo_appian-0.1.37-cp312-cp312-macosx_15_0_arm64.whl

Total release size: 15.1 MB

Release files / robo_appian-0.1.37-cp312-cp312-win_amd64.whl

Download URL robo_appian-0.1.37-cp312-cp312-win_amd64.whl
Size 1.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
53c6eac2ff39ec1c68e68573292de3876aeef05378adc1911d745bb801f1f568
BLAKE2b-256 checksum
How to use checksums
d4a6b8bad3064598ea34e1fd11a92828e59ba444d53e39f2783b1365bac88d71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / robo_appian-0.1.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL robo_appian-0.1.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 8.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
25170c1078a881d89678e88de2f9d21c932ed48952a89b8906e451cb762a6de7
BLAKE2b-256 checksum
How to use checksums
ba870056269f705af71c259f0510b818b9cdde6e7f6019eeb85c447a2e00ba0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / robo_appian-0.1.37-cp312-cp312-macosx_15_0_x86_64.whl

Download URL robo_appian-0.1.37-cp312-cp312-macosx_15_0_x86_64.whl
Size 2.6 MB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
d9e4d09fcbc3cc63bf6d434c3a7b1d6fa89a6b854d81480c38709fd0c31d003f
BLAKE2b-256 checksum
How to use checksums
e36bfaca0ec7d0d728ea8df9f598e04a931f73f387ec238992dd37d67b6266c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / robo_appian-0.1.37-cp312-cp312-macosx_15_0_arm64.whl

Download URL robo_appian-0.1.37-cp312-cp312-macosx_15_0_arm64.whl
Size 2.6 MB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
47b0eed05359cd435bfe15e5f3079a18659774c81d70854282448731168ef789
BLAKE2b-256 checksum
How to use checksums
241540d05883f3ac85b7ec329fcfc6833fcbddc4932e9cb7c02f6caeeb60c20a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Security for robo-appian 0.1.37

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 4 files in this release have been uploaded with provenance metadata.

Select from 4 files

Attestation for robo_appian-0.1.37-cp312-cp312-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.37 This release

4 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page