* send failing test to axiom (ubuntu) * forgot always * rename * Update .github/workflows/playwright.yml Co-authored-by: Adam Sunderland <adam@kittycad.io> * update to indivdual lines of json * another fix * tweak output * log macos too --------- Co-authored-by: Adam Sunderland <adam@kittycad.io>
66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
import { readFileSync } from 'fs'
|
|
|
|
const data = readFileSync('./test-results/report.json', 'utf8')
|
|
|
|
// types, but was easier to store and run as normal js
|
|
// interface FailedTest {
|
|
// name: string;
|
|
// projectName: string;
|
|
// error: string;
|
|
// }
|
|
|
|
// interface Spec {
|
|
// title: string;
|
|
// tests: Test[];
|
|
// }
|
|
|
|
// interface Test {
|
|
// expectedStatus: 'passed' | 'failed' | 'pending';
|
|
// projectName: string;
|
|
// title: string;
|
|
// results: {
|
|
// status: 'passed' | 'failed' | 'pending';
|
|
// error: {stack: string}
|
|
// }[]
|
|
// }
|
|
|
|
// interface Suite {
|
|
// title: string
|
|
// suites: Suite[];
|
|
// specs: Spec[];
|
|
// }
|
|
|
|
// const processReport = (suites: Suite[]): FailedTest[] => {
|
|
// const failedTests: FailedTest[] = []
|
|
// const loopSuites = (suites: Suite[], previousName = '') => {
|
|
const processReport = (suites) => {
|
|
const failedTests = []
|
|
const loopSuites = (suites, previousName = '') => {
|
|
if (!suites) return
|
|
for (const suite of suites) {
|
|
const name = (previousName ? `${previousName} -- ` : '') + suite.title
|
|
for (const spec of suite.specs) {
|
|
for (const test of spec.tests) {
|
|
for (const result of test.results) {
|
|
if ((result.status !== 'passed') && test.expectedStatus === 'passed') {
|
|
failedTests.push({
|
|
name: (name + ' -- ' + spec.title) + (test.title ? ` -- ${test.title}` : ''),
|
|
status: result.status,
|
|
projectName: test.projectName,
|
|
error: result.error?.stack,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
loopSuites(suite.suites, name)
|
|
}
|
|
}
|
|
loopSuites(suites)
|
|
return failedTests.map(line => JSON.stringify(line)).join('\n')
|
|
}
|
|
const failedTests = processReport(JSON.parse(data).suites)
|
|
// log to stdout to be piped to axiom
|
|
console.log(failedTests)
|
|
|