feat: create MobileTestReporter base structure

This commit is contained in:
张翔
2026-03-05 15:58:25 +08:00
parent 9e5d61cfed
commit 8a43c0f5c2
+48
View File
@@ -0,0 +1,48 @@
import { FullConfig, FullResult, Suite, TestCase, TestResult } from '@playwright/test';
export interface TestOverview {
total: number;
passed: number;
failed: number;
skipped: number;
duration: number;
}
export interface DeviceTestResult {
device: string;
passed: number;
failed: number;
duration: number;
}
export class MobileTestReporter {
constructor(private config: FullConfig) {}
generateOverview(results: FullResult): TestOverview {
const total = results.suites.reduce((sum, suite) => {
return sum + suite.suites.reduce((suiteSum, subSuite) => {
return suiteSum + subSuite.cases.length;
}, 0);
}, 0);
const passed = results.suites.reduce((sum, suite) => {
return sum + suite.suites.reduce((suiteSum, subSuite) => {
return suiteSum + subSuite.cases.filter(c => c.results[0]?.status === 'passed').length;
}, 0);
}, 0);
const failed = results.suites.reduce((sum, suite) => {
return sum + suite.suites.reduce((suiteSum, subSuite) => {
return suiteSum + subSuite.cases.filter(c => c.results[0]?.status === 'failed').length;
}, 0);
}, 0);
return {
total,
passed,
failed,
skipped: total - passed - failed,
duration: results.duration,
};
}
}