Skip to main content

UX/UI audit tool with screenshots and Gemini analysis

Project description

uxaudit

PyPI Python CI License

UXAudit logo

UX/UI audit tool that captures screenshots and analyzes them with Gemini.

Highlights

  • Full-page and section screenshots with evidence links.
  • Multi-page crawling from header, nav, and footer.
  • Structured JSON output for agents and pipelines.

Requirements

  • Python 3.10+
  • Playwright browsers: playwright install
  • Gemini API key: GEMINI_API_KEY (or GOOGLE_API_KEY)

Install

PyPI

python3 -m pip install uxaudit

Editable (dev)

python3 -m pip install -e .[dev]

Usage

export GEMINI_API_KEY="your-key"
uxaudit analyze https://example.com --model flash

Outputs are written to runs/<run_id>/ with manifest.json and report.json.

Redesign mode (visual alternatives)

Generate bold, visual redesign concepts plus NanoBanana-ready prompts:

uxaudit redesign https://example.com \\
  --variants 4 \\
  --goals "premium, conversion-focused" \\
  --style-notes "bold typography, large imagery" \\
  --constraints "keep logo, keep primary CTA"

Outputs are written to runs/<run_id>/ with redesign.json and a local preview at redesign/index.html. By default, uxaudit auto-generates renders using Gemini image generation (NanoBanana Pro) with the same API key. To skip auto rendering, use --render-mode none. You can override the image model with --render-model (default nano-banana-pro maps to gemini-3-pro-image-preview). Save or replace visuals at redesign/concept-<page>-<index>.png to update the preview.

Crawling multiple pages

uxaudit analyze https://example.com --max-pages 5

Style consistency analysis

By default uxaudit runs a cross-screenshot style consistency pass. You can disable it or tune the batch size:

uxaudit analyze https://example.com --no-style-consistency
uxaudit analyze https://example.com --style-consistency-batch-size 10

Login (form-based)

# Example with fake credentials
export UXAUDIT_AUTH_USERNAME="alex.rios@example.test"
export UXAUDIT_AUTH_PASSWORD="P@ssw0rd-Example-123"

uxaudit analyze https://demo.example.test \\
  --auth-mode form \\
  --auth-login-url https://demo.example.test/login \\
  --auth-post-login-url https://demo.example.test/app \\
  --auth-username-selector "#email" \\
  --auth-password-selector "#password" \\
  --auth-submit-selector "button[type=submit]" \\
  --auth-success-selector ".dashboard"

Login (storage state)

uxaudit analyze https://app.example.com \\
  --auth-mode storage_state \\
  --auth-storage-state /path/to/storage_state.json

Development

ruff check .
ruff format .
mypy uxaudit
pytest

Project links

CLI options

uxaudit analyze --help

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

uxaudit-0.2.0.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

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

uxaudit-0.2.0-py3-none-any.whl (32.8 kB view details)

Uploaded Python 3

File details

Details for the file uxaudit-0.2.0.tar.gz.

File metadata

  • Download URL: uxaudit-0.2.0.tar.gz
  • Upload date:
  • Size: 31.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for uxaudit-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d334a2701a4ba820e74f12d2eed85b8912e7ac0ca7f28e6d2d5a46e811d73e43
MD5 a270b51fb2d9131c4ea5f649cae3ef19
BLAKE2b-256 23a10f4496421866bcbd66b79196f5a33563037ebe5e1f5bba27036d7c4c86af

See more details on using hashes here.

Provenance

The following attestation bundles were made for uxaudit-0.2.0.tar.gz:

Publisher: release.yml on albertoburgosplaza/uxaudit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file uxaudit-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: uxaudit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 32.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for uxaudit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9f2a0422928486e93b9656a6cf57b2213e7909f551d4faafb4b4bdcb6b94a20a
MD5 ca6bc70c1cdc08daae62a5ebd69b1480
BLAKE2b-256 2acabdf85715f600bd7e568b396827ea1ca4f4869322f1c433f715731966abb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for uxaudit-0.2.0-py3-none-any.whl:

Publisher: release.yml on albertoburgosplaza/uxaudit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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