Skip to main content

Synthetic UX testing

Project description

ux-swarm

npm PyPI Python License: MIT CI codecov

Point a swarm of synthetic users at any URL or screenshot, give them a task, and see their completion rate and pain points.

Highlights

  • Instant testing - simulate 20 users in under a minute; no scheduling, no interviews
  • Repeatable - run before and after a deploy to track whether completion rate improved
  • Real signal - not a replacement for user testing, but genuine findings at a fraction of the cost and time
  • Customizable personas - define your own user types and weight the swarm to match your real audience
  • Accessibility included - screen reader personas ship out of the box

Overview

ux-swarm is a CLI tool for synthetic UX testing built for frontend developers who want fast, quantifiable signal during development or after launch. Share a URL or screenshot, give it a task, watch a swarm of distinct user personas try to execute it, and review completion rates, feedback, and ranked pain points.

Two modes: browser swarm sends each agent into a live Playwright session to navigate a site step-by-step — good for flows like signup, checkout, or cancellations. Screenshot swarm runs faster and cheaper, using LLM vision to evaluate an image or UI — perfect for quick reviews and mockups before you have a live URL.

Authors

Built by @masonomara at O'Mara Technology.

Usage

demo

# browser swarm — live URL
swarm https://example.com complete the checkout flow

# screenshot swarm — image or mockup
swarm mockup.png find where to contact support

# limit agents or steps
swarm https://example.com create an account --users 10 --max-steps 5

Installation

npm

npm install -g ux-swarm
swarm config

pip

pip install ux-swarm
swarm config

uv

uv tool install ux-swarm
swarm config

Requires Python 3.11+. The npm package installs the Python tool underneath — Python must be present on your system. swarm config walks through provider selection, API key, model, and Playwright setup on first run.

Feedback and Contributing

Found a bug or have a feature request? Open an issue. For questions or ideas, start a Discussion.

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

ux_swarm-1.0.1.tar.gz (26.2 kB view details)

Uploaded Source

Built Distribution

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

ux_swarm-1.0.1-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file ux_swarm-1.0.1.tar.gz.

File metadata

  • Download URL: ux_swarm-1.0.1.tar.gz
  • Upload date:
  • Size: 26.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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":null}

File hashes

Hashes for ux_swarm-1.0.1.tar.gz
Algorithm Hash digest
SHA256 929648165320a27794e424c21eb286737d35c02d62f479d15fcd6903663c3e8a
MD5 de5d8a4a2aa18d7b066151c0a2d64e95
BLAKE2b-256 ee33e458d4cf11bf0382182eb12c4ec62f53ceb0744390b2c4753fe8acd5093e

See more details on using hashes here.

File details

Details for the file ux_swarm-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: ux_swarm-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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":null}

File hashes

Hashes for ux_swarm-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4af512cd0d88941bc9d1d886ac53f7de5609d9983e86b17ff3c17137b74b5a68
MD5 8ac6963e09d748abdaf57535f499db6d
BLAKE2b-256 4a8724939c73b40bad36dc5d0871ba64b581beec349a7f238327613c4e3311f7

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