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

testreel

v0.2.0

Published

Programmatic video infrastructure for web apps

Readme

testreel

npm version CI license

Programmatic video recordings for web apps. Define interactions in JSON, get polished screen recordings out.

Demo video generated with testreel

Demo video generated with testreel

  • Let your LLM agent generate product videos - Just point your agent at this repo and ask it to generate a demo video for your product. Testreel integrates with Playwright, which allows your agent to create recordings with mocks and demo data easily.
  • Repeatable editable video config - Instead of having to manually re-record a video because of a typo or a missed click, just edit the config and rerun the recording. Programmatically generate videos with polished background, and cursor and zoom animations.

Features

  • Animated cursor — configurable style, size, and click ripple effects
  • Window chrome — macOS-style title bar with traffic lights
  • Background styling — padding, rounded corners, solid or gradient backgrounds
  • Multiple auth methods — setup blocks, localStorage/cookies injection, storage state files, interactive login, Supabase provider
  • Playwright integration — test fixture and recordPage() API for existing test suites
  • Output formats — WebM (default), MP4, GIF

Install

npm install testreel playwright
npx playwright install chromium

Quick start

Create a recording definition (recording.json):

{
  "url": "https://example.com",
  "viewport": { "width": 1280, "height": 720 },
  "steps": [
    { "action": "click", "selector": "button.sign-in" },
    { "action": "fill", "selector": "#email", "text": "[email protected]" },
    { "action": "screenshot", "name": "filled-form" },
    { "action": "click", "selector": "button[type=submit]" },
    { "action": "wait", "ms": 2000 }
  ]
}

Run it:

npx testreel recording.json

Output goes to ./testreel-output/ — a WebM video, PNG screenshots, and an output.json manifest.

CLI

npx testreel recording.json                       # basic recording
npx testreel recording.json --headed              # visible browser
npx testreel recording.json --format gif          # GIF output
npx testreel recording.json --setup login.json    # separate setup file
npx testreel validate recording.json              # validate without recording
npx testreel login https://app.com --save-state state.json  # interactive login
npx testreel init                                 # create a definition interactively

API

import { record, loadDefinition } from 'testreel'

const def = loadDefinition('recording.json')
const result = await record(def, { outputDir: './output' })

console.log(result.video)       // path to .webm file
console.log(result.screenshots) // array of .png paths

Playwright test fixture

Already have a Playwright test suite? Add recording to any test — just change test to recorded:

import { test, expect } from '@playwright/test'
import { testreelFixtures, type TestreelFixtures } from 'testreel/playwright'

const recorded = test.extend<TestreelFixtures>({
  ...testreelFixtures,
})

// This test is unchanged — no recording
test('health check', async ({ page }) => {
  await page.goto('/health')
  await expect(page.locator('.status')).toHaveText('OK')
})

// Just swap test → recorded — video is attached to the test report automatically
recorded('product demo', async ({ page }) => {
  await page.goto('https://myapp.com')
  await page.click('.login-button')
  await page.fill('#email', '[email protected]')
})

Recordings are captured regardless of test outcome — partial videos are attached to the report for debugging. See Playwright Integration for composing with custom fixtures, the PageRecorder API, and configuration options.

recordPage API

For manual control over recording within any Playwright script:

import { recordPage } from 'testreel'

// page must belong to a context created with recordVideo
const recorder = await recordPage(page, { chrome: true })
await recorder.click('.button')
await recorder.type('#search', 'hello')
const result = await recorder.stop() // finalizes video + post-processing
console.log(result.video)

Documentation

| Guide | Description | |-------|-------------| | Getting Started | Installation, first recording, output explanation | | Recording Definitions | Full reference for the JSON format | | Actions | All 13 step actions with examples | | Authentication | Recording authenticated apps | | CLI Reference | All commands and flags | | Playwright Integration | Test fixture and recordPage() API | | Examples | Common recording patterns |

License

MIT