UNPKG

@stacksjs/stx

Version:

A performant UI Framework. Powered by Bun.

109 lines 3.04 kB
/** * Create a snapshot tester */ export declare function createSnapshotTester(config?: VisualTestConfig): void; /** * Create a visual regression tester */ export declare function createVisualRegressionTester(config?: VisualTestConfig): void; /** * Create a story-based visual tester */ export declare function createStoryTester(config?: VisualTestConfig): void; /** * Generate visual test report */ export declare function generateReport(results: VisualTestResult[], config?: ReportConfig): Promise<string>; /** * Quick snapshot test */ export declare function snapshot(html: string, name: string): Promise<SnapshotResult>; /** * Quick JSON snapshot test */ export declare function snapshotJson(data: unknown, name: string): Promise<SnapshotResult>; /** * Reset default tester (for testing) */ export declare function resetDefaultTester(): void; // ============================================================================= // Default Viewports // ============================================================================= export declare const defaultViewports: Viewport[]; // ============================================================================= // Types // ============================================================================= export declare interface VisualTestConfig { snapshotDir?: string screenshotDir?: string updateSnapshots?: boolean threshold?: number viewports?: Viewport[] generateDiff?: boolean diffDir?: string compare?: (actual: Buffer, expected: Buffer) => Promise<ComparisonResult> ci?: boolean retries?: number } export declare interface Viewport { name: string width: number height: number deviceScaleFactor?: number isMobile?: boolean hasTouch?: boolean } export declare interface SnapshotResult { passed: boolean snapshotPath: string actualPath?: string diffPath?: string message?: string } export declare interface ComparisonResult { match: boolean diffPercentage: number diffPixels: number diffImage?: Buffer } export declare interface VisualTestResult { name: string passed: boolean duration: number snapshots: SnapshotResult[] screenshots: ScreenshotResult[] errors: Error[] } export declare interface ScreenshotResult { viewport: string passed: boolean baselinePath: string actualPath?: string diffPath?: string diffPercentage?: number } export declare interface Story { name: string component: string render: () => string | Promise<string> args?: Record<string, unknown> viewports?: Viewport[] } // ============================================================================= // Test Reporter // ============================================================================= export declare interface ReportConfig { outputDir?: string format?: 'html' | 'json' | 'markdown' title?: string includeScreenshots?: boolean } export default { createSnapshotTester, createVisualRegressionTester, createStoryTester, generateReport, snapshot, snapshotJson, defaultViewports, };