blob: 517d6d26154c43640d641d94d9b072b17bd0eb25 [file] [log] [blame]
(async function(testRunner) {
let {page, session, dp} = await testRunner.startHTML(`
<script>
// Function returns true if the JavaScript time does advance during the
// computation.
function doesJavaScriptTimeAdvance() {
let event = new Event('test');
let start = Date.now();
addEventListener('test', () => {
let f = (x) => x > 1 ? f(x-1) + x : 1;
for (let x = 0; x < 100; x++) { f(1000); }
}, false);
dispatchEvent(event);
return Date.now() > start;
}
</script>
`, 'Tests that perf metrics return real time even if there is a virtual time override in place.');
let v = await session.evaluate("doesJavaScriptTimeAdvance()");
testRunner.log(`Does real time advance? ${v}.`);
await dp.Performance.enable();
await dp.Emulation.setVirtualTimePolicy(
{policy: 'advance', initialVirtualTime: 1234567890});
let before = await getScriptDuration();
v = await session.evaluate("doesJavaScriptTimeAdvance()");
testRunner.log(`Does virtual time advance? ${v}.`);
let after = await getScriptDuration();
testRunner.log(`Is script duration increased? ${after > before}.`);
async function getScriptDuration() {
const {result:{metrics}} = await dp.Performance.getMetrics();
//testRunner.log(metrics);
const metric = metrics.find(metric => metric.name === "ScriptDuration");
return metric.value;
}
testRunner.completeTest();
})