npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@argus-vrt/cli

v0.1.1

Published

Argus CLI - Visual Regression Testing for React Native

Downloads

204

Readme

@argus-vrt/cli

Visual Regression Testing for React Native

Capture screenshots from iOS Simulators for all your Storybook stories, compare them against baselines, and review changes in a web dashboard.

Prerequisites

  • macOS with Xcode installed
  • Node.js >= 20
  • React Native app with Storybook configured
  • iOS Simulator

Installation

yarn add -D @argus-vrt/cli
# or
npm install -D @argus-vrt/cli

Quick Start

1. Initialize

yarn argus init

This will auto-detect your Storybook config, find available iOS simulators, and create .argus.json with sensible defaults.

2. Add scripts to package.json

{
  "scripts": {
    "visual:test": "argus test",
    "visual:baseline": "argus baseline --update"
  }
}

3. Create initial baselines

# Make sure your React Native app with Storybook is running
yarn ios

# Capture screenshots and set baselines
yarn visual:test --skip-upload
yarn visual:baseline

# Commit your baselines
git add .visual-baselines
git commit -m "chore: add visual baselines"

4. Run visual tests

# After making UI changes
yarn visual:test

# If changes are intentional, update baselines
yarn visual:baseline

Commands

argus test

Run a complete visual test cycle: capture screenshots, compare against baselines, and upload results.

argus test [options]

Options:
  -b, --branch <branch>       Override current git branch
  --base <branch>              Base branch for comparison (default: main)
  --skip-capture               Skip screenshot capture, use existing screenshots
  --skip-upload                Skip uploading results to the web dashboard
  -t, --threshold <threshold>  Difference threshold 0-1 (default: 0.01)

argus init

Interactive setup wizard for your project.

argus init [options]

Options:
  -f, --force   Overwrite existing configuration

argus baseline

Manage visual baselines.

argus baseline [options]

Options:
  --update             Update baselines from current screenshots
  --clear              Clear all baselines
  -b, --branch <branch>  Branch to use for screenshots (default: current)

argus capture-all

Capture screenshots of all Storybook stories.

argus capture-all [options]

Options:
  -b, --branch <branch>     Override current git branch
  -s, --scheme <scheme>     URL scheme for deep linking
  -d, --delay <ms>          Delay between captures in ms (default: 1500)
  -f, --filter <pattern>    Filter stories by regex pattern
  --skip-shutdown            Keep simulator running after capture

argus compare

Compare current screenshots against baselines.

argus compare [options]

Options:
  --base <branch>              Base branch for comparison (default: main)
  --current <branch>           Current branch (default: current git branch)
  -t, --threshold <threshold>  Difference threshold 0-1 (default: 0.01)
  --no-report                  Skip HTML report generation

argus upload

Upload comparison results to the web dashboard.

argus upload [options]

Options:
  -b, --branch <branch>    Override current git branch
  -u, --api-url <url>      Override API URL from config

argus list-stories

List all Storybook stories detected in the project.

argus list-stories [options]

Options:
  --json   Output as JSON

Configuration

Configuration is stored in .argus.json in your project root. Run argus init to generate it interactively.

{
  "storybook": {
    "port": 7007,
    "scheme": "myapp",
    "startCommand": "yarn storybook:ios"
  },
  "simulator": {
    "device": "iPhone 16 Pro",
    "os": "18.2",
    "bundleId": "com.myapp"
  },
  "comparison": {
    "mode": "threshold",
    "threshold": 0.01,
    "includeMetrics": true
  },
  "baselineDir": ".visual-baselines",
  "screenshotDir": ".visual-screenshots",
  "apiUrl": "http://localhost:3000"
}

| Field | Required | Description | |-------|----------|-------------| | storybook.port | Yes | Storybook WebSocket port | | storybook.scheme | Yes | iOS URL scheme for deep linking | | storybook.startCommand | No | Command to start Storybook | | simulator.device | Yes | Exact simulator device name (from xcrun simctl list devices) | | simulator.os | Yes | iOS version | | simulator.bundleId | Yes | App bundle identifier | | comparison.mode | No | "strict" or "threshold" (default: "threshold") | | comparison.threshold | No | Pixel diff threshold 0-1 (default: 0.01) | | baselineDir | No | Directory for baseline images (default: .visual-baselines) | | screenshotDir | No | Directory for screenshots (default: .visual-screenshots) | | apiUrl | No | Web dashboard URL for uploading results |

Web Dashboard

For a visual review interface with side-by-side diffs and overlay views, see @argus-vrt/web.

How It Works

  1. Capture - Boots iOS simulator, launches your app with Storybook, navigates to each story via deep links, and captures screenshots
  2. Compare - Compares current screenshots against baselines using Pixelmatch, generates diff images highlighting changed pixels
  3. Upload - Sends results to the web dashboard API (optional)
  4. Review - Use the web dashboard to review changes with overlay, side-by-side, and diff views

License

MIT