summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/hr-time/performance-tojson.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/hr-time/performance-tojson.html')
-rw-r--r--testing/web-platform/tests/hr-time/performance-tojson.html76
1 files changed, 76 insertions, 0 deletions
diff --git a/testing/web-platform/tests/hr-time/performance-tojson.html b/testing/web-platform/tests/hr-time/performance-tojson.html
new file mode 100644
index 0000000000..fd8049cb9a
--- /dev/null
+++ b/testing/web-platform/tests/hr-time/performance-tojson.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+<head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<script>
+
+test(() => {
+ // Check Performance attributes.
+ assert_equals(typeof(performance.toJSON), 'function');
+ const json = performance.toJSON();
+ assert_equals(typeof(json), 'object');
+ assert_equals(json.timeOrigin, performance.timeOrigin,
+ 'performance.toJSON().timeOrigin should match performance.timeOrigin');
+
+ // Check PerformanceTiming toJSON.
+ const jsonTiming = json.timing;
+ const timing = performance.timing;
+ assert_equals(typeof(timing.toJSON), 'function');
+ const timingJSON = timing.toJSON();
+ assert_equals(typeof(timingJSON), 'object');
+ // Check PerformanceTiming attributes, from both:
+ // 1) |jsonTiming| from Performance.
+ // 2) |timingJSON| from PerformanceTiming.
+ const performanceTimingKeys = [
+ 'navigationStart',
+ 'unloadEventStart',
+ 'unloadEventEnd',
+ 'redirectStart',
+ 'redirectEnd',
+ 'fetchStart',
+ 'domainLookupStart',
+ 'domainLookupEnd',
+ 'connectStart',
+ 'connectEnd',
+ 'secureConnectionStart',
+ 'requestStart',
+ 'responseStart',
+ 'responseEnd',
+ 'domLoading',
+ 'domInteractive',
+ 'domContentLoadedEventStart',
+ 'domContentLoadedEventEnd',
+ 'domComplete',
+ 'loadEventStart',
+ 'loadEventEnd'
+ ];
+ for (const key of performanceTimingKeys) {
+ assert_equals(jsonTiming[key], timing[key],
+ `performance.toJSON().timing.${key} should match performance.timing.${key}`);
+ assert_equals(timingJSON[key], timing[key],
+ `performance.timing.toJSON().${key} should match performance.timing.${key}`);
+ }
+
+ // Check PerformanceNavigation toJSON.
+ const jsonNavigation = json.navigation;
+ const navigation = performance.navigation;
+ assert_equals(typeof(navigation.toJSON), 'function');
+ const navigationJSON = navigation.toJSON();
+ assert_equals(typeof(navigationJSON), 'object');
+ // Check PerformanceNavigation attributes, from both:
+ // 1) |jsonNavigation| from Performance.
+ // 2) |navigationJSON| from PerformanceNavigation.
+ let performanceNavigationKeys = ['type', 'redirectCount'];
+ for (const key of performanceNavigationKeys) {
+ assert_equals(jsonNavigation[key], navigation[key],
+ `performance.toJSON().navigation.${key} should match performance.navigation.${key}`);
+ assert_equals(navigationJSON[key], navigation[key],
+ `performance.navigation.toJSON().${key} should match performance.navigation.${key}`);
+ }
+}, 'Test performance.toJSON()');
+</script>
+</body>
+</html> \ No newline at end of file