import { AssertionResult } from "@jest/test-result"; import * as os from "os"; // Adapted from https://github.com/hatchteam/karma-trx-reporter export const formatDuration = (duration: number): string => { let durationInner = duration || 0; const ms = durationInner % 1000; durationInner -= ms; const s = (durationInner / 1000) % 60; durationInner -= s * 1000; const m = (durationInner / 60000) % 60; durationInner -= m * 60000; const h = (durationInner / 3600000) % 24; durationInner -= h * 3600000; const d = durationInner / 86400000; const dayPart = d > 0 ? `${d}.` : ""; const hours = h.toString().padStart(2, "0"); const minutes = m.toString().padStart(2, "0"); const seconds = s.toString().padStart(2, "0"); const milliseconds = ms.toString().padStart(3, "0"); return `${dayPart + hours}:${minutes}:${seconds}.${milliseconds}`; }; // Auxillary test data functions export const getFullTestName = (testResult: AssertionResult): string => testResult.ancestorTitles && testResult.ancestorTitles.length ? `${testResult.ancestorTitles.join(" / ")} / ${testResult.title}` : testResult.title; export const getTestClassName = (testResult: AssertionResult): string => testResult.ancestorTitles && testResult.ancestorTitles.length ? testResult.ancestorTitles[0] : "No suite"; export const getEnvInfo = ( defaultUserName = "anonymous", ): { computerName: string; userName: string } => ({ computerName: os.hostname(), userName: process.env.SUDO_USER || process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME || defaultUserName, });