-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathwriteResults.ts
More file actions
114 lines (102 loc) 路 2.75 KB
/
Copy pathwriteResults.ts
File metadata and controls
114 lines (102 loc) 路 2.75 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import { measurePerformance } from "..";
import fs from "fs";
import * as PerformanceTester from "../PerformanceTester";
import * as writeReport from "../writeReport";
import { Logger, LogLevel } from "@perf-profiler/logger";
jest.mock("@perf-profiler/profiler", () => ({
...jest.requireActual("@perf-profiler/profiler"),
profiler: {
...jest.requireActual("@perf-profiler/profiler").profiler,
installProfilerOnDevice: jest.fn(),
detectDeviceRefreshRate: jest.fn(() => 120),
},
}));
Logger.setLogLevel(LogLevel.SILENT);
const mockDate = () => {
const MOCK_DATE = new Date(1686650793058);
jest.spyOn(global, "Date").mockImplementation(() => MOCK_DATE);
};
const mockPerformanceTester = () => {
const actualPerformanceTester = jest.requireActual("../PerformanceTester").PerformanceTester;
jest.spyOn(PerformanceTester, "PerformanceTester").mockImplementation((...args) => {
const tester = new actualPerformanceTester(...args);
jest.spyOn(tester, "iterate").mockResolvedValue(undefined);
return tester;
});
};
const runTest = jest.fn();
const runMeasures = async (resultsFileOptions?: { path?: string; title?: string }) => {
const { writeResults } = await measurePerformance(
"com.example",
{
run: runTest,
},
{
resultsFileOptions,
}
);
writeResults();
};
describe("writeResults", () => {
beforeAll(() => {
mockDate();
mockPerformanceTester();
});
const writeReportSpy = jest.spyOn(writeReport, "writeReport");
afterEach(() => {
writeReportSpy.mockClear();
});
it.each([
[
{
options: undefined,
expected: {
filePath: `${process.cwd()}/results_1686650793058.json`,
overrideScore: undefined,
title: "Results",
},
},
],
[
{
options: {
title: "Awesome title",
},
expected: {
filePath: `${process.cwd()}/awesome_title_1686650793058.json`,
overrideScore: undefined,
title: "Awesome title",
},
},
],
[
{
options: {
path: "/tmp/flashlight_test.json",
title: "Awesome title",
},
expected: {
filePath: `/tmp/flashlight_test.json`,
overrideScore: undefined,
title: "Awesome title",
},
},
],
[
{
options: {
path: "/tmp/flashlight_test.json",
},
expected: {
filePath: `/tmp/flashlight_test.json`,
overrideScore: undefined,
title: "Results",
},
},
],
])("writes results to a file", async ({ options, expected }) => {
await runMeasures(options);
expect(writeReportSpy).toHaveBeenCalledWith([], expected);
fs.rmSync(expected.filePath);
});
});