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

v2.1.2

Published

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

Readme

@testdino/playwright

npm version npm downloads total downloads Node.js

Real-time Playwright reporting for debugging failures, detecting flaky tests, and keeping traces, screenshots, videos, logs, and CI history in one place.

Website | Documentation | Get Your Token | Changelog | Support

What TestDino adds to Playwright

Debug failures faster

  • Real-time streaming: results appear as each test finishes, including sharded CI runs
  • Test evidence: failure screenshots, execution video, and retry-level evidence for every attempt
  • Trace viewer: step through DOM snapshots, network, and console in the browser without downloading trace zips
  • Error groups: failures clustered by pattern, so you fix a root cause once instead of triaging one by one

Find and fix flaky tests

  • Flaky detection: retry analysis and cross-run pattern matching with root-cause classification
  • Test trends: pass-rate trends, flakiness scoring, and regression detection
  • Test explorer: flaky rates, pass rates, and durations across spec files and individual tests

Fit into your CI workflow

  • PR coverage: inline summaries on GitHub and GitLab PRs, separating new failures from pre-existing ones
  • Code coverage: Istanbul coverage with automatic shard merging and branch comparison
  • Environment mapping: map branches to named environments and scope trends and flaky detection per environment
  • CI/CD integrations: GitHub Actions, GitLab CI, Azure DevOps, Jenkins, CircleCI, TeamCity, AWS CodeBuild, Bitbucket Pipelines, Buildkite, and Harness

Route failures to the right place

  • Bug reports: open Jira, Linear, Asana, or monday.com issues from a failed test with full context
  • Test tags: set priority, owner, feature area, and Slack routing from test code
  • Scheduled reports: automated PDF summaries with trend graphs and branch statistics

Give AI agents test context

  • MCP server: let coding assistants query runs, debug failures, and suggest fixes
  • Playwright skills: prebuilt Claude Code skills to write, fix, and refactor Playwright tests

See all features for the full list.

Quick start

Requirements: Node.js >= 18, @playwright/test >= 1.52.0

1. Install the reporter:

npm install --save-dev @testdino/playwright

2. Add it to your Playwright config:

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

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

3. Set your token and run your tests as usual:

export TESTDINO_TOKEN="your-token"
npx playwright test

No upload step is needed. Results stream to your TestDino dashboard as the run happens.

Capture traces, screenshots, and videos

TestDino uploads whatever Playwright produces. If these are off in your Playwright config, there is nothing to upload and your runs will show no artifacts:

// playwright.config.ts
use: {
  trace: 'retain-on-failure',
  video: 'retain-on-failure',
  screenshot: 'only-on-failure',
}

Use 'on' instead of 'retain-on-failure' to capture artifacts for passing tests too.

Prefer not to edit your config?

Skip step 2 and run tdpw test instead. Same result, no config change. Pass your token with -t, or set TESTDINO_TOKEN first and omit it.

npx tdpw test -t "your-token"

Want to hand this off to AI?

Copy the prompt below into Claude Code, Cursor, or your editor assistant and let it wire up the setup for you.

Your task is to set up Playwright to report test results to TestDino.

1. Install "@testdino/playwright" as a development dependency, using the
   project's package manager (npm, pnpm, yarn, ...).

2. Update the Playwright config file (playwright.config.ts|js|mjs):

   - Add the TestDino reporter, keeping any existing reporters:

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

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

   - Enable traces, videos and screenshots so there are artifacts to upload:

   use: {
     trace: 'retain-on-failure',
     video: 'retain-on-failure',
     screenshot: 'only-on-failure',
   }

3. Tell me to set TESTDINO_TOKEN in my environment and in CI secrets.
   Do not hardcode the token in any file.

4. If the project runs sharded tests in CI, use "npx tdpw test --ci-run-id <id>"
   so every shard reports into a single run.

Configuration

Options

| Option | CLI Flag | Environment Variable | Description | | ----------- | ---------------- | --------------------- | ------------------------------- | | token | --token, -t | TESTDINO_TOKEN | Authentication token (required) | | serverUrl | --server-url | TESTDINO_SERVER_URL | Server URL | | debug | --debug | TESTDINO_DEBUG | Enable debug logging | | ciRunId | --ci-run-id | - | Group sharded test runs | | artifacts | --no-artifacts | - | Disable artifact uploads | | coverage | --coverage | - | Enable code coverage collection | | tags | --tags <csv> | TESTDINO_TAGS | Run-level labels (comma-sep) |

