@alphabin/trx
Version:
TRX reporter for Playwright tests with Azure Blob Storage upload support
146 lines (145 loc) • 3.91 kB
TypeScript
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;