forked from Expensify/react-native-onyx
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvalidateReassureOutput.ts
More file actions
47 lines (37 loc) · 1.89 KB
/
validateReassureOutput.ts
File metadata and controls
47 lines (37 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
* NOTE: After changes to the file it needs to be compiled using [`ncc`](https://github.com/vercel/ncc)
* Example: ncc build -t validateReassureOutput.ts -o index.js
*/
import * as core from '@actions/core';
import type {CompareResult, MeasureEntry} from '@callstack/reassure-compare';
import fs from 'fs';
async function run() {
try {
const regressionOutput: CompareResult = JSON.parse(fs.readFileSync('.reassure/output.json', 'utf8'));
const durationDeviation = Number(core.getInput('DURATION_DEVIATION_PERCENTAGE', {required: true}));
if (regressionOutput.significant === undefined || regressionOutput.significant.length === 0) {
console.log('No significant data available. Exiting...');
return true;
}
console.log(`Processing ${regressionOutput.significant.length} measurements...`);
for (let i = 0; i < regressionOutput.significant.length; i++) {
const measurement = regressionOutput.significant[i];
const baseline: MeasureEntry = measurement.baseline;
const current: MeasureEntry = measurement.current;
console.log(`Processing measurement ${i + 1}: ${measurement.name}`);
const increasePercentage = ((current.meanDuration - baseline.meanDuration) / baseline.meanDuration) * 100;
if (increasePercentage > durationDeviation) {
core.setFailed(`Duration increase percentage exceeded the allowed deviation of ${durationDeviation}%. Current percentage: ${increasePercentage}%`);
break;
} else {
console.log(`Duration increase percentage ${increasePercentage}% is within the allowed deviation range of ${durationDeviation}%.`);
}
}
return true;
} catch (error) {
console.log('error: ', error);
core.setFailed(error.message);
}
}
run();
export default run;