Skip to main content

AI-powered QA automation CLI — tests your app from Jira tickets, reports bugs back automatically

Project description

AntiQA

AI-powered QA automation from your terminal. AntiQA reads Jira tickets, runs browser tests, detects bugs, and reports them back to Jira — like having an autonomous QA engineer on your team.

pip install antiqa        # or: uv pip install antiqa
antiqa init               # one-time setup (asks for keys, crawls your app)
antiqa run JIRA-123       # test a ticket end-to-end

How It Works

antiqa run PROJ-42
  1. Fetches the Jira ticket
  2. Checks for attached test case files (Excel/CSV) — these always take priority
  3. If no test cases attached, falls back to AI analysis of the ticket description
  4. AI converts test cases into executable browser flows
  5. Launches a real browser and runs every step
  6. Monitors for console errors, API failures, JS exceptions, and memory leaks
  7. Analyses failures with AI and generates detailed bug reports
  8. Creates sub-task bug tickets on Jira with screenshots as proof
  9. Cleans up screenshots from your project after upload

Installation

Requirements: Python 3.11+

# With pip
pip install antiqa

# With uv (recommended)
uv pip install antiqa

Then initialize in your project directory:

cd your-project/
antiqa init

The wizard will:

  1. Ask for your app URL (e.g. http://localhost:3000)
  2. Ask for LLM provider & API key (OpenAI, Anthropic, or Ollama for local)
  3. Ask for Jira credentials (base URL, project key, email, API token)
  4. Ask for browser preference (Chromium, Firefox, or WebKit)
  5. Install the Playwright browser binary automatically
  6. Crawl your application and build a navigation graph
  7. Auto-generate starter test flows from discovered pages

After init, you just run antiqa run JIRA-123 — that's it.


Commands

Command Description
antiqa init Interactive setup wizard
antiqa run JIRA-123 Full pipeline: fetch ticket, test, report bugs
antiqa run JIRA-123 --dry-run Show the test plan without executing
antiqa run-local file.xlsx Run tests from local Excel/CSV files (no Jira)
antiqa crawl Discover app routes and build navigation graph
antiqa run-flow login Execute a specific YAML test flow
antiqa flows list List all available flows
antiqa generate-flows Auto-generate YAML flows from the navigation graph
antiqa generate-flows --ai AI-powered flow generation (happy paths + edge cases)
antiqa test "login and add a product" Generate and run a test from plain English
antiqa chat Interactive AI QA session (REPL)
antiqa audit AI accessibility audit (WCAG compliance)
antiqa config show Display current configuration

AI-Powered Features

Core Pipeline

  • Jira-aware testing — reads ticket descriptions and attached test case files (Excel/CSV)
  • AI test interpretation — converts human-written test steps into browser actions
  • AI failure analysis — generates bug reports with root cause, fix suggestions, and regression tests
  • Automatic bug filing — creates Jira sub-tasks with screenshots and detailed descriptions

Runtime Health Monitoring

  • Console errors and JS exceptions
  • API failures and network errors
  • Memory leaks and performance issues
  • Page crashes and security warnings

Advanced AI Features

  • Plain-text testingantiqa test "login with wrong password and verify error"
  • Visual AI review — screenshot analysis for UI/layout bugs using vision models
  • AI flow generation — generates comprehensive test flows from your app's navigation graph
  • Smart selector healing — auto-fixes broken CSS selectors when elements change
  • Conversational QAantiqa chat for interactive testing sessions
  • AI test data generation — realistic form data (valid, invalid, edge cases, security payloads)
  • Root cause clustering — groups test failures by probable root cause
  • Accessibility audit — WCAG compliance checking across your app
  • Enhanced bug descriptions — AI-generated fix suggestions, user impact analysis, and regression tests
  • Natural language assertions — write assertions in plain English in your YAML flows

YAML Test Flows

Define reusable test flows:

name: login
description: Log in with valid credentials
steps:
  - action: navigate
    url: "{{app_url}}/login"
  - action: fill
    selector: "#username"
    value: "{{username}}"
  - action: fill
    selector: "#password"
    value: "{{password}}"
  - action: click
    selector: "button[type=submit]"
  - action: wait_for
    selector: ".dashboard"
assertions:
  - type: url_contains
    value: "/dashboard"

Supports variable interpolation ({{var}}), flow includes, and natural language assertions.


Architecture

CLI (Typer + Rich)
  |
  +-- Config (Pydantic schemas, antiqa.json)
  +-- AI Agents (Agno framework, multi-provider LLM)
  +-- Flow Engine (YAML parser, variable resolver, assertions)
  +-- Browser (Playwright — deterministic actions, not AI-controlled)
  +-- Crawler (BFS discovery, navigation graph)
  +-- Jira Integration (issue CRUD, attachments, comments)
  +-- Pipeline Orchestrator (ties everything together)

Design principle: Browser actions are deterministic (click, fill, navigate). AI handles intelligence — planning, analysis, and reporting. This avoids flaky, non-reproducible tests.


Supported LLM Providers

Provider Models Notes
OpenAI gpt-4o, gpt-4o-mini, o1, etc. Best overall experience
Anthropic claude-sonnet-4-20250514, claude-3.5-haiku, etc. Great for analysis
Ollama llama3, mistral, codellama, etc. Fully local, no API key

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

antiqa-0.1.0.tar.gz (69.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

antiqa-0.1.0-py3-none-any.whl (103.9 kB view details)

Uploaded Python 3

File details

Details for the file antiqa-0.1.0.tar.gz.

File metadata

  • Download URL: antiqa-0.1.0.tar.gz
  • Upload date:
  • Size: 69.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for antiqa-0.1.0.tar.gz
Algorithm Hash digest
SHA256 32069d299c210ff3dcd335dd8503d2d61421aee161206c1c9c591a153586f591
MD5 3215037dddb797bc6708a082dd61c47a
BLAKE2b-256 86cb17d6918a2a8486831083b9a55bae05a3f4564e36f5f988ecb2f07c3ef2e1

See more details on using hashes here.

File details

Details for the file antiqa-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: antiqa-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 103.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for antiqa-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14dbb7094c211677a0d524d490f335ba18eed4be0996f31a91343148b29d7245
MD5 eaa2b106fb6c14cf64b1257f29b11bf1
BLAKE2b-256 b4d5824e86a24ce22b9786ed1a0e1dfcc1c7a6b210fdf3337edaf9eb9bb8dcc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page