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.38

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.38
File Actions
robo_appian-0.1.38-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for robo_appian-0.1.38-cp312-cp312-win_amd64.whl
robo_appian-0.1.38-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.38-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
robo_appian-0.1.38-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.38-cp312-cp312-macosx_15_0_x86_64.whl
robo_appian-0.1.38-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details for robo_appian-0.1.38-cp312-cp312-macosx_15_0_arm64.whl

Total release size: 15.1 MB

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

Download URL robo_appian-0.1.38-cp312-cp312-win_amd64.whl
Size 1.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
32ce7f51f0cc480ea34a8d9d0c63a562b37c3a12b352e1e7e298301ea106640b
BLAKE2b-256 checksum
How to use checksums
c469c5b0f04ad909d92fc6d2e7ce664e395c394a0a1cdd367c7578d8b3c56162
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.38-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL robo_appian-0.1.38-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 8.7 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
83a6aafd5a4204f5518a8c9b5b6e5ebe60e9bc3af755a317790e7ed750fc5271
BLAKE2b-256 checksum
How to use checksums
2c080b9c103566e074e8819334cc5b66f6b5ba9a24683d43bf883df3fc0de23d
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.38-cp312-cp312-macosx_15_0_x86_64.whl

Download URL robo_appian-0.1.38-cp312-cp312-macosx_15_0_x86_64.whl
Size 2.7 MB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
3995ad529f777637d656aea1f1fdc9979651b6dd0c1662f855563cd71cfd227b
BLAKE2b-256 checksum
How to use checksums
9f25d56ca335fe891d1003aa860f6d44cce69fdf0cc79c2851f1fd07e3df6c9a
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.38-cp312-cp312-macosx_15_0_arm64.whl

Download URL robo_appian-0.1.38-cp312-cp312-macosx_15_0_arm64.whl
Size 2.7 MB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
e31c3914d78e109a270f1368e771436e70fad603f2382812da9fbaffc9aeedf5
BLAKE2b-256 checksum
How to use checksums
4c3a97737d4adaf72236ec8a692aaaa3ef957a46ea580d384706feb06df4d390
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.38

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.38-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.38 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