2022-04-04 05:43:23 -05:00
|
|
|
import { betterer } from '@betterer/betterer';
|
|
|
|
import { camelCase } from 'lodash';
|
|
|
|
|
|
|
|
function logStat(name: string, value: number) {
|
|
|
|
// Note that this output format must match the parsing in ci-frontend-metrics.sh
|
|
|
|
// which expects the two values to be separated by a space
|
|
|
|
console.log(`${name} ${value}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
async function main() {
|
|
|
|
const results = await betterer.results();
|
|
|
|
|
|
|
|
for (const testResults of results.resultSummaries) {
|
2022-06-25 06:45:38 -05:00
|
|
|
const countByMessage = {};
|
2022-04-04 05:43:23 -05:00
|
|
|
const name = camelCase(testResults.name);
|
2022-06-25 06:45:38 -05:00
|
|
|
Object.values(testResults.details)
|
|
|
|
.flatMap((v) => v)
|
|
|
|
.forEach((detail) => {
|
|
|
|
const message = camelCase(detail.message);
|
|
|
|
const metricName = `${name}_${message}`;
|
|
|
|
if (metricName in countByMessage) {
|
|
|
|
countByMessage[metricName]++;
|
|
|
|
} else {
|
|
|
|
countByMessage[metricName] = 1;
|
|
|
|
}
|
|
|
|
});
|
2022-04-04 05:43:23 -05:00
|
|
|
|
2022-06-25 06:45:38 -05:00
|
|
|
for (const [metricName, count] of Object.entries<number>(countByMessage)) {
|
|
|
|
logStat(metricName, count);
|
|
|
|
}
|
2022-04-04 05:43:23 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
main().catch(console.error);
|