import { Reporter, TestCase, TestResult, FullConfig, Suite, FullResult } from '@playwright/test/reporter'; import { HtmlReporter } from './HtmlReporter'; import { MarkdownReporter } from './MarkdownReporter'; class CustomReporterPlugin implements Reporter { private htmlReporter: HtmlReporter; private markdownReporter: MarkdownReporter; constructor() { this.htmlReporter = new HtmlReporter({ outputDir: 'test-results/custom-html-report' }); this.markdownReporter = new MarkdownReporter({ outputFile: 'test-results/test-report.md' }); } async onBegin(config: FullConfig, suite: Suite) { await this.htmlReporter.onBegin?.(config, suite); await this.markdownReporter.onBegin?.(config, suite); } async onTestEnd(test: TestCase, result: TestResult) { await this.htmlReporter.onTestEnd?.(test, result); await this.markdownReporter.onTestEnd?.(test, result); } async onEnd(result: FullResult): Promise { await this.htmlReporter.onEnd?.(); await this.markdownReporter.onEnd?.(); } } export default CustomReporterPlugin;