Skip to content

Commit c43c1d8

Browse files
authored
test(perf): Add a test to measure overall rendering timings (#2518)
1 parent 87de6c2 commit c43c1d8

File tree

6 files changed

+208346
-1
lines changed

6 files changed

+208346
-1
lines changed

e2e/tests/performance.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
5+
* in compliance with, at your election, the Elastic License 2.0 or the Server
6+
* Side Public License, v 1.
7+
*/
8+
9+
import { test, expect } from '@playwright/test';
10+
11+
import { common, CommonPage } from '../page_objects';
12+
13+
test.describe('Performance', () => {
14+
for (let i = 0; i < 10; i++) {
15+
test(`Get performance metrics ${i}`, async ({ page }) => {
16+
const url = CommonPage.parseUrl('http://localhost:9001/?path=/story/test-cases--lens-stress-test');
17+
await page.goto(url);
18+
await common.waitForElement(page)(common.chartWaitSelector);
19+
await page.evaluate(() => window.performance.measure('overall', 'Perf:Started', 'Perf:Ended'));
20+
// eslint-disable-next-line no-console
21+
console.log('=============Performance Metrics===============');
22+
const getAllMarksJson = await page.evaluate(() => JSON.stringify(window.performance.getEntriesByType('mark')));
23+
const getAllMarks = await JSON.parse(getAllMarksJson);
24+
// eslint-disable-next-line no-console
25+
console.log('window.performance.getEntriesByType("mark")', getAllMarks);
26+
const getAllMeasuresJson = await page.evaluate(() =>
27+
JSON.stringify(window.performance.getEntriesByType('measure')),
28+
);
29+
const getAllMeasures = await JSON.parse(getAllMeasuresJson);
30+
// eslint-disable-next-line no-console
31+
console.log('window.performance.getEntriesByType("measure")', getAllMeasures);
32+
// using these two values as min/max to understand if we are increasing or decreasing the rendering speed.
33+
expect(getAllMeasures[0].duration).toBeGreaterThan(1500);
34+
expect(getAllMeasures[0].duration).toBeLessThan(1800);
35+
});
36+
}
37+
});

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
"test:e2e:generate:examples": "./e2e_server/scripts/extract_examples.sh",
5353
"test:e2e:generate:page": "./e2e_server/scripts/compile_vrt_page.sh",
5454
"test:e2e:server": "export NODE_OPTIONS=--openssl-legacy-provider; sh ./e2e_server/scripts/start.sh",
55-
"test:e2e:server:build": "export NODE_OPTIONS=--openssl-legacy-provider; cd e2e_server/server && webpack build",
55+
"test:e2e:server:build": "export NODE_OPTIONS=--openssl-legacy-provider; cd e2e_server/server && webpack build && cp ../../public/data.json ../.out/",
5656
"typecheck:base": "tsc -p ./tsconfig.base.json --noEmit",
5757
"typecheck:src": "lerna run --loglevel=silent --scope @elastic/charts typecheck --stream --no-prefix",
5858
"typecheck:docs": "lerna run --loglevel=silent --scope elastic-charts-docs typecheck --stream --no-prefix",

0 commit comments

Comments
 (0)