@jupyterlab/galata 4.3.0-alpha.10 → 4.3.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -3
- package/lib/benchmarkReporter.d.ts +78 -5
- package/lib/benchmarkReporter.js +227 -60
- package/lib/benchmarkReporter.js.map +1 -1
- package/lib/benchmarkVLTpl.js +0 -2
- package/lib/benchmarkVLTpl.js.map +1 -1
- package/lib/fixtures.js +3 -383
- package/lib/fixtures.js.map +1 -1
- package/lib/galata.d.ts +49 -1
- package/lib/galata.js +397 -2
- package/lib/galata.js.map +1 -1
- package/lib/helpers/debuggerpanel.d.ts +61 -0
- package/lib/helpers/debuggerpanel.js +122 -0
- package/lib/helpers/debuggerpanel.js.map +1 -0
- package/lib/helpers/notebook.d.ts +36 -0
- package/lib/helpers/notebook.js +91 -1
- package/lib/helpers/notebook.js.map +1 -1
- package/lib/jupyterlabpage.d.ts +9 -0
- package/lib/jupyterlabpage.js +2 -0
- package/lib/jupyterlabpage.js.map +1 -1
- package/lib/lib-inpage/inpage.js +13 -12
- package/lib/lib-inpage/inpage.js.map +1 -1
- package/package.json +17 -16
package/README.md
CHANGED
|
@@ -379,7 +379,7 @@ test.describe.serial('Table of Contents', () => {
|
|
|
379
379
|
|
|
380
380
|
## Benchmark
|
|
381
381
|
|
|
382
|
-
Benchmark of JupyterLab is done
|
|
382
|
+
Benchmark of JupyterLab is done using Playwright. The actions measured are:
|
|
383
383
|
|
|
384
384
|
- Opening a file
|
|
385
385
|
- Switching from the file to a simple text file
|
|
@@ -388,6 +388,13 @@ Benchmark of JupyterLab is done automatically using Playwright. The actions meas
|
|
|
388
388
|
|
|
389
389
|
Two files are tested: a notebook with many code cells and another with many markdown cells.
|
|
390
390
|
|
|
391
|
+
The test is run on the CI by comparing the result in the commit at which a PR branch started and the PR branch head on
|
|
392
|
+
the same CI job to ensure using the same hardware.
|
|
393
|
+
The benchmark job is triggered on:
|
|
394
|
+
|
|
395
|
+
- Approved PR review
|
|
396
|
+
- PR review that contains the sentence `please run benchmark`
|
|
397
|
+
|
|
391
398
|
The tests are located in the subfolder [test/benchmark](./test/benchmark). And they can be
|
|
392
399
|
executed with the following command:
|
|
393
400
|
|
|
@@ -402,8 +409,8 @@ A special report will be generated in the folder `benchmark-results` that will c
|
|
|
402
409
|
- `lab-benchmark.png`: A comparison of execution time distribution
|
|
403
410
|
- `lab-benchmark.vl.json`: The [_Vega-Lite_](https://vega.github.io/vega-lite) description used to produce the PNG file.
|
|
404
411
|
|
|
405
|
-
The reference, tagged _expected_, is stored in
|
|
406
|
-
|
|
412
|
+
The reference, tagged _expected_, is stored in `lab-benchmark-expected.json`. It can be
|
|
413
|
+
created using the `-u` option of Playwright; i.e. `jlpm run test:benchmark -u`.
|
|
407
414
|
|
|
408
415
|
### Benchmark parameters
|
|
409
416
|
|
|
@@ -442,6 +449,41 @@ By default, both projects will be executed when running `jlpm run test`. But you
|
|
|
442
449
|
|
|
443
450
|
Galata can be configured by using [command line arguments](https://playwright.dev/docs/cli) or using [`playwright.config.js` file](https://playwright.dev/docs/test-configuration). Full list of config options can be accessed using `jlpm playwright test --help`.
|
|
444
451
|
|
|
452
|
+
### Custom benchmark report
|
|
453
|
+
|
|
454
|
+
By default, Galata will generate a text report in the form of `markdown` table and a [_Vega-Lite_](https://vega.github.io/vega-lite) graph of execution time distribution. Users can customize these reports in two ways:
|
|
455
|
+
|
|
456
|
+
- Using `playwright.config.js` file: in `reporter` section, users can supply two functions `vegaLiteConfigFactory` and `textReportFactory` to the reporter's constructor options. These functions will be used to create [Vega-Lite configuration](https://vega.github.io/vega-lite/docs/) (`vegaLiteConfigFactory`) or to create a text report (`textReportFactory`) from test records.
|
|
457
|
+
|
|
458
|
+
```javascript
|
|
459
|
+
// An example of `playwright.config.js` with customized builder
|
|
460
|
+
reporter: [
|
|
461
|
+
...,
|
|
462
|
+
[
|
|
463
|
+
'@jupyterlab/galata/lib/benchmarkReporter',
|
|
464
|
+
{ outputFile: 'lab-benchmark.json',
|
|
465
|
+
vegaLiteConfigFactory: (
|
|
466
|
+
allData: Array<IReportRecord>, // All test records
|
|
467
|
+
comparison?: 'snapshot' | 'project'// Logic of test comparisons:'snapshot' or 'project' - default 'snapshot'.
|
|
468
|
+
) => {
|
|
469
|
+
// Return a Vega-Lite graph configuration object
|
|
470
|
+
return {};
|
|
471
|
+
}
|
|
472
|
+
textReportFactory: (
|
|
473
|
+
allData: Array<IReportRecord>, // All test records
|
|
474
|
+
comparison?: 'snapshot' | 'project'// Logic of test comparisons:'snapshot' or 'project' - default 'snapshot'.
|
|
475
|
+
) => {
|
|
476
|
+
// Return a promise of with the tuple [report content, file extension]
|
|
477
|
+
return Promise.resolve(['My report content', 'md']);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
],
|
|
481
|
+
...
|
|
482
|
+
]
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
- The second way to customize the reports is to override the default text report factory (`defaultTextReportFactory`) and Vega-Lite graph config factory (`defaultVegaLiteConfigFactory`) of `BenchmarkReporter` class in a sub-class and then use it as a reporter in `playwright.config.js` file.
|
|
486
|
+
|
|
445
487
|
## Reference Image Captures
|
|
446
488
|
|
|
447
489
|
Reference image are saved next to test files in `<test-file-name>-snapshots` folders. If a reference screenshots does not exist, it will be generated at the first execution
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { JSONObject } from '@lumino/coreutils';
|
|
2
3
|
import { FullConfig, FullResult, Reporter, Suite, TestCase, TestResult } from '@playwright/test/reporter';
|
|
3
4
|
/**
|
|
4
5
|
* Benchmark namespace
|
|
@@ -89,11 +90,51 @@ export declare namespace benchmark {
|
|
|
89
90
|
* @returns The attachment
|
|
90
91
|
*/
|
|
91
92
|
function addAttachment<IRecord>(data: IRecord): IAttachment;
|
|
93
|
+
/**
|
|
94
|
+
* Change between two distributions
|
|
95
|
+
*/
|
|
96
|
+
interface IDistributionChange {
|
|
97
|
+
/**
|
|
98
|
+
* Mean value
|
|
99
|
+
*/
|
|
100
|
+
mean: number;
|
|
101
|
+
/**
|
|
102
|
+
* Spread around the mean value
|
|
103
|
+
*/
|
|
104
|
+
confidenceInterval: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Compute the performance change based on a number of old and new measurements.
|
|
108
|
+
*
|
|
109
|
+
* Based on the work by Tomas Kalibera and Richard Jones. See their paper
|
|
110
|
+
* "Quantifying Performance Changes with Effect Size Confidence Intervals", section 6.2,
|
|
111
|
+
* formula "Quantifying Performance Change".
|
|
112
|
+
*
|
|
113
|
+
* However, it simplifies it to only assume one level of benchmarks, not multiple levels.
|
|
114
|
+
* If you do have multiple levels, simply use the mean of the lower levels as your data,
|
|
115
|
+
* like they do in the paper.
|
|
116
|
+
*
|
|
117
|
+
* Note: The measurements must have the same length. As fallback, you could use the minimum
|
|
118
|
+
* size of the two measurement sets.
|
|
119
|
+
*
|
|
120
|
+
* @param oldMeasures The old measurements
|
|
121
|
+
* @param newMeasures The new measurements
|
|
122
|
+
* @param confidenceInterval The confidence interval for the results.
|
|
123
|
+
* @param minLength Fall back to the minimum length of the two arrays
|
|
124
|
+
*/
|
|
125
|
+
function distributionChange(oldMeasures: number[], newMeasures: number[], confidenceInterval?: number, minLength?: boolean): IDistributionChange;
|
|
126
|
+
/**
|
|
127
|
+
* Format a performance changes like `between 20.1% slower and 30.3% faster`.
|
|
128
|
+
*
|
|
129
|
+
* @param distribution The distribution change
|
|
130
|
+
* @returns The formatted distribution change
|
|
131
|
+
*/
|
|
132
|
+
function formatChange(distribution: IDistributionChange): string;
|
|
92
133
|
}
|
|
93
134
|
/**
|
|
94
135
|
* Report record interface
|
|
95
136
|
*/
|
|
96
|
-
interface IReportRecord extends benchmark.IRecord {
|
|
137
|
+
export interface IReportRecord extends benchmark.IRecord {
|
|
97
138
|
/**
|
|
98
139
|
* Test suite reference
|
|
99
140
|
*/
|
|
@@ -144,14 +185,19 @@ interface IReport {
|
|
|
144
185
|
declare class BenchmarkReporter implements Reporter {
|
|
145
186
|
/**
|
|
146
187
|
* @param options
|
|
147
|
-
* outputFile: Name of the output file (default to env BENCHMARK_OUTPUTFILE)
|
|
148
|
-
* comparison: Logic of test comparisons: 'snapshot' or 'project'
|
|
149
|
-
*
|
|
150
|
-
*
|
|
188
|
+
* - outputFile: Name of the output file (default to env BENCHMARK_OUTPUTFILE)
|
|
189
|
+
* - comparison: Logic of test comparisons: 'snapshot' or 'project'
|
|
190
|
+
* * 'snapshot': (default) This will compare the 'actual' result with the 'expected' one
|
|
191
|
+
* * 'project': This will compare the different project
|
|
192
|
+
* - vegaLiteConfigFactory: Function to create VegaLite configuration from test records; see https://vega.github.io/vega-lite/docs/.
|
|
193
|
+
* - textReportFactory: Function to create text report from test records, this function
|
|
194
|
+
* should return the content and extension of report file.
|
|
151
195
|
*/
|
|
152
196
|
constructor(options?: {
|
|
153
197
|
outputFile?: string;
|
|
154
198
|
comparison?: 'snapshot' | 'project';
|
|
199
|
+
vegaLiteConfigFactory?: (allData: Array<IReportRecord>, comparison?: 'snapshot' | 'project') => JSONObject;
|
|
200
|
+
textReportFactory?: (allData: Array<IReportRecord>, comparison?: 'snapshot' | 'project') => Promise<[string, string]>;
|
|
155
201
|
});
|
|
156
202
|
/**
|
|
157
203
|
* Called once before running tests. All tests have been already discovered and put into a hierarchy of [Suite]s.
|
|
@@ -176,6 +222,31 @@ declare class BenchmarkReporter implements Reporter {
|
|
|
176
222
|
* - `'interrupted'` - Interrupted by the user.
|
|
177
223
|
*/
|
|
178
224
|
onEnd(result: FullResult): Promise<void>;
|
|
225
|
+
/**
|
|
226
|
+
* Default text report factory of `BenchmarkReporter`, this method will
|
|
227
|
+
* be used by to generate markdown report. Users can customize the builder
|
|
228
|
+
* by supplying another builder to constructor's option or override this
|
|
229
|
+
* method on a sub-class.
|
|
230
|
+
*
|
|
231
|
+
* @param allData all test records.
|
|
232
|
+
* @param comparison logic of test comparisons:
|
|
233
|
+
* 'snapshot' or 'project'; default 'snapshot'.
|
|
234
|
+
* @return A list of two strings, the first one
|
|
235
|
+
* is the content of report, the second one is the extension of report file.
|
|
236
|
+
*/
|
|
237
|
+
protected defaultTextReportFactory(allData: Array<IReportRecord>, comparison?: 'snapshot' | 'project'): Promise<[string, string]>;
|
|
238
|
+
/**
|
|
239
|
+
* Default Vega Lite config factory of `BenchmarkReporter`, this method will
|
|
240
|
+
* be used by to generate VegaLite configuration. Users can customize
|
|
241
|
+
* the builder by supplying another builder to constructor's option or
|
|
242
|
+
* override this method on a sub-class.
|
|
243
|
+
*
|
|
244
|
+
* @param allData all test records.
|
|
245
|
+
* @param comparison logic of test comparisons:
|
|
246
|
+
* 'snapshot' or 'project'; default 'snapshot'.
|
|
247
|
+
* @return VegaLite configuration
|
|
248
|
+
*/
|
|
249
|
+
protected defaultVegaLiteConfigFactory(allData: Array<IReportRecord>, comparison?: 'snapshot' | 'project'): Record<string, any>;
|
|
179
250
|
protected getMetadata(browser?: string): Promise<any>;
|
|
180
251
|
protected buildReport(): Promise<IReport>;
|
|
181
252
|
protected config: FullConfig;
|
|
@@ -184,5 +255,7 @@ declare class BenchmarkReporter implements Reporter {
|
|
|
184
255
|
private _outputFile;
|
|
185
256
|
private _reference;
|
|
186
257
|
private _report;
|
|
258
|
+
private _buildVegaLiteGraph;
|
|
259
|
+
private _buildTextReport;
|
|
187
260
|
}
|
|
188
261
|
export default BenchmarkReporter;
|
package/lib/benchmarkReporter.js
CHANGED
|
@@ -35,6 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.benchmark = void 0;
|
|
37
37
|
const test_1 = require("@playwright/test");
|
|
38
|
+
const base_1 = require("@stdlib/stats/base");
|
|
38
39
|
const fs_1 = __importDefault(require("fs"));
|
|
39
40
|
const path_1 = __importDefault(require("path"));
|
|
40
41
|
const systeminformation_1 = __importDefault(require("systeminformation"));
|
|
@@ -91,6 +92,92 @@ var benchmark;
|
|
|
91
92
|
};
|
|
92
93
|
}
|
|
93
94
|
benchmark.addAttachment = addAttachment;
|
|
95
|
+
/**
|
|
96
|
+
* Quantifies the performance changes between two measures systems. Assumes we gathered
|
|
97
|
+
* n independent measurement from each, and calculated their means and variance.
|
|
98
|
+
*
|
|
99
|
+
* Based on the work by Tomas Kalibera and Richard Jones. See their paper
|
|
100
|
+
* "Quantifying Performance Changes with Effect Size Confidence Intervals", section 6.2,
|
|
101
|
+
* formula "Quantifying Performance Change".
|
|
102
|
+
*
|
|
103
|
+
* However, it simplifies it to only assume one level of benchmarks, not multiple levels.
|
|
104
|
+
* If you do have multiple levels, simply use the mean of the lower levels as your data,
|
|
105
|
+
* like they do in the paper.
|
|
106
|
+
*
|
|
107
|
+
* @param oldDistribution The old distribution description
|
|
108
|
+
* @param newDistribution The new distribution description
|
|
109
|
+
* @param n The number of samples from each system (must be equal)
|
|
110
|
+
* @param confidenceInterval The confidence interval for the results.
|
|
111
|
+
* The default is a 95% confidence interval (95% of the time the true mean will be
|
|
112
|
+
* between the resulting mean +- the resulting CI)
|
|
113
|
+
*/
|
|
114
|
+
function performanceChange(oldDistribution, newDistribution, n, confidenceInterval = 0.95) {
|
|
115
|
+
const { mean: yO, variance: sO } = oldDistribution;
|
|
116
|
+
const { mean: yN, variance: sN } = newDistribution;
|
|
117
|
+
const dof = n - 1;
|
|
118
|
+
const t = base_1.dists.t.quantile(1 - (1 - confidenceInterval) / 2, dof);
|
|
119
|
+
const oldFactor = sq(yO) - (sq(t) * sO) / n;
|
|
120
|
+
const newFactor = sq(yN) - (sq(t) * sN) / n;
|
|
121
|
+
const meanNum = yO * yN;
|
|
122
|
+
const ciNum = Math.sqrt(sq(yO * yN) - newFactor * oldFactor);
|
|
123
|
+
return {
|
|
124
|
+
mean: meanNum / oldFactor,
|
|
125
|
+
confidenceInterval: ciNum / oldFactor
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Compute the performance change based on a number of old and new measurements.
|
|
130
|
+
*
|
|
131
|
+
* Based on the work by Tomas Kalibera and Richard Jones. See their paper
|
|
132
|
+
* "Quantifying Performance Changes with Effect Size Confidence Intervals", section 6.2,
|
|
133
|
+
* formula "Quantifying Performance Change".
|
|
134
|
+
*
|
|
135
|
+
* However, it simplifies it to only assume one level of benchmarks, not multiple levels.
|
|
136
|
+
* If you do have multiple levels, simply use the mean of the lower levels as your data,
|
|
137
|
+
* like they do in the paper.
|
|
138
|
+
*
|
|
139
|
+
* Note: The measurements must have the same length. As fallback, you could use the minimum
|
|
140
|
+
* size of the two measurement sets.
|
|
141
|
+
*
|
|
142
|
+
* @param oldMeasures The old measurements
|
|
143
|
+
* @param newMeasures The new measurements
|
|
144
|
+
* @param confidenceInterval The confidence interval for the results.
|
|
145
|
+
* @param minLength Fall back to the minimum length of the two arrays
|
|
146
|
+
*/
|
|
147
|
+
function distributionChange(oldMeasures, newMeasures, confidenceInterval = 0.95, minLength = false) {
|
|
148
|
+
const n = oldMeasures.length;
|
|
149
|
+
if (!minLength && n !== newMeasures.length) {
|
|
150
|
+
throw new Error('Data have different length');
|
|
151
|
+
}
|
|
152
|
+
return performanceChange({ mean: mean(...oldMeasures), variance: variance(...oldMeasures) }, { mean: mean(...newMeasures), variance: variance(...newMeasures) }, minLength ? Math.min(n, newMeasures.length) : n, confidenceInterval);
|
|
153
|
+
}
|
|
154
|
+
benchmark.distributionChange = distributionChange;
|
|
155
|
+
/**
|
|
156
|
+
* Format a performance changes like `between 20.1% slower and 30.3% faster`.
|
|
157
|
+
*
|
|
158
|
+
* @param distribution The distribution change
|
|
159
|
+
* @returns The formatted distribution change
|
|
160
|
+
*/
|
|
161
|
+
function formatChange(distribution) {
|
|
162
|
+
const { mean, confidenceInterval } = distribution;
|
|
163
|
+
return `between ${formatPercent(mean + confidenceInterval)} and ${formatPercent(mean - confidenceInterval)}`;
|
|
164
|
+
}
|
|
165
|
+
benchmark.formatChange = formatChange;
|
|
166
|
+
function formatPercent(percent) {
|
|
167
|
+
if (percent < 1) {
|
|
168
|
+
return `${((1 - percent) * 100).toFixed(1)}% faster`;
|
|
169
|
+
}
|
|
170
|
+
return `${((percent - 1) * 100).toFixed(1)}% slower`;
|
|
171
|
+
}
|
|
172
|
+
function sq(x) {
|
|
173
|
+
return Math.pow(x, 2);
|
|
174
|
+
}
|
|
175
|
+
function mean(...x) {
|
|
176
|
+
return base_1.meanpw(x.length, x, 1);
|
|
177
|
+
}
|
|
178
|
+
function variance(...x) {
|
|
179
|
+
return base_1.variancepn(x.length, 1, x, 1);
|
|
180
|
+
}
|
|
94
181
|
})(benchmark = exports.benchmark || (exports.benchmark = {}));
|
|
95
182
|
/**
|
|
96
183
|
* Custom Playwright reporter for benchmark tests
|
|
@@ -98,16 +185,21 @@ var benchmark;
|
|
|
98
185
|
class BenchmarkReporter {
|
|
99
186
|
/**
|
|
100
187
|
* @param options
|
|
101
|
-
* outputFile: Name of the output file (default to env BENCHMARK_OUTPUTFILE)
|
|
102
|
-
* comparison: Logic of test comparisons: 'snapshot' or 'project'
|
|
103
|
-
*
|
|
104
|
-
*
|
|
188
|
+
* - outputFile: Name of the output file (default to env BENCHMARK_OUTPUTFILE)
|
|
189
|
+
* - comparison: Logic of test comparisons: 'snapshot' or 'project'
|
|
190
|
+
* * 'snapshot': (default) This will compare the 'actual' result with the 'expected' one
|
|
191
|
+
* * 'project': This will compare the different project
|
|
192
|
+
* - vegaLiteConfigFactory: Function to create VegaLite configuration from test records; see https://vega.github.io/vega-lite/docs/.
|
|
193
|
+
* - textReportFactory: Function to create text report from test records, this function
|
|
194
|
+
* should return the content and extension of report file.
|
|
105
195
|
*/
|
|
106
196
|
constructor(options = {}) {
|
|
107
|
-
var _a, _b, _c, _d;
|
|
197
|
+
var _a, _b, _c, _d, _e, _f;
|
|
108
198
|
this._outputFile = (_b = (_a = options.outputFile) !== null && _a !== void 0 ? _a : process.env['BENCHMARK_OUTPUTFILE']) !== null && _b !== void 0 ? _b : benchmark.DEFAULT_OUTPUT;
|
|
109
199
|
this._comparison = (_c = options.comparison) !== null && _c !== void 0 ? _c : 'snapshot';
|
|
110
200
|
this._reference = (_d = process.env['BENCHMARK_REFERENCE']) !== null && _d !== void 0 ? _d : benchmark.DEFAULT_REFERENCE;
|
|
201
|
+
this._buildVegaLiteGraph = (_e = options.vegaLiteConfigFactory) !== null && _e !== void 0 ? _e : this.defaultVegaLiteConfigFactory;
|
|
202
|
+
this._buildTextReport = (_f = options.textReportFactory) !== null && _f !== void 0 ? _f : this.defaultTextReportFactory;
|
|
111
203
|
}
|
|
112
204
|
/**
|
|
113
205
|
* Called once before running tests. All tests have been already discovered and put into a hierarchy of [Suite]s.
|
|
@@ -183,63 +275,14 @@ class BenchmarkReporter {
|
|
|
183
275
|
}
|
|
184
276
|
allData.push(...expectations.values);
|
|
185
277
|
}
|
|
186
|
-
// Create
|
|
278
|
+
// - Create report
|
|
279
|
+
const [reportContentString, reportExtension] = await this._buildTextReport(allData);
|
|
280
|
+
const reportFile = path_1.default.resolve(outputDir, `${baseName}.${reportExtension}`);
|
|
281
|
+
fs_1.default.writeFileSync(reportFile, reportContentString, 'utf-8');
|
|
282
|
+
// Generate graph file and image
|
|
187
283
|
const graphConfigFile = path_1.default.resolve(outputDir, `${baseName}.vl.json`);
|
|
188
|
-
const config =
|
|
189
|
-
config.data.values = allData;
|
|
284
|
+
const config = this._buildVegaLiteGraph(allData, this._comparison);
|
|
190
285
|
fs_1.default.writeFileSync(graphConfigFile, JSON.stringify(config), 'utf-8');
|
|
191
|
-
// Compute statistics
|
|
192
|
-
// - Groupby (test, browser, reference, file)
|
|
193
|
-
const groups = new Map();
|
|
194
|
-
allData.forEach(d => {
|
|
195
|
-
var _a;
|
|
196
|
-
if (!groups.has(d.test)) {
|
|
197
|
-
groups.set(d.test, new Map());
|
|
198
|
-
}
|
|
199
|
-
const testGroup = groups.get(d.test);
|
|
200
|
-
if (!testGroup.has(d.browser)) {
|
|
201
|
-
testGroup.set(d.browser, new Map());
|
|
202
|
-
}
|
|
203
|
-
const browserGroup = testGroup.get(d.browser);
|
|
204
|
-
if (!browserGroup.has(d.reference)) {
|
|
205
|
-
browserGroup.set(d.reference, new Map());
|
|
206
|
-
}
|
|
207
|
-
const fileGroup = browserGroup.get(d.reference);
|
|
208
|
-
if (!fileGroup.has(d.file)) {
|
|
209
|
-
fileGroup.set(d.file, new Array());
|
|
210
|
-
}
|
|
211
|
-
(_a = fileGroup.get(d.file)) === null || _a === void 0 ? void 0 : _a.push(d.time);
|
|
212
|
-
});
|
|
213
|
-
// - Create report
|
|
214
|
-
const reportContent = new Array('## Benchmark report', '', 'The execution time (in milliseconds) are grouped by test file, test type and browser.', 'For each case, the following values are computed: _min_ <- [_1st quartile_ - _median_ - _3rd quartile_] -> _max_.', '', '<details><summary>Results table</summary>', '');
|
|
215
|
-
let header = '| Test file |';
|
|
216
|
-
let nFiles = 0;
|
|
217
|
-
for (const [file] of groups.values().next().value.values().next().value.values().next()
|
|
218
|
-
.value) {
|
|
219
|
-
header += ` ${file} |`;
|
|
220
|
-
nFiles++;
|
|
221
|
-
}
|
|
222
|
-
reportContent.push(header);
|
|
223
|
-
reportContent.push(new Array(nFiles + 2).fill('|').join(' --- '));
|
|
224
|
-
const filler = new Array(nFiles).fill('|').join(' ');
|
|
225
|
-
for (const [test, testGroup] of groups) {
|
|
226
|
-
reportContent.push(`| **${test}** | ` + filler);
|
|
227
|
-
for (const [browser, browserGroup] of testGroup) {
|
|
228
|
-
reportContent.push(`| \`${browser}\` | ` + filler);
|
|
229
|
-
for (const [reference, fileGroup] of browserGroup) {
|
|
230
|
-
let line = `| ${reference} |`;
|
|
231
|
-
for (const [_, dataGroup] of fileGroup) {
|
|
232
|
-
const [q1, median, q3] = vs.quartiles(dataGroup);
|
|
233
|
-
line += ` ${Math.min(...dataGroup).toFixed()} <- [${q1.toFixed()} - ${median.toFixed()} - ${q3.toFixed()}] -> ${Math.max(...dataGroup).toFixed()} |`;
|
|
234
|
-
}
|
|
235
|
-
reportContent.push(line);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
reportContent.push('', '</details>', '');
|
|
240
|
-
const reportFile = path_1.default.resolve(outputDir, `${baseName}.md`);
|
|
241
|
-
fs_1.default.writeFileSync(reportFile, reportContent.join('\n'), 'utf-8');
|
|
242
|
-
// Generate image
|
|
243
286
|
const vegaSpec = vl.compile(config).spec;
|
|
244
287
|
const view = new vega.View(vega.parse(vegaSpec), {
|
|
245
288
|
renderer: 'canvas'
|
|
@@ -263,6 +306,130 @@ class BenchmarkReporter {
|
|
|
263
306
|
console.log(reportString);
|
|
264
307
|
}
|
|
265
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Default text report factory of `BenchmarkReporter`, this method will
|
|
311
|
+
* be used by to generate markdown report. Users can customize the builder
|
|
312
|
+
* by supplying another builder to constructor's option or override this
|
|
313
|
+
* method on a sub-class.
|
|
314
|
+
*
|
|
315
|
+
* @param allData all test records.
|
|
316
|
+
* @param comparison logic of test comparisons:
|
|
317
|
+
* 'snapshot' or 'project'; default 'snapshot'.
|
|
318
|
+
* @return A list of two strings, the first one
|
|
319
|
+
* is the content of report, the second one is the extension of report file.
|
|
320
|
+
*/
|
|
321
|
+
async defaultTextReportFactory(allData, comparison = 'snapshot') {
|
|
322
|
+
// Compute statistics
|
|
323
|
+
// - Groupby (test, browser, reference | project, file)
|
|
324
|
+
const groups = new Map();
|
|
325
|
+
allData.forEach(d => {
|
|
326
|
+
var _a;
|
|
327
|
+
if (!groups.has(d.test)) {
|
|
328
|
+
groups.set(d.test, new Map());
|
|
329
|
+
}
|
|
330
|
+
const testGroup = groups.get(d.test);
|
|
331
|
+
if (!testGroup.has(d.browser)) {
|
|
332
|
+
testGroup.set(d.browser, new Map());
|
|
333
|
+
}
|
|
334
|
+
const browserGroup = testGroup.get(d.browser);
|
|
335
|
+
const lastLevel = comparison === 'snapshot' ? d.reference : d.project;
|
|
336
|
+
if (!browserGroup.has(lastLevel)) {
|
|
337
|
+
browserGroup.set(lastLevel, new Map());
|
|
338
|
+
}
|
|
339
|
+
const fileGroup = browserGroup.get(lastLevel);
|
|
340
|
+
if (!fileGroup.has(d.file)) {
|
|
341
|
+
fileGroup.set(d.file, new Array());
|
|
342
|
+
}
|
|
343
|
+
(_a = fileGroup.get(d.file)) === null || _a === void 0 ? void 0 : _a.push(d.time);
|
|
344
|
+
});
|
|
345
|
+
// If the reference | project lists has two items, the intervals will be compared.
|
|
346
|
+
const compare = groups.values().next().value.values().next().value.size === 2;
|
|
347
|
+
// - Create report
|
|
348
|
+
const reportContent = new Array('## Benchmark report', '', 'The execution time (in milliseconds) are grouped by test file, test type and browser.', 'For each case, the following values are computed: _min_ <- [_1st quartile_ - _median_ - _3rd quartile_] -> _max_.');
|
|
349
|
+
if (compare) {
|
|
350
|
+
reportContent.push('', 'The mean relative comparison is computed with 95% confidence.');
|
|
351
|
+
}
|
|
352
|
+
reportContent.push('', '<details><summary>Results table</summary>', '');
|
|
353
|
+
let header = '| Test file |';
|
|
354
|
+
let nFiles = 0;
|
|
355
|
+
for (const [file] of groups.values().next().value.values().next().value.values().next()
|
|
356
|
+
.value) {
|
|
357
|
+
header += ` ${file} |`;
|
|
358
|
+
nFiles++;
|
|
359
|
+
}
|
|
360
|
+
reportContent.push(header);
|
|
361
|
+
reportContent.push(new Array(nFiles + 2).fill('|').join(' --- '));
|
|
362
|
+
const filler = new Array(nFiles).fill('|').join(' ');
|
|
363
|
+
let changeReference = benchmark.DEFAULT_EXPECTED_REFERENCE;
|
|
364
|
+
for (const [test, testGroup] of groups) {
|
|
365
|
+
reportContent.push(`| **${test}** | ` + filler);
|
|
366
|
+
for (const [browser, browserGroup] of testGroup) {
|
|
367
|
+
reportContent.push(`| \`${browser}\` | ` + filler);
|
|
368
|
+
const actual = new Map();
|
|
369
|
+
const expected = new Map();
|
|
370
|
+
for (const [reference, fileGroup] of browserGroup) {
|
|
371
|
+
let line = `| ${reference} |`;
|
|
372
|
+
for (const [filename, dataGroup] of fileGroup) {
|
|
373
|
+
const [q1, median, q3] = vs.quartiles(dataGroup);
|
|
374
|
+
if (compare) {
|
|
375
|
+
if (reference === benchmark.DEFAULT_REFERENCE ||
|
|
376
|
+
!actual.has(filename)) {
|
|
377
|
+
actual.set(filename, dataGroup);
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
changeReference = reference;
|
|
381
|
+
expected.set(filename, dataGroup);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
line += ` ${Math.min(...dataGroup).toFixed()} <- [${q1.toFixed()} - ${median.toFixed()} - ${q3.toFixed()}] -> ${Math.max(...dataGroup).toFixed()} |`;
|
|
385
|
+
}
|
|
386
|
+
reportContent.push(line);
|
|
387
|
+
}
|
|
388
|
+
if (compare) {
|
|
389
|
+
let line = `| Mean relative change |`;
|
|
390
|
+
for (const [filename, oldDistribution] of expected) {
|
|
391
|
+
const newDistribution = actual.get(filename);
|
|
392
|
+
try {
|
|
393
|
+
const delta = benchmark.distributionChange(oldDistribution, newDistribution, 0.95, true);
|
|
394
|
+
let unmatchWarning = '';
|
|
395
|
+
if (oldDistribution.length != newDistribution.length) {
|
|
396
|
+
unmatchWarning = `[:warning:](# "Reference size ${oldDistribution.length} != Actual size ${newDistribution.length}") `;
|
|
397
|
+
}
|
|
398
|
+
line += ` ${unmatchWarning}${((delta.mean - 1) * 100).toFixed(1)}% ± ${(delta.confidenceInterval * 100).toFixed(1)}% |`;
|
|
399
|
+
}
|
|
400
|
+
catch (error) {
|
|
401
|
+
console.error(`Reference has length ${oldDistribution.length} and new has ${newDistribution.length}.`);
|
|
402
|
+
line += ` ${error} |`;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
reportContent.push(line);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
if (compare) {
|
|
410
|
+
reportContent.push('', `Changes are computed with _${changeReference}_ as reference.`);
|
|
411
|
+
}
|
|
412
|
+
reportContent.push('', '</details>', '');
|
|
413
|
+
const reportExtension = 'md';
|
|
414
|
+
const reportContentString = reportContent.join('\n');
|
|
415
|
+
return [reportContentString, reportExtension];
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Default Vega Lite config factory of `BenchmarkReporter`, this method will
|
|
419
|
+
* be used by to generate VegaLite configuration. Users can customize
|
|
420
|
+
* the builder by supplying another builder to constructor's option or
|
|
421
|
+
* override this method on a sub-class.
|
|
422
|
+
*
|
|
423
|
+
* @param allData all test records.
|
|
424
|
+
* @param comparison logic of test comparisons:
|
|
425
|
+
* 'snapshot' or 'project'; default 'snapshot'.
|
|
426
|
+
* @return VegaLite configuration
|
|
427
|
+
*/
|
|
428
|
+
defaultVegaLiteConfigFactory(allData, comparison = 'snapshot') {
|
|
429
|
+
const config = benchmarkVLTpl_1.default([...new Set(allData.map(d => d.test))], comparison == 'snapshot' ? 'reference' : 'project', [...new Set(allData.map(d => d.file))]);
|
|
430
|
+
config.data.values = allData;
|
|
431
|
+
return config;
|
|
432
|
+
}
|
|
266
433
|
async getMetadata(browser) {
|
|
267
434
|
const cpu = await systeminformation_1.default.cpu();
|
|
268
435
|
// Keep only non-variable value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmarkReporter.js","sourceRoot":"","sources":["../src/benchmarkReporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"benchmarkReporter.js","sourceRoot":"","sources":["../src/benchmarkReporter.ts"],"names":[],"mappings":"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"}
|
package/lib/benchmarkVLTpl.js
CHANGED
|
@@ -26,13 +26,11 @@ function configPerFile(tests, comparison) {
|
|
|
26
26
|
transform: [{ filter: `datum.test === '${t}'` }],
|
|
27
27
|
facet: {
|
|
28
28
|
column: { field: 'browser', type: 'nominal' }
|
|
29
|
-
// row: { field: 'test', type: 'nominal' }
|
|
30
29
|
},
|
|
31
30
|
spec: {
|
|
32
31
|
mark: { type: 'boxplot', extent: 'min-max' },
|
|
33
32
|
encoding: {
|
|
34
33
|
y: { field: comparison, type: 'nominal' },
|
|
35
|
-
// color: { field: 'file', type: 'nominal', legend: null },
|
|
36
34
|
x: {
|
|
37
35
|
field: 'time',
|
|
38
36
|
title: 'Time (ms)',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmarkVLTpl.js","sourceRoot":"","sources":["../src/benchmarkVLTpl.ts"],"names":[],"mappings":";AAAA,0BAA0B;;AAE1B;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,iDAAiD;IAC1D,WAAW,EAAE,gCAAgC;IAC7C,KAAK,EAAE,4BAA4B;IACnC,IAAI,EAAE,EAAyB;IAC/B,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,aAAa,CACpB,KAAe,EACf,UAAkB;IAElB,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrB,OAAO;gBACL,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,CAAC;gBAChD,KAAK,EAAE;oBACL,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"benchmarkVLTpl.js","sourceRoot":"","sources":["../src/benchmarkVLTpl.ts"],"names":[],"mappings":";AAAA,0BAA0B;;AAE1B;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,iDAAiD;IAC1D,WAAW,EAAE,gCAAgC;IAC7C,KAAK,EAAE,4BAA4B;IACnC,IAAI,EAAE,EAAyB;IAC/B,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,aAAa,CACpB,KAAe,EACf,UAAkB;IAElB,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrB,OAAO;gBACL,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,CAAC;gBAChD,KAAK,EAAE;oBACL,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;oBAC5C,QAAQ,EAAE;wBACR,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;wBACzC,CAAC,EAAE;4BACD,KAAK,EAAE,MAAM;4BACb,KAAK,EAAE,WAAW;4BAClB,IAAI,EAAE,cAAc;4BACpB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;yBACvB;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAC3B,KAAe,EACf,UAAkB,EAClB,SAAoB;IAEpB,MAAM,KAAK,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,uCACK,cAAc,GACd,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,EACnC;KACH;SAAM;QACL,uCACK,cAAc,KACjB,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACrB,uBACE,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAC7C,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,EACnC;YACJ,CAAC,CAAC,IACF;KACH;AACH,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
|