@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
109 lines • 3.04 kB
TypeScript
/**
* 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,
};