| // This file may needs to be updated to wpt: |
| // https://github.com/web-platform-tests/wpt |
| |
| import '../common/index.mjs'; |
| import assert from 'assert'; |
| |
| import { performance } from 'perf_hooks'; |
| import { setTimeout } from 'timers/promises'; |
| |
| // Order by startTime |
| performance.mark('one'); |
| await setTimeout(50); |
| performance.mark('two'); |
| await setTimeout(50); |
| performance.mark('three'); |
| await setTimeout(50); |
| performance.measure('three', 'three'); |
| await setTimeout(50); |
| performance.measure('two', 'two'); |
| await setTimeout(50); |
| performance.measure('one', 'one'); |
| const entries = performance.getEntriesByType('measure'); |
| assert.deepStrictEqual(entries.map((x) => x.name), ['one', 'two', 'three']); |
| const allEntries = performance.getEntries(); |
| assert.deepStrictEqual(allEntries.map((x) => x.name), ['one', 'one', 'two', 'two', 'three', 'three']); |
| |
| performance.mark('a'); |
| await setTimeout(50); |
| performance.measure('a', 'a'); |
| await setTimeout(50); |
| performance.mark('a'); |
| await setTimeout(50); |
| performance.measure('a', 'one'); |
| const entriesByName = performance.getEntriesByName('a'); |
| assert.deepStrictEqual(entriesByName.map((x) => x.entryType), ['measure', 'mark', 'measure', 'mark']); |
| |
| // getEntriesBy[Name|Type](undefined) |
| performance.mark(undefined); |
| assert.strictEqual(performance.getEntriesByName(undefined).length, 1); |
| assert.strictEqual(performance.getEntriesByType(undefined).length, 0); |
| assert.throws(() => performance.getEntriesByName(), { |
| name: 'TypeError', |
| message: 'The "name" argument must be specified', |
| code: 'ERR_MISSING_ARGS' |
| }); |
| assert.throws(() => performance.getEntriesByType(), { |
| name: 'TypeError', |
| message: 'The "type" argument must be specified', |
| code: 'ERR_MISSING_ARGS' |
| }); |