Skip to content

Commit

Permalink
DevTools: Relax Performance.metrics test requirements.
Browse files Browse the repository at this point in the history
Only check that essential metrics are there.

Change-Id: Ie078c476fa66328aa51e255b84ea18c07e24ef90
Reviewed-on: https://chromium-review.googlesource.com/1080045
Commit-Queue: Alexei Filippov <alph@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563433}
  • Loading branch information
a1ph authored and Commit Bot committed May 31, 2018
1 parent a76735c commit fc322eb
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 73 deletions.
Original file line number Diff line number Diff line change
@@ -1,66 +1,24 @@
Test that page performance metrics are retrieved.
Received metrics:
Received metrics:
Timestamp
AudioHandlers
Documents
Frames
JSEventListeners
LayoutObjects
MediaKeySessions
MediaKeys
Nodes
Resources
ScriptPromises
PausableObjects
V8PerContextDatas
WorkerGlobalScopes
UACSSResources
RTCPeerConnections
ResourceFetchers
AdSubframes
DetachedScriptStates
LayoutCount
RecalcStyleCount
LayoutDuration
RecalcStyleDuration
ScriptDuration
TaskDuration
JSHeapUsedSize
JSHeapTotalSize
FirstMeaningfulPaint
DomContentLoaded
NavigationStart
Received metrics:
Timestamp
AudioHandlers
Documents
Frames
JSEventListeners
LayoutObjects
MediaKeySessions
MediaKeys
Nodes
Resources
ScriptPromises
PausableObjects
V8PerContextDatas
WorkerGlobalScopes
UACSSResources
RTCPeerConnections
ResourceFetchers
AdSubframes
DetachedScriptStates
LayoutCount
RecalcStyleCount
LayoutDuration
RecalcStyleDuration
ScriptDuration
TaskDuration
JSHeapUsedSize
JSHeapTotalSize
FirstMeaningfulPaint
DomContentLoaded
NavigationStart
Received metrics:
Test that page performance metrics are retrieved and the list is stable.
DO NOT modify the list, it's exposed over public protocol.

Metrics:


Metrics:
Documents
Frames
JSEventListeners
JSHeapTotalSize
JSHeapUsedSize
LayoutCount
LayoutDuration
Nodes
RecalcStyleCount
RecalcStyleDuration
ScriptDuration
TaskDuration
Timestamp

Metrics:


Original file line number Diff line number Diff line change
@@ -1,26 +1,51 @@
(async function(testRunner) {
var {page, session, dp} = await testRunner.startBlank(
'Test that page performance metrics are retrieved.');
`Test that page performance metrics are retrieved and the list is stable.\n` +
`DO NOT modify the list, it's exposed over public protocol.`);

await dumpMetrics();
await dp.Performance.enable();
await dumpMetrics();
await dumpMetrics();
await dp.Performance.disable();
await dumpMetrics();

async function dumpMetrics() {
async function retrieveMetrics() {
const {result:{metrics}} = await dp.Performance.getMetrics();
testRunner.log('Received metrics:');
const map = new Map();
for (const metric of metrics)
testRunner.log(`\t${metric.name}`);
map.set(metric.name, metric.value);
return map;
}

async function dumpMetrics() {
const metrics = await retrieveMetrics();
const metricsToCheck = new Set([
'Timestamp',
'Documents',
'Frames',
'JSEventListeners',
'Nodes',
'LayoutCount',
'RecalcStyleCount',
'LayoutDuration',
'RecalcStyleDuration',
'ScriptDuration',
'TaskDuration',
'JSHeapUsedSize',
'JSHeapTotalSize',
]);

testRunner.log('\nMetrics:');
testRunner.log(Array.from(metrics.keys()).filter(n => metricsToCheck.has(n)).sort().join('\n'));

checkMetric('Documents');
checkMetric('Nodes');
checkMetric('JSHeapUsedSize');
checkMetric('JSHeapTotalSize');

function checkMetric(name) {
const metric = metrics.find(metric => metric.name === name);
if (metrics.length && !metric.value)
testRunner.log(`Error: Metric ${name} has a bad value ${metric.value}`);
if (metrics.size && !metrics.get(name))
testRunner.log(`Error: Metric ${name} has a bad value ${metrics.get(name)}`);
}
}

Expand Down

0 comments on commit fc322eb

Please sign in to comment.