/** * QA360 JUnit XML Reporter * * P0 Feature: Generates JUnit XML format for CI/CD integration * Compatible with Jenkins, GitLab CI, GitHub Actions, CircleCI, etc. * * JUnit XML schema: * - testsuite: Contains test results * - testcase: Individual test case with status * - failure: Error details for failed tests * - skipped: Skipped test information */ /** * JUnit XML compatible test case */ export interface JUnitTestCase { name: string; classname?: string; time: number; failure?: { message: string; type: string; text: string; }; error?: { message: string; type: string; text: string; }; skipped?: { message?: string; }; /** * System output (stdout) */ 'system-out'?: string; /** * System error (stderr) */ 'system-err'?: string; } /** * JUnit XML compatible test suite */ export interface JUnitTestSuite { name: string; tests: number; failures: number; errors: number; skipped: number; time: number; timestamp: string; hostname?: string; properties?: Record; testcases: JUnitTestCase[]; } /** * JUnit XML report options */ export interface JUnitOptions { /** * Suite name (default: "QA360 Test Suite") */ suiteName?: string; /** * Environment properties to include */ properties?: Record; /** * Include stack traces in failure output */ includeStackTrace?: boolean; } /** * JUnit XML Reporter */ export declare class JUnitReporter { /** * Generate JUnit XML from test suite data */ static generate(suite: JUnitTestSuite, options?: JUnitOptions): string; /** * Generate JUnit XML and write to file */ static generateToFile(suite: JUnitTestSuite, outputPath: string, options?: JUnitOptions): void; /** * Convert from ReportData format (used by HTMLReporter) */ static fromReportData(data: import('./html-reporter.js').ReportData, options?: JUnitOptions): JUnitTestSuite; /** * Convert from UiSmokeResult format (used by PlaywrightUiAdapter) */ static fromUiSmokeResult(result: import('../adapters/playwright-ui.js').UiSmokeResult, suiteName?: string, options?: JUnitOptions): JUnitTestSuite; /** * Merge multiple test suites into a single XML */ static generateMerged(suites: JUnitTestSuite[], options?: JUnitOptions): string; /** * Escape special XML characters */ private static escapeXml; /** * Format time duration (seconds with 3 decimal places) */ private static formatTime; } /** * Convenience function to generate JUnit XML */ export declare function generateJUnitReport(suite: JUnitTestSuite, options?: JUnitOptions): string; /** * Convenience function to generate JUnit XML and write to file */ export declare function generateJUnitReportToFile(suite: JUnitTestSuite, outputPath: string, options?: JUnitOptions): void;