summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/user-timing/measure-l3.any.js
blob: 642b55ab635e2c021d99c1aaf3e924ca2c5c0c29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// META: script=resources/user-timing-helper.js

function endTime(entry) {
  return entry.startTime + entry.duration;
}

test(function() {
  performance.clearMarks();
  performance.clearMeasures();
  const markEntry = performance.mark("mark", {startTime: 123});
  const measureEntry = performance.measure("A", undefined, "mark");
  assert_equals(measureEntry.startTime, 0);
  assert_equals(endTime(measureEntry), markEntry.startTime);
}, "When the end mark is given and the start is unprovided, the end time of the measure entry should be the end mark's time, the start time should be 0.");

test(function() {
  performance.clearMarks();
  performance.clearMeasures();
  const markEntry = performance.mark("mark", {startTime: 123});
  const endMin = Number(performance.now().toFixed(2));
  const measureEntry = performance.measure("A", "mark", undefined);
  const endMax = Number(performance.now().toFixed(2));
  assert_equals(measureEntry.startTime, markEntry.startTime);
  assert_greater_than_equal(Number(endTime(measureEntry).toFixed(2)), endMin);
  assert_greater_than_equal(endMax, Number(endTime(measureEntry).toFixed(2)));
}, "When the start mark is given and the end is unprovided, the start time of the measure entry should be the start mark's time, the end should be now.");

test(function() {
  performance.clearMarks();
  performance.clearMeasures();
  const markEntry = performance.mark("mark", {startTime: 123});
  const measureEntry = performance.measure("A", "mark", "mark");
  assert_equals(endTime(measureEntry), markEntry.startTime);
  assert_equals(measureEntry.startTime, markEntry.startTime);
}, "When start and end mark are both given, the start time and end time of the measure entry should be the the marks' time, repectively");