feat: add performance user timing APIs (#6421)

This commit is contained in:
Kitson Kelly 2020-07-11 12:38:15 +10:00 committed by GitHub
parent d01eb6d9c5
commit 40d081d3d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 536 additions and 26 deletions

View file

@ -1,5 +1,10 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
import { unitTest, assert, createResolvable } from "./test_util.ts";
import {
unitTest,
assert,
assertEquals,
createResolvable,
} from "./test_util.ts";
unitTest({ perms: { hrtime: false } }, async function performanceNow(): Promise<
void
@ -13,3 +18,42 @@ unitTest({ perms: { hrtime: false } }, async function performanceNow(): Promise<
}, 10);
await resolvable;
});
unitTest(function performanceMark() {
const mark = performance.mark("test");
assert(mark instanceof PerformanceMark);
assertEquals(mark.detail, null);
assertEquals(mark.name, "test");
assertEquals(mark.entryType, "mark");
assert(mark.startTime > 0);
assertEquals(mark.duration, 0);
const entries = performance.getEntries();
assert(entries[entries.length - 1] === mark);
const markEntries = performance.getEntriesByName("test", "mark");
assert(markEntries[markEntries.length - 1] === mark);
});
unitTest(function performanceMeasure() {
const mark = performance.mark("test");
return new Promise((resolve, reject) => {
setTimeout(() => {
try {
const measure = performance.measure("test", "test");
assert(measure instanceof PerformanceMeasure);
assertEquals(measure.detail, null);
assertEquals(measure.name, "test");
assertEquals(measure.entryType, "measure");
assert(measure.startTime > 0);
assertEquals(mark.startTime, measure.startTime);
assert(measure.duration >= 100 && measure.duration < 200);
const entries = performance.getEntries();
assert(entries[entries.length - 1] === measure);
const measureEntries = performance.getEntriesByName("test", "measure");
assert(measureEntries[measureEntries.length - 1] === measure);
} catch (e) {
return reject(e);
}
resolve();
}, 100);
});
});