Appium 2 · Android & iOS · Zero Runtime LLMs

Mobile QA.
Bugs caught with proof.

QAlprit turns readable Markdown test specs into deterministic native mobile runs—with RFC 6238 TOTP secrets, in-memory Pillow bounding-box redaction, guaranteed teardown, and self-contained HTML evidence reports.

qalprit-cli · zsh
$ qalprit doctor
[ OK ] Python                       3.11.15
[ OK ] Appium                       v2.11.3
[ OK ] Appium driver: uiautomator2  Installed
[ OK ] Android adb                  1.0.41

$ qalprit validate --suite mda --env mda
Validation PASSED: 5 spec(s), 3 flow(s), 0 warning(s).

$ qalprit run --platform android --device android_emulator \
    --app apps/mda-demo.apk --env mda --suite mda --retries 1
Starting QAlprit run 20261113_135128_android_mda (5 spec(s))...
Run complete: 4 passed, 1 failed, 0 skipped, 1 flaky
Report HTML : results/20261113_135128_android_mda/report.html

100% Deterministic

Zero LLM API calls at runtime. Specs compile to Appium 2 actions with auto-wait readiness and explicit failure traces.

In-Memory Redaction

Sensitive fields (`secret: true` or `sensitive: true`) are black-filled via Pillow in memory before any PNG touches disk.

Markdown + 1-Level Flows

QA engineers write YAML front matter specs, reuse 1-level `flows/`, and map shared locators in `screens/screens.yaml`.

Proof-First Reports

Every run emits a single self-contained `report.html`, `summary.md`, `results.json`, failure XML, and `appium.log`.

Interactive Evidence Demo

Live Proof Report Viewer

Explore a sanitized QAlprit run. Filter by outcome or tag, inspect expanded flow steps, and click any step screenshot to verify in-memory Pillow secret redaction.

Run: 20261113_135128_android_mda Open Full Real 5/5 MDA Report
Pass Rate80%
Total Specs5
Passed4
Failed1
Flaky1
Redacted Boxes6

Authoring Experience

Spec & Locator Studio

No Python required to author tests. Inspect the exact YAML front matter, 1-level flow, and sensitive locator configuration that power QAlprit.

---
id: MDA-004
title: End-to-end authenticated purchase checkout with sensitive data redaction
tags: [mda, checkout, e2e, regression]
platforms: [android, ios]
reset: clear_data
steps:
  - run_flow:
      flow: mda/login
      params:
        username: "${MDA_USER}"
        password: "${MDA_PASS}"
  - tap: mda_catalog.first_product_image
  - tap: mda_product.increase_qty
  - tap: mda_product.add_to_cart_button
  - tap: mda_nav.open_cart
  - tap: mda_cart.checkout_button
  - type: {target: mda_payment.card_number_field, value: "${MDA_CARD_NUMBER}", secret: true}
  - type: {target: mda_payment.security_code_field, value: "${MDA_CARD_CVV}", secret: true}
  - tap: mda_review.place_order_button
  - assert_visible: mda_complete.thank_you
  - screenshot: mda_order_complete
teardown:
  - tap_if_visible: mda_nav.open_menu
  - tap_if_visible: mda_nav.menu_logout
expected: Full purchase completes with card/CVV pixels black-filled in memory.
---

System Design

Four-Layer Deterministic Pipeline

Built with Python 3.10+, Appium 2, Pydantic, Jinja2, and Pillow. Editable Draw.io source lives in docs/architecture.drawio.

Open Draw.io Source
QAlprit four-layer architecture diagram covering authoring, deterministic core, Appium 2 targets, and in-memory Pillow evidence redaction
Figure 1: QAlprit execution flow from Markdown specs to redacted proof reports.

Step Screenshot