0.2.1 ⢠Published 5 months ago
@arghajit/playwright-pulse-report v0.2.1
Playwright Pluse Report

The ultimate Playwright reporter ā Interactive dashboard with historical trend analytics, CI/CD-ready standalone HTML reports, and sharding support for scalable test execution.
Live Demo
š Features
- Custom Playwright Reporter - Collects detailed test results with rich metadata
- Sharding Support - Seamlessly handles parallel test execution across shards
- Two Reporting Options:
- Standalone HTML Report - Self-contained, shareable single file
- Email Report - Attached test summary with generated test report
- CI/CD Ready - GitHub Actions workflow examples included
- Email Integration - Send reports directly to stakeholders
- AI Analysis - Get insights into your test results
šø Screenshots
š„ļø Desktop View
š± Mobile View
Email Report Example
š ļø How It Works
Reporter Collection:
- Custom reporter collects detailed results during test execution
- Handles sharding by merging
.pulse-shard-results-*.jsonfiles
JSON Output:
- Generates comprehensive
playwright-pulse-report.json
- Generates comprehensive
Visualization Options:
- Static HTML: Self-contained report file with all data
- Email: Send formatted reports to stakeholders
š Quick Start
1. Installation
npm install @arghajit/playwright-pulse-reporter@latest --save-dev
# or
yarn add @arghajit/playwright-pulse-reporter@latest --dev
# or
pnpm add @arghajit/playwright-pulse-reporter@latest --save-dev2. Configure Playwright
// playwright.config.ts
import { defineConfig } from '@playwright/test';
import * as path from 'path';
const PULSE_REPORT_DIR = path.resolve(__dirname, 'pulse-report');
export default defineConfig({
reporter: [
['list'],
['@arghajit/playwright-pulse-reporter', {
outputDir: PULSE_REPORT_DIR
}]
],
// Other configurations...
});3. Generate Reports
After running tests:
npx generate-pulse-report # Generates static HTML
npx send-email # Sends email reportš Report Options
Option 1: Static HTML Report
npx generate-pulse-report- Generates
playwright-pulse-static-report.html - Self-contained, no server required
- Preserves all dashboard functionality
Option 2: Email Report
Configure
.env:SENDER_EMAIL_1=recipient1@example.com SENDER_EMAIL_2=recipient2@example.com # ... up to 5 recipientsSend report:
npx send-email
š¤ AI Analysis
The dashboard includes AI-powered test analysis that provides:
- Test flakiness detection
- Performance bottlenecks
- Failure pattern recognition
- Suggested optimizations
āļø CI/CD Integration
Basic Workflow
# Upload Pulse report from each shard (per matrix.config.type)
- name: Upload Pulse Report results
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: pulse-report
path: pulse-report/
# Download all pulse-report-* artifacts after all shards complete
- name: Download Pulse Report artifacts
uses: actions/download-artifact@v4
with:
pattern: pulse-report
path: downloaded-artifacts
# Merge all sharded JSON reports into one final output
- name: Generate Pulse Report
run: |
npm run script merge-report
npm run script generate-report
# Upload final merged report as CI artifact
- name: Upload Pulse report
uses: actions/upload-artifact@v4
with:
name: pulse-reportSharded Workflow
# Upload Pulse report from each shard (per matrix.config.type)
- name: Upload Pulse Report results
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: pulse-report-${{ matrix.config.type }}
path: pulse-report/
# Download all pulse-report-* artifacts after all shards complete
- name: Download Pulse Report artifacts
uses: actions/download-artifact@v4
with:
pattern: pulse-report-*
path: downloaded-artifacts
# Organize reports into a single folder and rename for merging
- name: Organize Pulse Report
run: |
mkdir -p pulse-report
for dir in downloaded-artifacts/pulse-report-*; do
config_type=$(basename "$dir" | sed 's/pulse-report-//')
cp -r "$dir/attachments" "pulse-report/attachments"
cp "$dir/playwright-pulse-report.json" "pulse-report/playwright-pulse-report-${config_type}.json"
done
# Merge all sharded JSON reports into one final output
- name: Generate Pulse Report
run: |
npm run script merge-report
npm run script generate-report
# Upload final merged report as CI artifact
- name: Upload Pulse report
uses: actions/upload-artifact@v4
with:
name: pulse-report
path: pulse-report/š§ Notes
- Each shard generates its own playwright-pulse-report.json inside pulse-report/.
- Artifacts are named using the shard type (matrix.config.type).
- After the test matrix completes, reports are downloaded, renamed, and merged.
- merge-report is a custom Node.js script that combines all JSON files into one.
- generate-report can build a static HTML dashboard if needed.
š Key Files
playwright-pulse-reporter/
āāā src/
ā āāā reporter/ # Reporter implementation
ā āāā app/ # Next.js dashboard
āāā scripts/
ā āāā generate-static-report.mjs # HTML generator
| āāā generate-trend.mjs # Generate Trends
| āāā merge-pulse-report.mjs # merge sharded reports
| āāā sendReport.mjs # Send email report
āāā pulse-report/ # Generated reports
āāā sample-report.json # Example dataš What's New in v0.2.1
⨠Key Improvements
| Feature | Description |
|---|---|
| šØ Refined UI | Completely redesigned static HTML reports for better readability and navigation |
| š History Trends | Visual analytics for:⢠Test History for last 15 runs⢠Test suite pass/fail rates⢠Duration trends⢠Individual test flakiness |
| š ļø Project Fixes | Corrected project name display in test suite components |
š Upgrade Now
npm install @arghajit/playwright-pulse-report@latestš¬ Support
For issues or feature requests, please Contact Me.
