UNPKG

@alphabin/trx

Version:

TRX reporter for Playwright tests with Azure Blob Storage upload support

146 lines (145 loc) 3.91 kB
import { PlaywrightConfigInfo } from '../utils/config-parser.util'; import { FileInfo } from '../types/azure.type'; export interface ReportDirectory { path: string; type: 'html' | 'traces' | 'mixed'; files: FileInfo[]; hasIndexHtml: boolean; } export interface DiscoveredReport { type: 'html' | 'json' | 'blob'; found: boolean; path?: string; files?: FileInfo[]; hasIndexHtml?: boolean; lastModified?: Date; size?: number; } export interface ReportDiscoveryResult { html: DiscoveredReport; json: DiscoveredReport; blob: DiscoveredReport; config: PlaywrightConfigInfo; } export interface DiscoveryOptions { rootDir: string; playwrightConfigPath?: string; useLatest?: boolean; includeTraces?: boolean; } /** * Comprehensive service for discovering and processing all types of Playwright reports */ export declare class ReportDiscoveryService { private rootDir; private playwrightConfigPath?; private configParser; private useLatest; private includeTraces; constructor(options: DiscoveryOptions); /** * Discovers all report types independently */ discoverAllReports(): Promise<ReportDiscoveryResult>; /** * Legacy method: Discovers the main report directory to upload (for backward compatibility) */ discoverReportDirectory(): Promise<ReportDirectory | null>; /** * Gets the JSON report file path */ getJsonReportPath(): Promise<string | null>; /** * Gets the HTML report directory */ getHtmlReportDirectory(): Promise<ReportDirectory | null>; /** * Discovers HTML reports using multiple strategies */ private discoverHtmlReport; /** * Discovers JSON reports using multiple strategies */ private discoverJsonReport; /** * Discovers Blob reports using multiple strategies */ private discoverBlobReport; /** * Scans a directory for HTML reports */ private scanHtmlDirectory; /** * Scans for a JSON report file */ private scanJsonFile; /** * Scans a directory for Blob reports */ private scanBlobDirectory; /** * Searches for HTML reports using patterns */ private searchHtmlByPattern; /** * Searches for JSON reports using patterns */ private searchJsonByPattern; /** * Recursively scans directory and collects file information */ private scanDirectoryRecursive; /** * Gets content type for a file */ private getContentType; /** * Gets the latest file by modification time */ private getLatestFile; /** * Gets default HTML report directories */ private getDefaultHtmlDirectories; /** * Gets default JSON report files */ private getDefaultJsonFiles; /** * Gets default JSON report directories for pattern search */ private getDefaultJsonDirectories; /** * Gets default Blob report directories */ private getDefaultBlobDirectories; /** * Aggressive search for JSON files in any reasonable location */ private aggressiveJsonSearch; /** * Aggressive search for HTML reports in any reasonable location */ private aggressiveHtmlSearch; /** * Validates if a JSON file is a Playwright report */ private validatePlaywrightJsonReport; /** * Checks if directory exists */ private directoryExists; /** * Validates files against allowed types for upload */ validateFiles(files: FileInfo[], allowedTypes: string[]): FileInfo[]; /** * Gets total size of files */ getTotalSize(files: FileInfo[]): number; /** * Filters files by maximum size */ filterFilesBySize(files: FileInfo[], maxTotalSize: number): FileInfo[]; } export default ReportDiscoveryService;