Config file

For anything beyond a token, use a config file:

// 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,
      functions: 80,
      statements: 80,
    },
  },
};

Priority

Highest to lowest. The first source that sets a value wins:

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

CLI usage

tdpw test wraps Playwright when you would rather not edit your config, or need a run-scoped flag like --ci-run-id. Any option TestDino does not recognize is passed through to Playwright:

npx tdpw test --headed --project=chromium
npx tdpw test --retries=2 --workers=4
npx tdpw test --coverage
npx tdpw test --no-artifacts

Passing arguments to Playwright

TestDino consumes its own flags and forwards everything else. Use -- to end TestDino's flags and pass the rest to Playwright verbatim. This matters whenever a TestDino flag takes a value or shares a name with a Playwright flag:

npx tdpw test --ci-run-id "$CI_RUN_ID" -- --shard=1/4

Note: --debug is consumed by TestDino, where it enables TestDino's own debug logging. It is not forwarded to Playwright, so npx tdpw test --debug will not open the Playwright Inspector. To open the Inspector, pass it after --:

npx tdpw test -- --debug          # Playwright Inspector
npx tdpw test --debug             # TestDino debug logging
TESTDINO_DEBUG=1 npx tdpw test -- --debug   # both

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 playwright test

With the reporter in your Playwright config, CI needs nothing beyond the token.

Sharded execution

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        shard: [1, 2, 3, 4]
    steps:
      - name: Run shard
        env:
          TESTDINO_TOKEN: ${{ secrets.TESTDINO_TOKEN }}
        run: npx tdpw test --ci-run-id ${{ github.run_id }} -- --shard=${{ matrix.shard }}/4

Sharding uses tdpw test so every shard can share one --ci-run-id. All shards with the same id are grouped into a single logical run on the TestDino dashboard.

GitLab CI

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

Other providers

Setup guides for every supported provider:

Code coverage

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

2. Use the TestDino fixture in your tests:

import { test, expect } from '@testdino/playwright';

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

3. Enable coverage:

npx tdpw test --coverage

Coverage works with sharded execution. TestDino merges coverage data across shards automatically.

How reporting works

The reporter hooks into Playwright's lifecycle, buffers test events, and streams them to TestDino in real time. Artifacts (screenshots, videos, traces) are uploaded to cloud storage and linked to the test that produced them. Local file paths are never transmitted.

Delivery degrades gracefully: if the streaming connection is unavailable, events fall back to an alternate transport automatically. Reporter errors never fail your tests. A TestDino outage affects reporting only, and your suite exits on Playwright's own result.

Update notifications

When a newer version is published, a short notice appears after your run with the current and latest versions, so every project stays on an up-to-date reporter.

Troubleshooting

| Issue | Solution | | ------------------------------------ | ----------------------------------------------------------- | | Token is required but not provided | Set token via --token, TESTDINO_TOKEN, or config file | | TestDino Execution Limit Reached | Tests still run. Upgrade plan or wait for quota reset | | --debug didn't open the Inspector | TestDino consumes --debug. Use npx tdpw test -- --debug | | Artifacts missing from the dashboard | Confirm artifacts aren't disabled via --no-artifacts | | Shards appear as separate runs | Pass the same --ci-run-id to every shard |

Enable debug logging for detailed diagnostics:

npx tdpw test --debug

FAQ

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

Q: What happens if TestDino is unavailable? Tests run normally. Only event reporting is affected.

Q: Does this work with the Playwright VS Code extension? Yes. The reporter setup in Quick start applies to every Playwright invocation, including the extension.

Upgrading from v1

Version 2 introduces an updated artifact upload flow.

Configuration options and CLI commands are unchanged, so no config migration is required. Upgrade all CI jobs using @testdino/playwright together, so artifact reporting stays consistent across your fleet.

See the TestDino documentation for release details.

Security & compliance

ISO 27001 certified · SOC 2 · GDPR compliant.

Local file paths are never transmitted. Artifacts are uploaded to cloud storage and referenced by key. See Security at TestDino for details.

Support


Copyright 2026 TestDino. All rights reserved. See LICENSE.