@supernal/interface 1.0.9 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/background/navigation/NavigationGraph.js +48 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -1
- package/dist/cjs/src/browser.js +42 -1
- package/dist/cjs/src/browser.js.map +1 -1
- package/dist/cjs/src/decorators/ContainerHelpers.js +16 -1
- package/dist/cjs/src/decorators/ContainerHelpers.js.map +1 -1
- package/dist/cjs/src/decorators/Tool.js +2 -3
- package/dist/cjs/src/decorators/Tool.js.map +1 -1
- package/dist/cjs/src/testing/graph-tester/core/GraphTester.js +339 -0
- package/dist/cjs/src/testing/graph-tester/core/GraphTester.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/core/TestFunction.js +189 -0
- package/dist/cjs/src/testing/graph-tester/core/TestFunction.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/core/types.js +24 -0
- package/dist/cjs/src/testing/graph-tester/core/types.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/fixtures/index.js +13 -0
- package/dist/cjs/src/testing/graph-tester/fixtures/index.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/fixtures/portPool.js +184 -0
- package/dist/cjs/src/testing/graph-tester/fixtures/portPool.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/index.js +98 -0
- package/dist/cjs/src/testing/graph-tester/index.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/modes/AccessibilityMode.js +230 -0
- package/dist/cjs/src/testing/graph-tester/modes/AccessibilityMode.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/modes/PerformanceMode.js +168 -0
- package/dist/cjs/src/testing/graph-tester/modes/PerformanceMode.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/modes/SEOMode.js +264 -0
- package/dist/cjs/src/testing/graph-tester/modes/SEOMode.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/modes/VisualRegressionMode.js +199 -0
- package/dist/cjs/src/testing/graph-tester/modes/VisualRegressionMode.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/modes/index.js +17 -0
- package/dist/cjs/src/testing/graph-tester/modes/index.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/reporters/HTMLReporter.js +411 -0
- package/dist/cjs/src/testing/graph-tester/reporters/HTMLReporter.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/reporters/JSONReporter.js +127 -0
- package/dist/cjs/src/testing/graph-tester/reporters/JSONReporter.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/reporters/MarkdownReporter.js +169 -0
- package/dist/cjs/src/testing/graph-tester/reporters/MarkdownReporter.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/reporters/UnifiedReporter.js +118 -0
- package/dist/cjs/src/testing/graph-tester/reporters/UnifiedReporter.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/reporters/index.js +17 -0
- package/dist/cjs/src/testing/graph-tester/reporters/index.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js +47 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js +584 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js +376 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/index.js +15 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/index.js.map +1 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/types.js +11 -0
- package/dist/cjs/src/testing/graph-tester/screenshot/types.js.map +1 -0
- package/dist/cjs/src/testing/selectors.js +1 -1
- package/dist/esm/src/background/navigation/INavigationGraph.d.ts +15 -0
- package/dist/esm/src/background/navigation/INavigationGraph.d.ts.map +1 -1
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts +32 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -1
- package/dist/esm/src/background/navigation/NavigationGraph.js +48 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -1
- package/dist/esm/src/browser.d.ts +9 -0
- package/dist/esm/src/browser.d.ts.map +1 -1
- package/dist/esm/src/browser.js +14 -0
- package/dist/esm/src/browser.js.map +1 -1
- package/dist/esm/src/decorators/ContainerHelpers.d.ts +2 -1
- package/dist/esm/src/decorators/ContainerHelpers.d.ts.map +1 -1
- package/dist/esm/src/decorators/ContainerHelpers.js +16 -1
- package/dist/esm/src/decorators/ContainerHelpers.js.map +1 -1
- package/dist/esm/src/decorators/Tool.d.ts.map +1 -1
- package/dist/esm/src/decorators/Tool.js +2 -3
- package/dist/esm/src/decorators/Tool.js.map +1 -1
- package/dist/esm/src/testing/graph-tester/core/GraphTester.d.ts +110 -0
- package/dist/esm/src/testing/graph-tester/core/GraphTester.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/core/GraphTester.js +335 -0
- package/dist/esm/src/testing/graph-tester/core/GraphTester.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/core/TestFunction.d.ts +120 -0
- package/dist/esm/src/testing/graph-tester/core/TestFunction.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/core/TestFunction.js +184 -0
- package/dist/esm/src/testing/graph-tester/core/TestFunction.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/core/types.d.ts +331 -0
- package/dist/esm/src/testing/graph-tester/core/types.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/core/types.js +21 -0
- package/dist/esm/src/testing/graph-tester/core/types.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/fixtures/index.d.ts +8 -0
- package/dist/esm/src/testing/graph-tester/fixtures/index.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/fixtures/index.js +7 -0
- package/dist/esm/src/testing/graph-tester/fixtures/index.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/fixtures/portPool.d.ts +40 -0
- package/dist/esm/src/testing/graph-tester/fixtures/portPool.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/fixtures/portPool.js +147 -0
- package/dist/esm/src/testing/graph-tester/fixtures/portPool.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/index.d.ts +84 -0
- package/dist/esm/src/testing/graph-tester/index.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/index.js +77 -0
- package/dist/esm/src/testing/graph-tester/index.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.d.ts +40 -0
- package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.js +193 -0
- package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.d.ts +42 -0
- package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.js +131 -0
- package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/SEOMode.d.ts +39 -0
- package/dist/esm/src/testing/graph-tester/modes/SEOMode.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/SEOMode.js +227 -0
- package/dist/esm/src/testing/graph-tester/modes/SEOMode.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.d.ts +83 -0
- package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.js +162 -0
- package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/index.d.ts +14 -0
- package/dist/esm/src/testing/graph-tester/modes/index.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/modes/index.js +10 -0
- package/dist/esm/src/testing/graph-tester/modes/index.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.d.ts +38 -0
- package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.js +374 -0
- package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.d.ts +50 -0
- package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.js +90 -0
- package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.d.ts +33 -0
- package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.js +132 -0
- package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.d.ts +30 -0
- package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.js +81 -0
- package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/index.d.ts +14 -0
- package/dist/esm/src/testing/graph-tester/reporters/index.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/reporters/index.js +10 -0
- package/dist/esm/src/testing/graph-tester/reporters/index.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.d.ts +33 -0
- package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js +43 -0
- package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.d.ts +70 -0
- package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js +547 -0
- package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.d.ts +83 -0
- package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js +339 -0
- package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/index.d.ts +11 -0
- package/dist/esm/src/testing/graph-tester/screenshot/index.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/index.js +9 -0
- package/dist/esm/src/testing/graph-tester/screenshot/index.js.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/types.d.ts +331 -0
- package/dist/esm/src/testing/graph-tester/screenshot/types.d.ts.map +1 -0
- package/dist/esm/src/testing/graph-tester/screenshot/types.js +10 -0
- package/dist/esm/src/testing/graph-tester/screenshot/types.js.map +1 -0
- package/dist/esm/src/testing/selectors.d.ts +1 -1
- package/dist/esm/src/testing/selectors.js +1 -1
- package/package.json +19 -6
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for screenshot annotation system.
|
|
3
|
+
*
|
|
4
|
+
* This defines the structure of annotated screenshots with element metadata,
|
|
5
|
+
* bounding boxes, and AI-ready output format.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Complete annotated screenshot with metadata and element annotations.
|
|
11
|
+
*/
|
|
12
|
+
export interface AnnotatedScreenshot {
|
|
13
|
+
/** Route that was captured */
|
|
14
|
+
route: string;
|
|
15
|
+
/** Screenshot buffer (PNG) */
|
|
16
|
+
screenshot: Buffer;
|
|
17
|
+
/** Path where screenshot was saved */
|
|
18
|
+
screenshotPath: string;
|
|
19
|
+
/** Array of element annotations */
|
|
20
|
+
annotations: ElementAnnotation[];
|
|
21
|
+
/** Page metadata */
|
|
22
|
+
pageMetadata: PageMetadata;
|
|
23
|
+
/** Timestamp */
|
|
24
|
+
timestamp: Date;
|
|
25
|
+
/** AI analysis results (if analyzed) */
|
|
26
|
+
aiAnalysis?: AIAnalysisResults;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Annotation for a single element.
|
|
30
|
+
*/
|
|
31
|
+
export interface ElementAnnotation {
|
|
32
|
+
/** Unique identifier for this element */
|
|
33
|
+
id: string;
|
|
34
|
+
/** Element selector (CSS selector or XPath) */
|
|
35
|
+
selector: string;
|
|
36
|
+
/** data-testid attribute value (if present) */
|
|
37
|
+
testId?: string;
|
|
38
|
+
/** Element tag name (div, button, input, etc.) */
|
|
39
|
+
tagName: string;
|
|
40
|
+
/** Bounding box in viewport coordinates */
|
|
41
|
+
boundingBox: BoundingBox;
|
|
42
|
+
/** Bounding box in page coordinates (for full-page screenshots) */
|
|
43
|
+
pageBoundingBox?: BoundingBox;
|
|
44
|
+
/** Computed styles relevant for AI analysis */
|
|
45
|
+
computedStyles: ComputedStyles;
|
|
46
|
+
/** Element text content */
|
|
47
|
+
textContent?: string;
|
|
48
|
+
/** Element attributes */
|
|
49
|
+
attributes: Record<string, string>;
|
|
50
|
+
/** Whether element is interactive (clickable, focusable) */
|
|
51
|
+
isInteractive: boolean;
|
|
52
|
+
/** Interaction capabilities */
|
|
53
|
+
interactions: InteractionCapability[];
|
|
54
|
+
/** Navigation target (if element triggers navigation) */
|
|
55
|
+
navigationTarget?: NavigationTarget;
|
|
56
|
+
/** Parent element ID (for hierarchy) */
|
|
57
|
+
parentId?: string;
|
|
58
|
+
/** Child element IDs (for hierarchy) */
|
|
59
|
+
childIds: string[];
|
|
60
|
+
/** ARIA attributes for accessibility analysis */
|
|
61
|
+
ariaAttributes: Record<string, string>;
|
|
62
|
+
/** Whether element is visible */
|
|
63
|
+
isVisible: boolean;
|
|
64
|
+
/** Z-index for layering analysis */
|
|
65
|
+
zIndex: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Bounding box coordinates.
|
|
69
|
+
*/
|
|
70
|
+
export interface BoundingBox {
|
|
71
|
+
/** X coordinate (left edge) */
|
|
72
|
+
x: number;
|
|
73
|
+
/** Y coordinate (top edge) */
|
|
74
|
+
y: number;
|
|
75
|
+
/** Width */
|
|
76
|
+
width: number;
|
|
77
|
+
/** Height */
|
|
78
|
+
height: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Computed styles relevant for AI analysis.
|
|
82
|
+
*/
|
|
83
|
+
export interface ComputedStyles {
|
|
84
|
+
/** Background color (RGB) */
|
|
85
|
+
backgroundColor: string;
|
|
86
|
+
/** Text color (RGB) */
|
|
87
|
+
color: string;
|
|
88
|
+
/** Font family */
|
|
89
|
+
fontFamily: string;
|
|
90
|
+
/** Font size (px) */
|
|
91
|
+
fontSize: string;
|
|
92
|
+
/** Font weight */
|
|
93
|
+
fontWeight: string;
|
|
94
|
+
/** Display type */
|
|
95
|
+
display: string;
|
|
96
|
+
/** Position type */
|
|
97
|
+
position: string;
|
|
98
|
+
/** Opacity */
|
|
99
|
+
opacity: string;
|
|
100
|
+
/** Visibility */
|
|
101
|
+
visibility: string;
|
|
102
|
+
/** Border */
|
|
103
|
+
border?: string;
|
|
104
|
+
/** Border radius */
|
|
105
|
+
borderRadius?: string;
|
|
106
|
+
/** Padding */
|
|
107
|
+
padding?: string;
|
|
108
|
+
/** Margin */
|
|
109
|
+
margin?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Interaction capability for an element.
|
|
113
|
+
*/
|
|
114
|
+
export interface InteractionCapability {
|
|
115
|
+
/** Type of interaction */
|
|
116
|
+
type: 'click' | 'hover' | 'focus' | 'input' | 'select' | 'drag' | 'scroll';
|
|
117
|
+
/** Event handler attached (if detectable) */
|
|
118
|
+
hasHandler: boolean;
|
|
119
|
+
/** Description of what happens on interaction */
|
|
120
|
+
description?: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Navigation target if element triggers navigation.
|
|
124
|
+
*/
|
|
125
|
+
export interface NavigationTarget {
|
|
126
|
+
/** Target URL or route */
|
|
127
|
+
target: string;
|
|
128
|
+
/** Navigation method */
|
|
129
|
+
method: 'link' | 'button' | 'form' | 'javascript';
|
|
130
|
+
/** href attribute (for links) */
|
|
131
|
+
href?: string;
|
|
132
|
+
/** Whether navigation opens in new tab */
|
|
133
|
+
opensInNewTab: boolean;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Page metadata.
|
|
137
|
+
*/
|
|
138
|
+
export interface PageMetadata {
|
|
139
|
+
/** Page title */
|
|
140
|
+
title: string;
|
|
141
|
+
/** Page URL */
|
|
142
|
+
url: string;
|
|
143
|
+
/** Viewport size */
|
|
144
|
+
viewport: {
|
|
145
|
+
width: number;
|
|
146
|
+
height: number;
|
|
147
|
+
};
|
|
148
|
+
/** Full page size (for scroll) */
|
|
149
|
+
pageSize: {
|
|
150
|
+
width: number;
|
|
151
|
+
height: number;
|
|
152
|
+
};
|
|
153
|
+
/** Page meta tags */
|
|
154
|
+
metaTags: Record<string, string>;
|
|
155
|
+
/** Page load metrics */
|
|
156
|
+
loadMetrics?: {
|
|
157
|
+
/** DOM content loaded (ms) */
|
|
158
|
+
domContentLoaded: number;
|
|
159
|
+
/** Load complete (ms) */
|
|
160
|
+
loadComplete: number;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* AI analysis results for annotated screenshot.
|
|
165
|
+
*/
|
|
166
|
+
export interface AIAnalysisResults {
|
|
167
|
+
/** Layout analysis */
|
|
168
|
+
layout: LayoutAnalysis;
|
|
169
|
+
/** Accessibility analysis */
|
|
170
|
+
accessibility: AccessibilityAnalysis;
|
|
171
|
+
/** Design analysis */
|
|
172
|
+
design: DesignAnalysis;
|
|
173
|
+
/** Navigation analysis */
|
|
174
|
+
navigation: NavigationAnalysis;
|
|
175
|
+
/** Overall suggestions */
|
|
176
|
+
suggestions: Suggestion[];
|
|
177
|
+
/** AI model used */
|
|
178
|
+
model: string;
|
|
179
|
+
/** Timestamp */
|
|
180
|
+
timestamp: Date;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Layout analysis.
|
|
184
|
+
*/
|
|
185
|
+
export interface LayoutAnalysis {
|
|
186
|
+
/** Grid detection */
|
|
187
|
+
hasGrid: boolean;
|
|
188
|
+
/** Grid type (if detected) */
|
|
189
|
+
gridType?: 'css-grid' | 'flexbox' | 'table' | 'float';
|
|
190
|
+
/** Symmetry score (0-100) */
|
|
191
|
+
symmetryScore: number;
|
|
192
|
+
/** Whitespace usage score (0-100) */
|
|
193
|
+
whitespaceScore: number;
|
|
194
|
+
/** Visual hierarchy clarity (0-100) */
|
|
195
|
+
hierarchyScore: number;
|
|
196
|
+
/** Issues detected */
|
|
197
|
+
issues: string[];
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Accessibility analysis.
|
|
201
|
+
*/
|
|
202
|
+
export interface AccessibilityAnalysis {
|
|
203
|
+
/** WCAG compliance level */
|
|
204
|
+
wcagLevel?: 'A' | 'AA' | 'AAA';
|
|
205
|
+
/** Contrast ratio violations */
|
|
206
|
+
contrastViolations: ContrastViolation[];
|
|
207
|
+
/** Missing ARIA labels */
|
|
208
|
+
missingAriaLabels: string[];
|
|
209
|
+
/** Interactive elements without labels */
|
|
210
|
+
unlabeledInteractiveElements: string[];
|
|
211
|
+
/** Keyboard navigation issues */
|
|
212
|
+
keyboardNavigationIssues: string[];
|
|
213
|
+
/** Screen reader issues */
|
|
214
|
+
screenReaderIssues: string[];
|
|
215
|
+
/** Overall accessibility score (0-100) */
|
|
216
|
+
accessibilityScore: number;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Contrast violation.
|
|
220
|
+
*/
|
|
221
|
+
export interface ContrastViolation {
|
|
222
|
+
/** Element selector */
|
|
223
|
+
selector: string;
|
|
224
|
+
/** Foreground color */
|
|
225
|
+
foregroundColor: string;
|
|
226
|
+
/** Background color */
|
|
227
|
+
backgroundColor: string;
|
|
228
|
+
/** Contrast ratio */
|
|
229
|
+
contrastRatio: number;
|
|
230
|
+
/** Required ratio for WCAG level */
|
|
231
|
+
requiredRatio: number;
|
|
232
|
+
/** WCAG level */
|
|
233
|
+
wcagLevel: 'AA' | 'AAA';
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Design analysis.
|
|
237
|
+
*/
|
|
238
|
+
export interface DesignAnalysis {
|
|
239
|
+
/** Color palette detected */
|
|
240
|
+
colorPalette: string[];
|
|
241
|
+
/** Color harmony score (0-100) */
|
|
242
|
+
colorHarmonyScore: number;
|
|
243
|
+
/** Typography consistency score (0-100) */
|
|
244
|
+
typographyScore: number;
|
|
245
|
+
/** Visual consistency score (0-100) */
|
|
246
|
+
consistencyScore: number;
|
|
247
|
+
/** Spacing consistency score (0-100) */
|
|
248
|
+
spacingScore: number;
|
|
249
|
+
/** Design issues */
|
|
250
|
+
issues: string[];
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Navigation analysis.
|
|
254
|
+
*/
|
|
255
|
+
export interface NavigationAnalysis {
|
|
256
|
+
/** User flow clarity score (0-100) */
|
|
257
|
+
flowClarityScore: number;
|
|
258
|
+
/** CTA detection */
|
|
259
|
+
callToActionElements: string[];
|
|
260
|
+
/** Navigation patterns detected */
|
|
261
|
+
navigationPatterns: string[];
|
|
262
|
+
/** Breadcrumb navigation detected */
|
|
263
|
+
hasBreadcrumbs: boolean;
|
|
264
|
+
/** Back button detected */
|
|
265
|
+
hasBackButton: boolean;
|
|
266
|
+
/** Navigation issues */
|
|
267
|
+
issues: string[];
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Actionable suggestion.
|
|
271
|
+
*/
|
|
272
|
+
export interface Suggestion {
|
|
273
|
+
/** Suggestion priority */
|
|
274
|
+
priority: 'critical' | 'high' | 'medium' | 'low';
|
|
275
|
+
/** Category */
|
|
276
|
+
category: 'layout' | 'accessibility' | 'design' | 'navigation' | 'performance';
|
|
277
|
+
/** Suggestion title */
|
|
278
|
+
title: string;
|
|
279
|
+
/** Detailed description */
|
|
280
|
+
description: string;
|
|
281
|
+
/** Element selector (if applicable) */
|
|
282
|
+
selector?: string;
|
|
283
|
+
/** Remediation steps */
|
|
284
|
+
remediation?: string[];
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Configuration for HTML annotation renderer.
|
|
288
|
+
*/
|
|
289
|
+
export interface HTMLRendererConfig {
|
|
290
|
+
/** Whether to include sidebar with annotation details */
|
|
291
|
+
includeSidebar?: boolean;
|
|
292
|
+
/** Whether to make bounding boxes hoverable */
|
|
293
|
+
enableHover?: boolean;
|
|
294
|
+
/** Whether to allow click-to-highlight */
|
|
295
|
+
enableClickToHighlight?: boolean;
|
|
296
|
+
/** Bounding box color */
|
|
297
|
+
boundingBoxColor?: string;
|
|
298
|
+
/** Bounding box width (px) */
|
|
299
|
+
boundingBoxWidth?: number;
|
|
300
|
+
/** Output file path */
|
|
301
|
+
outputPath: string;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Configuration for canvas annotation renderer.
|
|
305
|
+
*/
|
|
306
|
+
export interface CanvasRendererConfig {
|
|
307
|
+
/** Whether to draw element labels */
|
|
308
|
+
drawLabels?: boolean;
|
|
309
|
+
/** Label font size (px) */
|
|
310
|
+
labelFontSize?: number;
|
|
311
|
+
/** Bounding box color */
|
|
312
|
+
boundingBoxColor?: string;
|
|
313
|
+
/** Bounding box width (px) */
|
|
314
|
+
boundingBoxWidth?: number;
|
|
315
|
+
/** Output file path */
|
|
316
|
+
outputPath: string;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Annotation rendering result.
|
|
320
|
+
*/
|
|
321
|
+
export interface AnnotationRenderResult {
|
|
322
|
+
/** Output file path */
|
|
323
|
+
outputPath: string;
|
|
324
|
+
/** Renderer type */
|
|
325
|
+
rendererType: 'html' | 'canvas';
|
|
326
|
+
/** File size (bytes) */
|
|
327
|
+
fileSize: number;
|
|
328
|
+
/** Rendering duration (ms) */
|
|
329
|
+
duration: number;
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/screenshot/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for screenshot annotation system.
|
|
3
|
+
*
|
|
4
|
+
* This defines the structure of annotated screenshots with element metadata,
|
|
5
|
+
* bounding boxes, and AI-ready output format.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/screenshot/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```typescript
|
|
12
|
-
* import { Chat } from '../architecture/
|
|
12
|
+
* import { Chat } from '../architecture/ComponentNames';
|
|
13
13
|
* import { testId } from '@supernal-interface/core/testing';
|
|
14
14
|
*
|
|
15
15
|
* const input = page.locator(testId(Chat.input));
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```typescript
|
|
12
|
-
* import { Chat } from '../architecture/
|
|
12
|
+
* import { Chat } from '../architecture/ComponentNames.js';
|
|
13
13
|
* import { testId } from '@supernal-interface/core/testing';
|
|
14
14
|
*
|
|
15
15
|
* const input = page.locator(testId(Chat.input));
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@supernal/interface",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"description": "Universal AI Interface - Make any application AI-controllable with decorators (Open Source Edition)",
|
|
5
5
|
"main": "./dist/cjs/src/index.js",
|
|
6
6
|
"module": "./dist/esm/src/index.js",
|
|
7
7
|
"types": "./dist/esm/src/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
+
"browser": "./dist/esm/src/browser.js",
|
|
10
11
|
"types": "./dist/esm/src/index.d.ts",
|
|
11
12
|
"import": "./dist/esm/src/index.js",
|
|
12
13
|
"require": "./dist/cjs/src/index.js"
|
|
@@ -31,6 +32,16 @@
|
|
|
31
32
|
"import": "./dist/esm/src/testing/index.js",
|
|
32
33
|
"require": "./dist/cjs/src/testing/index.js"
|
|
33
34
|
},
|
|
35
|
+
"./testing/graph-tester": {
|
|
36
|
+
"types": "./dist/esm/src/testing/graph-tester/index.d.ts",
|
|
37
|
+
"import": "./dist/esm/src/testing/graph-tester/index.js",
|
|
38
|
+
"require": "./dist/cjs/src/testing/graph-tester/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./testing/graph-tester/fixtures": {
|
|
41
|
+
"types": "./dist/esm/src/testing/graph-tester/fixtures/index.d.ts",
|
|
42
|
+
"import": "./dist/esm/src/testing/graph-tester/fixtures/index.js",
|
|
43
|
+
"require": "./dist/cjs/src/testing/graph-tester/fixtures/index.js"
|
|
44
|
+
},
|
|
34
45
|
"./testing/ComponentStateHelpers": {
|
|
35
46
|
"types": "./dist/esm/src/testing/ComponentStateHelpers.d.ts",
|
|
36
47
|
"import": "./dist/esm/src/testing/ComponentStateHelpers.js",
|
|
@@ -59,9 +70,10 @@
|
|
|
59
70
|
"fix-esm": "node scripts/fix-esm-imports.js",
|
|
60
71
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
61
72
|
"build:watch": "tsc -p tsconfig.json --watch",
|
|
62
|
-
"
|
|
63
|
-
"test
|
|
64
|
-
"test:
|
|
73
|
+
"dev": "tsc -p tsconfig.json --watch",
|
|
74
|
+
"test": "NODE_ENV=test npx jest",
|
|
75
|
+
"test:watch": "NODE_ENV=test npx jest --watch",
|
|
76
|
+
"test:coverage": "NODE_ENV=test npx jest --coverage",
|
|
65
77
|
"lint": "eslint src --ext .ts,.tsx",
|
|
66
78
|
"lint:fix": "eslint src --ext .ts,.tsx --fix",
|
|
67
79
|
"prepack": "npm run build"
|
|
@@ -85,7 +97,7 @@
|
|
|
85
97
|
},
|
|
86
98
|
"dependencies": {
|
|
87
99
|
"@ai-sdk/mcp": "^0.0.8",
|
|
88
|
-
"
|
|
100
|
+
"cac": "^6.7.14",
|
|
89
101
|
"glob": "^13.0.0",
|
|
90
102
|
"reflect-metadata": "^0.2.2"
|
|
91
103
|
},
|
|
@@ -103,8 +115,9 @@
|
|
|
103
115
|
},
|
|
104
116
|
"devDependencies": {
|
|
105
117
|
"@jest/globals": "^29.7.0",
|
|
118
|
+
"@playwright/test": "^1.57.0",
|
|
106
119
|
"@testing-library/dom": "^10.4.1",
|
|
107
|
-
"@testing-library/react": "^16.3.
|
|
120
|
+
"@testing-library/react": "^16.3.2",
|
|
108
121
|
"@types/glob": "^8.1.0",
|
|
109
122
|
"@types/jest": "^29.5.14",
|
|
110
123
|
"@types/node": "^25.0.2",
|