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

@testdino/playwright

v1.0.10

Published

TestDino's real-time streaming reporter and CLI for Playwright test execution

Readme

@testdino/playwright

npm version Node.js

Real-time streaming reporter and CLI for Playwright that captures comprehensive test execution data and streams it to TestDino for advanced analytics and insights.

Website | Documentation | Get Your Token

Features

  • Real-time Streaming - See your test results as they happen
  • Rich Metadata - Automatic collection of Git, CI, System, and Playwright environment data
  • Distributed Testing - Full support for sharded test execution across multiple machines
  • Production-Ready - Built-in retry logic and graceful error handling
  • Zero Configuration - Works out of the box with sensible defaults
  • Flexible Integration - Use as a CLI wrapper or native Playwright reporter
  • Complete Visibility - Captures test runs, individual tests, steps, errors, and console output

Installation

npm install @testdino/playwright

Requirements:

  • Node.js >= 18.0.0
  • @playwright/test >= 1.52.0

Quick Start

Using the CLI (Recommended)

The tdpw CLI wraps Playwright's test runner, automatically configuring the TestDino reporter while passing all other options directly to Playwright.

npx tdpw test [testdino-options] [playwright-options] [test-files]

Basic usage:

# Set your token (get one at testdino.com)
export TESTDINO_TOKEN=your_token

# Run all tests
npx tdpw test

# Or pass token directly
npx tdpw test --token YOUR_TOKEN

With Playwright options:

Any option not recognized by TestDino is passed through to Playwright:

# Run specific test file
npx tdpw test tests/login.spec.ts

# Run in headed mode with specific browser
npx tdpw test --headed --project=chromium

# Run tests matching a pattern
npx tdpw test --grep "authentication"

# Run with multiple workers
npx tdpw test --workers=4

# Run in Playwright UI mode
npx tdpw test --ui

# Run with retries
npx tdpw test --retries=2

# Sharded execution
npx tdpw test --shard=1/3

Common Playwright options:

| Option | Description | | ------------------- | ----------------------------- | | --headed | Run in headed browser mode | | --ui | Open Playwright UI mode | | --debug | Run with Playwright Inspector | | --project=<name> | Run specific project | | --grep=<pattern> | Filter tests by title | | --workers=<n> | Number of parallel workers | | --retries=<n> | Retry failed tests | | --shard=<x/y> | Shard tests across machines | | --timeout=<ms> | Test timeout | | --reporter=<name> | Add additional reporters |

For all Playwright options, see the Playwright CLI documentation.

Using as a Playwright Reporter

Alternatively, add TestDino directly to your Playwright configuration:

// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: [
    ['@testdino/playwright', { token: process.env.TESTDINO_TOKEN }],
    ['html'], // Combine with other reporters
  ],
});

Then run tests with standard Playwright command:

npx playwright test

Configuration

TestDino Options

| Option | CLI Flag | Environment Variable | Description | | ----------- | ---------------- | -------------------- | --------------------------------------------------------------------------------------------------- | | token | --token, -t | TESTDINO_TOKEN | Authentication token (required) | | debug | --debug | TESTDINO_DEBUG | Enable debug logging | | ciRunId | --ci-run-id | - | Group sharded test runs | | artifacts | --no-artifacts | - | Upload artifacts (screenshots, videos, traces). Enabled by default; use --no-artifacts to disable | | coverage | --coverage | - | Enable code coverage collection (see Code Coverage) |

Configuration File

Create testdino.config.ts (or .js) in your project root for persistent settings:

// testdino.config.ts
export default {
  token: process.env.TESTDINO_TOKEN,
  debug: false,
  artifacts: true,
  coverage: {
    enabled: true,
    include: ['src/**'],
    exclude: ['**/node_modules/**'],
    thresholds: {
      lines: 80,
      branches: 60,
    },
  },
};
// testdino.config.js
module.exports = {
  token: process.env.TESTDINO_TOKEN,
};

Dynamic configuration:

export default function () {
  return {
    token: process.env.TESTDINO_TOKEN,
    debug: !process.env.CI,
  };
}

Configuration Priority

Settings are applied in this order (highest to lowest):

  1. CLI flags (--token)
  2. Config file (testdino.config.ts)
  3. Playwright config (reporter options)
  4. Environment variables (TESTDINO_TOKEN)

