blob: 763cd59f6a5f79a7b4a06b3312ec785e20175e52 [file] [log] [blame]
import { globalTestConfig } from '../../framework/test_config.js';
import { version } from '../version.js';
import { LiveTestCaseResult } from './result.js';
import { TestCaseRecorder } from './test_case_recorder.js';
export type LogResults = Map<string, LiveTestCaseResult>;
export class Logger {
readonly overriddenDebugMode: boolean | undefined;
readonly results: LogResults = new Map();
defaultDeviceDescription: string | undefined;
constructor({ overrideDebugMode }: { overrideDebugMode?: boolean } = {}) {
this.overriddenDebugMode = overrideDebugMode;
}
record(name: string): [TestCaseRecorder, LiveTestCaseResult] {
const result: LiveTestCaseResult = { status: 'running', timems: -1 };
this.results.set(name, result);
return [
new TestCaseRecorder(result, this.overriddenDebugMode ?? globalTestConfig.enableDebugLogs),
result,
];
}
asJSON(space?: number, predFunc?: (key: string, value: LiveTestCaseResult) => boolean): string {
return JSON.stringify(
{
version,
defaultDevice: this.defaultDeviceDescription,
results: Array.from(
new Map(
[...this.results].filter(([key, value]) => (predFunc ? predFunc(key, value) : true))
)
),
},
undefined,
space
);
}
}