feat: add type definitions for test framework

This commit is contained in:
张翔
2026-03-06 12:05:27 +08:00
parent 0171e97b82
commit 66c868de03
6 changed files with 147 additions and 0 deletions
@@ -0,0 +1,24 @@
export interface AccessibilityResult {
score: number;
violations: Violation[];
passes: number;
incomplete: number;
page: string;
url: string;
}
export interface Violation {
id: string;
impact: string;
description: string;
help: string;
helpUrl: string;
nodes: number;
}
export interface WCAGCompliance {
level: 'A' | 'AA' | 'AAA';
passed: number;
failed: number;
total: number;
}
+5
View File
@@ -0,0 +1,5 @@
export * from './page.types';
export * from './test.types';
export * from './performance.types';
export * from './accessibility.types';
export * from './seo.types';
+20
View File
@@ -0,0 +1,20 @@
import { Page, Locator } from '@playwright/test';
export interface PageConfig {
name: string;
url: string;
selectors: {
title: string;
[key: string]: string;
};
}
export interface PageSelectors {
[key: string]: string;
}
export interface NavigationItem {
name: string;
url: string;
selector: string;
}
@@ -0,0 +1,36 @@
export interface PerformanceMetrics {
loadTime: number;
domContentLoaded: number;
firstPaint: number;
firstContentfulPaint: number;
}
export interface CoreWebVitals {
largestContentfulPaint: number;
firstInputDelay: number;
cumulativeLayoutShift: number;
}
export interface ResourceTiming {
name: string;
duration: number;
size: number;
type: string;
}
export interface NetworkTiming {
dns: number;
tcp: number;
ssl: number;
request: number;
response: number;
total: number;
}
export interface LighthouseResult {
performance: number;
accessibility: number;
bestPractices: number;
seo: number;
pwa: number;
}
+35
View File
@@ -0,0 +1,35 @@
export interface SEOResult {
score: number;
metaTags: MetaTagResult;
headings: HeadingResult;
links: LinkResult;
images: ImageResult;
}
export interface MetaTagResult {
title: boolean;
description: boolean;
keywords: boolean;
ogTitle: boolean;
ogDescription: boolean;
canonical: boolean;
}
export interface HeadingResult {
hasH1: boolean;
headingStructure: boolean;
multipleH1: boolean;
}
export interface LinkResult {
total: number;
broken: number;
internal: number;
external: number;
}
export interface ImageResult {
total: number;
withAlt: number;
withoutAlt: number;
}
+27
View File
@@ -0,0 +1,27 @@
export interface TestConfig {
baseURL: string;
timeout: number;
retries: number;
environment: string;
headless: boolean;
slowMo?: number;
}
export interface TestResult {
name: string;
status: 'passed' | 'failed' | 'skipped';
duration: number;
errors?: Error[];
}
export interface TestSuite {
name: string;
tests: TestResult[];
summary: {
total: number;
passed: number;
failed: number;
skipped: number;
duration: number;
};
}