CI/CD Integration

GitHub Actions

name: E2E Tests
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'

      - run: npm ci
      - run: npx playwright install --with-deps

      - name: Run tests
        env:
          TESTDINO_TOKEN: ${{ secrets.TESTDINO_TOKEN }}
        run: npx tdpw test

GitLab CI

e2e-tests:
  image: mcr.microsoft.com/playwright:v1.50.0-jammy
  script:
    - npm ci
    - npx tdpw test
  variables:
    TESTDINO_TOKEN: $TESTDINO_TOKEN

Sharded Execution

TestDino automatically detects shard information:

# GitHub Actions matrix example
jobs:
  test:
    strategy:
      matrix:
        shard: [1/3, 2/3, 3/3]
    steps:
      - run: npx tdpw test --shard=${{ matrix.shard }}

Metadata Collection

TestDino automatically collects environment metadata at the start of each test run:

| Category | Information Collected | | ---------- | ----------------------------------------------- | | Git | Branch, commit, author, message, repository URL | | CI | Provider, build ID, PR details (GitHub Actions) | | System | OS, CPU, memory, Node.js version | | Playwright | Version, workers, projects, shard info |

Metadata collection is non-blocking. Tests continue even if some metadata is unavailable.

Code Coverage

TestDino can collect Istanbul-based code coverage from your application during test execution.

Setup

1. Instrument your application with Istanbul (e.g., via babel-plugin-istanbul or nyc). Your app must expose window.__coverage__ in the browser.

2. Use the TestDino test fixture in your test files:

// Use TestDino's test and expect instead of Playwright's
import { test, expect } from '@testdino/playwright';

test('my test', async ({ page }) => {
  await page.goto('/');
  // Coverage is collected automatically after each test
});

3. Enable coverage via CLI flag, config file, or Playwright reporter options:

# CLI flag
npx tdpw test --coverage

# Or configure in testdino.config.ts (see Configuration File section)

Coverage Options

| Option | Type | Description | | ------------ | ---------- | ------------------------------------------------------------- | | enabled | boolean | Enable coverage collection (HTML report output: ./coverage) | | include | string[] | Glob patterns to include files | | exclude | string[] | Glob patterns to exclude files | | thresholds | object | Fail the run if coverage is below thresholds |

Include/exclude example:

coverage: {
  enabled: true,
  include: ['src/**'],
  exclude: ['**/node_modules/**', '**/*.test.ts'],
}

Thresholds example:

coverage: {
  enabled: true,
  thresholds: {
    lines: 80,
    branches: 60,
    functions: 80,
    statements: 80,
  },
}

Coverage works with sharded test execution — TestDino automatically merges coverage data across shards on the server.

Troubleshooting

Token Error

Token is required but not provided

Set your token via CLI flag, environment variable, or config file.

Quota Limit Reached

❌ TestDino Execution Limit Reached

You've reached your monthly test execution quota. The error message shows:

  • Your current plan and monthly limit
  • How many executions you've used
  • Remaining executions available
  • When your quota resets

Solutions:

  1. Upgrade your plan at testdino.com/pricing
  2. Wait for your monthly quota to reset
  3. Contact support if you need immediate assistance

Note: Tests will still run; only streaming to TestDino is affected.

Connection Warnings

WebSocket connection failed, using HTTP fallback

This is normal. TestDino automatically uses HTTP fallback. Tests are not affected.

Debug Mode

Enable detailed logging:

npx tdpw test --debug

FAQ

Q: How do I get a token? Sign up at testdino.com and follow the Getting Started Guide.

Q: Can I use TestDino with other Playwright reporters? Yes. TestDino works alongside HTML, JUnit, or any other reporter.

Q: What happens if I reach my quota limit? Your tests continue to run as normal. TestDino will display a detailed message showing your usage and provide upgrade options. Only streaming to TestDino is paused until your quota resets.

Q: What if TestDino server is unavailable? Tests run normally. Only event streaming is affected.

Q: Does this work with Playwright VSCode extension? Yes. Configure TestDino in playwright.config.ts for VSCode integration.

Support


Copyright 2025 TestDino. All rights reserved.