Description

This test validates that, when a fetching resources that encounter same-origin redirects, attributes of the PerformanceResourceTiming entry conform to the specification.


PASS Verify attributes of a redirected stylesheet's PerformanceResourceTiming
PASS Verify attributes of a redirected image's PerformanceResourceTiming
PASS Verify attributes of a redirected iframe's PerformanceResourceTiming
PASS Verify attributes of a redirected script's PerformanceResourceTiming
PASS Verify attributes of a redirected synchronous XMLHttpRequest's PerformanceResourceTiming
PASS Verify attributes of a synchronous XMLHttpRequest's PerformanceResourceTiming where the initial HTTP request is redirected to a cross-origin HTTPS resource.

