feat: create MobileTestReporter base structure
This commit is contained in:
@@ -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,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user