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.1.1.tar.gz (26.6 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.1.1-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ux_swarm-1.1.1.tar.gz
  • Upload date:
  • Size: 26.6 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.1.1.tar.gz
Algorithm Hash digest
SHA256 2ce9663f4eff5d9260faaef5ee9111193d59b271925030f6307ceb791e35d1e3
MD5 7752b739c601aac7963f3854713f94ed
BLAKE2b-256 83207e44ddf5c6009efe26bc2c179325b6fdb50660bfebd3c1fedfe807776cc2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ux_swarm-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 31.5 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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 923c0e0903810ee12c7ba51d14108bf95cbf3cd4a745d02a72b612c47d9e6735
MD5 bbb91f48e867e499b231f413d4e91469
BLAKE2b-256 8a5c4e950f3501f73548dc37d306b8d78d82d4c7153a2601180a8eb259441bb8

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