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

@flick-run/cli

v0.1.4

Published

YAML-driven automated testing for iOS, Android, and Web — with live preview, crash detection, and local AI analysis

Readme

Flick

npm license

YAML-driven automated testing for iOS, Android, and Web — with live preview, crash detection, and local AI analysis.

npm install -g @flick-run/cli
flick init --platform ios
flick run

What is Flick?

Flick is an open-source testing tool that lets you write test flows in plain YAML and run them against iOS simulators, Android emulators, and web apps. It handles everything automatically — finding your app build, detecting your device, installing Appium, and running your test sessions.


Features

  • YAML-driven — write tests in plain YAML, no TypeScript or boilerplate
  • Live dashboard at localhost:4040 with session timeline, error screenshots, and logs
  • Crash detection — captures last screen, retries up to N times, marks step as crashed
  • Silent error detection — catches unhandled promises, TypeErrors, frozen screens
  • Local AI analysis — Ollama or LM Studio explains failures in plain English after every run
  • Zero device setup — auto-detects booted simulator/emulator, no UDID or paths needed
  • Web support — headless Chrome with live screenshot stream in dashboard

Install

npm install -g @flick-run/cli

Requires Node.js 20+.


Quick start

# 1. create a config
flick init --platform ios    # or android / web

# 2. edit flick.yml with your selectors

# 3. run
flick run

flick.yml reference

config:
  platform: ios # ios | android | web
  app: FlickStore # iOS: scheme name. Android: .apk path. Web: URL
  retries: 2 # crash retry attempts per step

auth:
  email: [email protected]
  password: ${TEST_PASSWORD} # loaded from .env automatically

sessions:
  - name: "Login flow"
    steps:
      - action: tap
        selector: "~login-btn" # ~ = testID in React Native
      - action: fill
        selector: "~email-input"
        value: ${auth.email}
      - action: fill
        selector: "~password-input"
        value: ${auth.password}
      - action: tap
        selector: "~login-btn"
      - action: wait
        duration: 1500
      - action: assert
        selector: "~dashboard-screen"
        visible: true

Actions

| Action | Required | Description | | -------- | --------------------- | ----------------------------------- | | tap | selector | Tap an element | | fill | selector, value | Clear and type into an input | | assert | selector, visible | Assert element is visible or hidden | | scroll | — | Scroll down one screen | | wait | duration | Wait N milliseconds |

Selectors

Mobile (iOS/Android): Use ~testID syntax matching the testID prop in React Native:

<TouchableOpacity testID="login-btn">
selector: "~login-btn"

Web: Use CSS selectors:

selector: "#login-btn"    # by id
selector: ".submit"       # by class
selector: "button"        # by tag

CLI

flick run                    # run tests, open dashboard
flick run -c path/to.yml     # custom config path
flick run -p 3000            # custom dashboard port
flick serve                  # browse past runs
flick init --platform ios    # generate starter config
flick ai                     # check AI provider status

AI analysis

Flick uses local LLMs — no API key, no cloud, no cost.

Setup Ollama (recommended):

brew install ollama
ollama serve
ollama pull llama3.2
flick ai    # verify Flick sees it

LM Studio: Open the app, load a model, click Start Server.


Platforms

iOS

  • Requires Xcode + iOS Simulator
  • Build: npx react-native run-ios
  • Set app: to your Xcode scheme name — Flick finds the .app in DerivedData

Android

  • Requires Android Studio + ADB
  • Build: cd android && ./gradlew assembleDebug
  • Set app: to the .apk path

Web

  • No setup required
  • Set url: instead of app:
  • Watch the live preview in the dashboard

React Native setup

Add testID props to every interactive element:

<TouchableOpacity testID="login-btn" onPress={handleLogin}>
<TextInput testID="email-input" />
<View testID="dashboard-screen">

Dashboard

Open http://localhost:4040 during or after any run:

  • Session timeline with pass/fail/crash per step
  • Click any failed step to see its error screenshot
  • Live screenshot preview for web runs
  • AI analysis summary with suggestions
  • Run history — browse past sessions

Use flick serve to open the dashboard without running a new test.


Project structure

flick/
├── src/
│   ├── cli/index.ts          # flick run / init / serve / ai
│   ├── runner/
│   │   ├── index.ts          # main run loop
│   │   ├── config.ts         # YAML parser + .env loader
│   │   ├── executor.ts       # step execution (tap/fill/assert/etc)
│   │   ├── screencaster.ts   # live preview WebSocket
│   │   ├── appium.ts         # Appium install + start
│   │   └── device.ts         # simulator/emulator auto-detection
│   ├── capture/index.ts      # silent error + freeze detection
│   ├── session/index.ts      # types + JSON persistence
│   ├── dashboard/index.ts    # Fastify server + WS
│   └── ai/index.ts           # Ollama + LM Studio integration
├── static/index.html         # dashboard UI
├── examples/
│   ├── react-native/         # FlickStore example app
│   └── web/                  # e-commerce demo site
├── flick.yml                 # your test config
└── .flick/sessions/          # run reports (auto-created)

License

MIT — built by Gabriel.