@jupyterlab/galata 4.3.0-alpha.9 → 4.3.0-beta.0
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 +54 -6
- package/lib/benchmarkReporter.d.ts +78 -5
- package/lib/benchmarkReporter.js +231 -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 +5 -384
- package/lib/fixtures.js.map +1 -1
- package/lib/galata.d.ts +49 -1
- package/lib/galata.js +398 -4
- package/lib/galata.js.map +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -1
- package/lib/lib-inpage/inpage.js +16 -15
- package/lib/lib-inpage/inpage.js.map +1 -1
- package/lib/playwright-config.js +1 -4
- package/lib/playwright-config.js.map +1 -1
- package/package.json +22 -17
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ jlpm playwright install
|
|
|
26
26
|
|
|
27
27
|
Create a Playwright configuration file `playwright.config.js` containing:
|
|
28
28
|
|
|
29
|
-
```
|
|
29
|
+
```js
|
|
30
30
|
module.exports = require('@jupyterlab/galata/lib/playwright-config');
|
|
31
31
|
```
|
|
32
32
|
|
|
@@ -35,8 +35,7 @@ module.exports = require('@jupyterlab/galata/lib/playwright-config');
|
|
|
35
35
|
Create `ui-tests/foo.spec.ts` to define your test.
|
|
36
36
|
|
|
37
37
|
```typescript
|
|
38
|
-
import { test } from '@jupyterlab/galata';
|
|
39
|
-
import { expect } from '@playwright/test';
|
|
38
|
+
import { expect, test } from '@jupyterlab/galata';
|
|
40
39
|
|
|
41
40
|
test.describe('Notebook Tests', () => {
|
|
42
41
|
test('Create New Notebook', async ({ page, tmpPath }) => {
|
|
@@ -66,8 +65,8 @@ Create `jupyter_server_test_config.py` with the following content.
|
|
|
66
65
|
from tempfile import mkdtemp
|
|
67
66
|
|
|
68
67
|
c.ServerApp.port = 8888
|
|
68
|
+
c.ServerApp.port_retries = 0
|
|
69
69
|
c.ServerApp.open_browser = False
|
|
70
|
-
c.LabApp.dev_mode = True
|
|
71
70
|
|
|
72
71
|
c.ServerApp.root_dir = mkdtemp(prefix='galata-test-')
|
|
73
72
|
c.ServerApp.token = ""
|
|
@@ -137,6 +136,13 @@ PWDEBUG=1 jlpm playwright test
|
|
|
137
136
|
|
|
138
137
|
Here are the new test fixture introduced by Galata on top of [Playwright fixtures](https://playwright.dev/docs/api/class-fixtures).
|
|
139
138
|
|
|
139
|
+
### baseURL
|
|
140
|
+
|
|
141
|
+
- type: < string >
|
|
142
|
+
|
|
143
|
+
Application base URL without `/lab`. It defaults to environment variable `TARGET_URL` or `http://localhost:8888` if nothing
|
|
144
|
+
is defined.
|
|
145
|
+
|
|
140
146
|
### appPath
|
|
141
147
|
|
|
142
148
|
- type: < string >
|
|
@@ -379,7 +385,7 @@ test.describe.serial('Table of Contents', () => {
|
|
|
379
385
|
|
|
380
386
|
## Benchmark
|
|
381
387
|
|
|
382
|
-
Benchmark of JupyterLab is done
|
|
388
|
+
Benchmark of JupyterLab is done using Playwright. The actions measured are:
|
|
383
389
|
|
|
384
390
|
- Opening a file
|
|
385
391
|
- Switching from the file to a simple text file
|
|
@@ -388,6 +394,13 @@ Benchmark of JupyterLab is done automatically using Playwright. The actions meas
|
|
|
388
394
|
|
|
389
395
|
Two files are tested: a notebook with many code cells and another with many markdown cells.
|
|
390
396
|
|
|
397
|
+
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
|
|
398
|
+
the same CI job to ensure using the same hardware.
|
|
399
|
+
The benchmark job is triggered on:
|
|
400
|
+
|
|
401
|
+
- Approved PR review
|
|
402
|
+
- PR review that contains the sentence `please run benchmark`
|
|
403
|
+
|
|
391
404
|
The tests are located in the subfolder [test/benchmark](./test/benchmark). And they can be
|
|
392
405
|
executed with the following command:
|
|
393
406
|
|
|
@@ -402,7 +415,7 @@ A special report will be generated in the folder `benchmark-results` that will c
|
|
|
402
415
|
- `lab-benchmark.png`: A comparison of execution time distribution
|
|
403
416
|
- `lab-benchmark.vl.json`: The [_Vega-Lite_](https://vega.github.io/vega-lite) description used to produce the PNG file.
|
|
404
417
|
|
|
405
|
-
The reference, tagged _expected_, is stored in
|
|
418
|
+
The reference, tagged _expected_, is stored in `lab-benchmark-expected.json`. It can be
|
|
406
419
|
updated using the `-u` option of Playwright; i.e. `jlpm run test:benchmark -u`.
|
|
407
420
|
|
|
408
421
|
### Benchmark parameters
|
|
@@ -442,6 +455,41 @@ By default, both projects will be executed when running `jlpm run test`. But you
|
|
|
442
455
|
|
|
443
456
|
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
457
|
|
|
458
|
+
### Custom benchmark report
|
|
459
|
+
|
|
460
|
+
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:
|
|
461
|
+
|
|
462
|
+
- 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.
|
|
463
|
+
|
|
464
|
+
```javascript
|
|
465
|
+
// An example of `playwright.config.js` with customized builder
|
|
466
|
+
reporter: [
|
|
467
|
+
...,
|
|
468
|
+
[
|
|
469
|
+
'@jupyterlab/galata/lib/benchmarkReporter',
|
|
470
|
+
{ outputFile: 'lab-benchmark.json',
|
|
471
|
+
vegaLiteConfigFactory: (
|
|
472
|
+
allData: Array<IReportRecord>, // All test records
|
|
473
|
+
comparison?: 'snapshot' | 'project'// Logic of test comparisons:'snapshot' or 'project' - default 'snapshot'.
|
|
474
|
+
) => {
|
|
475
|
+
// Return a Vega-Lite graph configuration object
|
|
476
|
+
return {};
|
|
477
|
+
}
|
|
478
|
+
textReportFactory: (
|
|
479
|
+
allData: Array<IReportRecord>, // All test records
|
|
480
|
+
comparison?: 'snapshot' | 'project'// Logic of test comparisons:'snapshot' or 'project' - default 'snapshot'.
|
|
481
|
+
) => {
|
|
482
|
+
// Return a promise of with the tuple [report content, file extension]
|
|
483
|
+
return Promise.resolve(['My report content', 'md']);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
],
|
|
487
|
+
...
|
|
488
|
+
]
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
- 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.
|
|
492
|
+
|
|
445
493
|
## Reference Image Captures
|
|
446
494
|
|
|
447
495
|
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,134 @@ 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
|
+
var _a;
|
|
323
|
+
// Compute statistics
|
|
324
|
+
// - Groupby (test, browser, reference | project, file)
|
|
325
|
+
const reportExtension = 'md';
|
|
326
|
+
const groups = new Map();
|
|
327
|
+
allData.forEach(d => {
|
|
328
|
+
var _a;
|
|
329
|
+
if (!groups.has(d.test)) {
|
|
330
|
+
groups.set(d.test, new Map());
|
|
331
|
+
}
|
|
332
|
+
const testGroup = groups.get(d.test);
|
|
333
|
+
if (!testGroup.has(d.browser)) {
|
|
334
|
+
testGroup.set(d.browser, new Map());
|
|
335
|
+
}
|
|
336
|
+
const browserGroup = testGroup.get(d.browser);
|
|
337
|
+
const lastLevel = comparison === 'snapshot' ? d.reference : d.project;
|
|
338
|
+
if (!browserGroup.has(lastLevel)) {
|
|
339
|
+
browserGroup.set(lastLevel, new Map());
|
|
340
|
+
}
|
|
341
|
+
const fileGroup = browserGroup.get(lastLevel);
|
|
342
|
+
if (!fileGroup.has(d.file)) {
|
|
343
|
+
fileGroup.set(d.file, new Array());
|
|
344
|
+
}
|
|
345
|
+
(_a = fileGroup.get(d.file)) === null || _a === void 0 ? void 0 : _a.push(d.time);
|
|
346
|
+
});
|
|
347
|
+
// If the reference | project lists has two items, the intervals will be compared.
|
|
348
|
+
if (!groups.values().next().value) {
|
|
349
|
+
return ['## Benchmark report\n\nNot enough data', reportExtension];
|
|
350
|
+
}
|
|
351
|
+
const compare = ((_a = groups.values().next().value) === null || _a === void 0 ? void 0 : _a.values().next().value).size === 2;
|
|
352
|
+
// - Create report
|
|
353
|
+
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_.');
|
|
354
|
+
if (compare) {
|
|
355
|
+
reportContent.push('', 'The mean relative comparison is computed with 95% confidence.');
|
|
356
|
+
}
|
|
357
|
+
reportContent.push('', '<details><summary>Results table</summary>', '');
|
|
358
|
+
let header = '| Test file |';
|
|
359
|
+
let nFiles = 0;
|
|
360
|
+
for (const [file] of groups.values().next().value.values().next().value.values().next()
|
|
361
|
+
.value) {
|
|
362
|
+
header += ` ${file} |`;
|
|
363
|
+
nFiles++;
|
|
364
|
+
}
|
|
365
|
+
reportContent.push(header);
|
|
366
|
+
reportContent.push(new Array(nFiles + 2).fill('|').join(' --- '));
|
|
367
|
+
const filler = new Array(nFiles).fill('|').join(' ');
|
|
368
|
+
let changeReference = benchmark.DEFAULT_EXPECTED_REFERENCE;
|
|
369
|
+
for (const [test, testGroup] of groups) {
|
|
370
|
+
reportContent.push(`| **${test}** | ` + filler);
|
|
371
|
+
for (const [browser, browserGroup] of testGroup) {
|
|
372
|
+
reportContent.push(`| \`${browser}\` | ` + filler);
|
|
373
|
+
const actual = new Map();
|
|
374
|
+
const expected = new Map();
|
|
375
|
+
for (const [reference, fileGroup] of browserGroup) {
|
|
376
|
+
let line = `| ${reference} |`;
|
|
377
|
+
for (const [filename, dataGroup] of fileGroup) {
|
|
378
|
+
const [q1, median, q3] = vs.quartiles(dataGroup);
|
|
379
|
+
if (compare) {
|
|
380
|
+
if (reference === benchmark.DEFAULT_REFERENCE ||
|
|
381
|
+
!actual.has(filename)) {
|
|
382
|
+
actual.set(filename, dataGroup);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
changeReference = reference;
|
|
386
|
+
expected.set(filename, dataGroup);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
line += ` ${Math.min(...dataGroup).toFixed()} <- [${q1.toFixed()} - ${median.toFixed()} - ${q3.toFixed()}] -> ${Math.max(...dataGroup).toFixed()} |`;
|
|
390
|
+
}
|
|
391
|
+
reportContent.push(line);
|
|
392
|
+
}
|
|
393
|
+
if (compare) {
|
|
394
|
+
let line = `| Mean relative change |`;
|
|
395
|
+
for (const [filename, oldDistribution] of expected) {
|
|
396
|
+
const newDistribution = actual.get(filename);
|
|
397
|
+
try {
|
|
398
|
+
const delta = benchmark.distributionChange(oldDistribution, newDistribution, 0.95, true);
|
|
399
|
+
let unmatchWarning = '';
|
|
400
|
+
if (oldDistribution.length != newDistribution.length) {
|
|
401
|
+
unmatchWarning = `[:warning:](# "Reference size ${oldDistribution.length} != Actual size ${newDistribution.length}") `;
|
|
402
|
+
}
|
|
403
|
+
line += ` ${unmatchWarning}${((delta.mean - 1) * 100).toFixed(1)}% ± ${(delta.confidenceInterval * 100).toFixed(1)}% |`;
|
|
404
|
+
}
|
|
405
|
+
catch (error) {
|
|
406
|
+
console.error(`Reference has length ${oldDistribution.length} and new has ${newDistribution.length}.`);
|
|
407
|
+
line += ` ${error} |`;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
reportContent.push(line);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
if (compare) {
|
|
415
|
+
reportContent.push('', `Changes are computed with _${changeReference}_ as reference.`);
|
|
416
|
+
}
|
|
417
|
+
reportContent.push('', '</details>', '');
|
|
418
|
+
const reportContentString = reportContent.join('\n');
|
|
419
|
+
return [reportContentString, reportExtension];
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Default Vega Lite config factory of `BenchmarkReporter`, this method will
|
|
423
|
+
* be used by to generate VegaLite configuration. Users can customize
|
|
424
|
+
* the builder by supplying another builder to constructor's option or
|
|
425
|
+
* override this method on a sub-class.
|
|
426
|
+
*
|
|
427
|
+
* @param allData all test records.
|
|
428
|
+
* @param comparison logic of test comparisons:
|
|
429
|
+
* 'snapshot' or 'project'; default 'snapshot'.
|
|
430
|
+
* @return VegaLite configuration
|
|
431
|
+
*/
|
|
432
|
+
defaultVegaLiteConfigFactory(allData, comparison = 'snapshot') {
|
|
433
|
+
const config = benchmarkVLTpl_1.default([...new Set(allData.map(d => d.test))], comparison == 'snapshot' ? 'reference' : 'project', [...new Set(allData.map(d => d.file))]);
|
|
434
|
+
config.data.values = allData;
|
|
435
|
+
return config;
|
|
436
|
+
}
|
|
266
437
|
async getMetadata(browser) {
|
|
267
438
|
const cpu = await systeminformation_1.default.cpu();
|
|
268
439
|
// 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"}
|