UNPKG

@playwright-mocks/reporters

Version:

Single Playwright reporter for mock interceptor with configurable logging and HTML report generation utility

303 lines (241 loc) 9.23 kB
# @playwright-mocks/reporters Custom Playwright reporter for detailed mock usage tracking and reporting. This package provides a single reporter that collects test data during execution and can optionally generate beautiful HTML reports. **Note**: This package exposes TypeScript files directly - no build step required! Playwright can read TypeScript files natively. ## 🚀 Features - **📊 Single Reporter**: One reporter that handles all mock data collection and logging - **🌐 HTML Report Utility**: Generate beautiful HTML reports from collected test data - **📸 Screenshot Support**: Automatic screenshot collection and display - **🎨 Customizable Logging**: Control console output with `logs` and `verbose` options - **🔍 Detailed Analysis**: Mock usage, errors, response times, and more - **📈 Statistics**: Comprehensive mock statistics and success rates - **💡 IntelliSense**: Full TypeScript support with autocomplete - **⚡ No Build Required**: Direct TypeScript support - no compilation needed ## 📦 Installation ```bash npm install @playwright-mocks/reporters ``` ## 🔧 Configuration ### Basic Configuration Add the reporter to your `playwright.config.ts`: ```typescript import { defineConfig } from '@playwright/test'; import { createMocksReporter } from '@playwright-mocks/reporters'; export default defineConfig({ reporter: [ ['html'], createMocksReporter({ logs: true, verbose: false, generateHtml: true, htmlOutputDir: './mocks-report', htmlTitle: 'Playwright Mocks Report' }) ], // ... rest of your config }); ``` ### Advanced Configuration ```typescript import { defineConfig } from '@playwright/test'; import { createMocksReporter } from '@playwright-mocks/reporters'; export default defineConfig({ reporter: [ ['html'], createMocksReporter({ // Logging options logs: true, // Enable console logging verbose: true, // Enable verbose logging with detailed information // HTML report options generateHtml: true, // Generate HTML report at end htmlOutputDir: './test-results/mocks-report', htmlTitle: 'My Project Mock Report', includeDetails: true, includeBodies: false, showFinalScreenshot: true, openReport: true // Auto-open report in browser }) ], // ... rest of your config }); ``` ### Minimal Configuration (Console Only) ```typescript import { defineConfig } from '@playwright/test'; import { createMocksReporter } from '@playwright-mocks/reporters'; export default defineConfig({ reporter: [ ['html'], createMocksReporter({ logs: true, // Only console logging, no HTML report verbose: false }) ], }); ``` ## 📊 Console Output The reporter provides real-time feedback when `logs: true`: ### Basic Logging (`logs: true, verbose: false`) ``` --- Playwright Mocks Reporter --- Total tests: 5 Test: should fetch user data | Status: passed | Duration: 1234ms Test: should handle API error | Status: failed | Duration: 567ms --- Test Summary --- - should fetch user data [passed] (1234ms) - should handle API error [failed] (567ms) ``` ### Verbose Logging (`logs: true, verbose: true`) ``` --- Playwright Mocks Reporter --- Total tests: 5 Configuration: { logs: true, verbose: true, generateHtml: true, htmlOutputDir: './mocks-report', htmlTitle: 'Playwright Mocks Report' } Test: should fetch user data | Status: passed | Duration: 1234ms File: tests/api.spec.ts Attachments: 3 Mock attachments: 2 - mock-data.json (application/json) - screenshot.png (image/png) --- Test Summary --- - should fetch user data [passed] (1234ms) - should handle API error [failed] (567ms) Detailed Summary: Total tests: 5 Passed: 4 Failed: 1 Skipped: 0 ``` ## 🌐 HTML Report The HTML report is generated as a **utility function**, not a Playwright reporter. It can be: 1. **Automatically generated** by the reporter when `generateHtml: true` 2. **Manually called** after test execution using the `generateHtmlReport` utility ### Automatic Generation ```typescript import { defineConfig } from '@playwright/test'; import { createMocksReporter } from '@playwright-mocks/reporters'; export default defineConfig({ reporter: [ createMocksReporter({ logs: true, generateHtml: true, // Auto-generate HTML report htmlOutputDir: './mocks-report', htmlTitle: 'My Mock Report', openReport: true // Auto-open in browser }) ], }); ``` ### Manual Generation ```typescript import { generateHtmlReport } from '@playwright-mocks/reporters'; // After your tests complete, generate the report manually const testData = [/* your test data */]; generateHtmlReport(testData, { outputDir: './mocks-report', title: 'My Custom Report', includeDetails: true, includeBodies: false, showFinalScreenshot: true, openReport: true }); ``` ## 📋 API Reference ### Reporter Options ```typescript interface ReporterOptions { // Logging options logs?: boolean; // Enable console logging (default: false) verbose?: boolean; // Enable verbose logging (default: false) // HTML report options generateHtml?: boolean; // Generate HTML report at end (default: false) htmlOutputDir?: string; // HTML report output directory (default: "./mocks-report") htmlTitle?: string; // HTML report title (default: "Playwright Mocks Report") includeDetails?: boolean; // Include detailed mock information (default: true) includeBodies?: boolean; // Include request/response bodies (default: false) showFinalScreenshot?: boolean; // Show final screenshot prominently (default: true) openReport?: boolean; // Auto-open HTML report (default: true) } ``` ### HTML Report Options ```typescript interface HtmlReportOptions { outputDir: string; // Output directory for the HTML report title: string; // Report title includeDetails: boolean; // Include detailed mock information includeBodies: boolean; // Include request/response bodies showFinalScreenshot: boolean; // Show final screenshot prominently openReport: boolean; // Auto-open report in browser } ``` ## 🔄 Migration from Previous Versions ### Breaking Changes in v1.4.0 - **Single Reporter**: Only one reporter is now exposed (`createMocksReporter`) - **HTML Report is a Utility**: HTML report generation is now a utility function, not a Playwright reporter - **New Options**: `logs` and `verbose` options control console output - **Removed**: Old separate HTML and console reporters - **No Build Required**: Package now exposes TypeScript files directly ### Migration Guide #### Old Configuration ```typescript // OLD - Multiple reporters export default defineConfig({ reporter: [ ['@playwright-mocks/reporters', { html: { outputDir: './mocks-report', title: 'My Report' }, console: { showDetailedMockInfo: true } }] ], }); ``` #### New Configuration ```typescript // NEW - Single reporter with options import { createMocksReporter } from '@playwright-mocks/reporters'; export default defineConfig({ reporter: [ createMocksReporter({ logs: true, // Console output (replaces console reporter) verbose: true, // Detailed logging generateHtml: true, // HTML report generation htmlOutputDir: './mocks-report', htmlTitle: 'My Report' }) ], }); ``` ## 🛠️ Troubleshooting ### Common Issues 1. **No console output appears** - Ensure `logs: true` is set in your configuration - Check that tests are actually running with mocks 2. **HTML report is not generated** - Ensure `generateHtml: true` is set - Check that the output directory is writable - Verify that tests are actually running 3. **Missing mock data** - Ensure you're using the latest version of `@playwright-mocks/core` - Check that mocks are properly configured in your tests - Verify the interceptor is working correctly 4. **TypeScript compilation errors** - This package exposes TypeScript files directly - Make sure your project has TypeScript configured - No build step is required for this package ### Debug Mode Enable verbose logging for detailed debugging: ```typescript createMocksReporter({ logs: true, verbose: true // This will show detailed information }) ``` ## 🤝 Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## 📄 License MIT License - see the [LICENSE](LICENSE) file for details. ## 🔗 Related Packages - [@playwright-mocks/core](https://www.npmjs.com/package/@playwright-mocks/core) - Core mock interceptor functionality - [@playwright-mocks/ui](https://www.npmjs.com/package/@playwright-mocks/ui) - Desktop UI for managing mocks