/** * Agentic QE v3 - Responsive Testing Service * Implements responsive design and cross-device testing */ import { Result } from '../../../shared/types/index.js'; import { MemoryBackend } from '../../../kernel/interfaces.js'; import { Viewport, Screenshot, VisualDiff } from '../interfaces.js'; /** * Responsive testing interfaces */ export interface ResponsiveTestResult { readonly url: string; readonly timestamp: Date; readonly viewports: ViewportResult[]; readonly breakpointIssues: BreakpointIssue[]; readonly layoutScore: number; readonly recommendations: string[]; } export interface ViewportResult { readonly viewport: Viewport; readonly screenshot: Screenshot; readonly layoutIssues: LayoutIssue[]; readonly renderTime: number; readonly passed: boolean; } export interface LayoutIssue { readonly type: LayoutIssueType; readonly severity: 'critical' | 'warning' | 'info'; readonly element: string; readonly description: string; readonly viewport: Viewport; } export type LayoutIssueType = 'horizontal-overflow' | 'text-overflow' | 'overlapping-elements' | 'hidden-content' | 'touch-target-size' | 'font-size-too-small' | 'image-not-responsive'; export interface BreakpointIssue { readonly breakpoint: number; readonly description: string; readonly affectedElements: string[]; readonly suggestion: string; } export interface ResponsiveTestConfig { viewports: Viewport[]; breakpoints: number[]; checkTouchTargets: boolean; minFontSize: number; minTouchTargetSize: number; /** * Enable simulation mode for testing purposes only. * When true, returns deterministic stub data for layout issues. * When false (default), returns empty results (no browser available). */ simulationMode: boolean; } /** * Predefined device viewports */ export declare const DEVICE_VIEWPORTS: Record; /** * Responsive Tester Service */ export interface IResponsiveTestingService { /** * Test responsive design across viewports */ testResponsiveness(url: string, options?: Partial): Promise>; /** * Compare layouts between viewports */ compareViewports(url: string, viewport1: Viewport, viewport2: Viewport): Promise>; /** * Test specific breakpoint */ testBreakpoint(url: string, breakpoint: number): Promise>; /** * Get recommended breakpoints based on content */ analyzeBreakpoints(url: string): Promise>; } export interface BreakpointAnalysis { readonly currentBreakpoints: number[]; readonly suggestedBreakpoints: number[]; readonly contentBreaks: ContentBreak[]; readonly coverageScore: number; } export interface ContentBreak { readonly width: number; readonly reason: string; readonly affectedElements: string[]; } /** * Responsive Testing Service Implementation */ export declare class ResponsiveTesterService implements IResponsiveTestingService { private readonly memory; private readonly config; constructor(memory: MemoryBackend, config?: Partial); /** * Test responsive design across viewports */ testResponsiveness(url: string, options?: Partial): Promise>; /** * Compare layouts between viewports */ compareViewports(url: string, viewport1: Viewport, viewport2: Viewport): Promise>; /** * Test specific breakpoint */ testBreakpoint(url: string, breakpoint: number): Promise>; /** * Analyze breakpoints based on content */ analyzeBreakpoints(url: string): Promise>; private testViewport; private createScreenshot; private detectLayoutIssues; /** * Heuristic-based responsive layout issue detection for production mode. * Analyzes URL patterns and viewport characteristics to identify likely issues. */ private detectLayoutIssuesHeuristic; private hasResponsivePatterns; private hasWideContentPatterns; private hasInteractiveElements; private hasNavigationElements; private hasDataDensePatterns; private hasImagePatterns; private hasOverlapRiskPatterns; private findNearestBreakpoint; /** * Simulation mode layout issue detection with deterministic results. */ private detectLayoutIssuesSimulation; private detectBreakpointIssues; private calculateLayoutScore; private generateRecommendations; private calculateStructuralDiff; /** * Find content break points by analyzing URL structure * In production, this would test rendering at many widths */ private findContentBreaks; /** * Hash URL for deterministic results */ private hashUrl; private suggestBreakpoints; private calculateBreakpointCoverage; private storeResult; } //# sourceMappingURL=responsive-tester.d.ts.map