<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Resource Timing Entry Sequence of Events for Scripts</title>
<link rel="help" href="https://w3c.github.io/resource-timing/"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
    async_test(t => {
        const script = document.createElement("script");
        const url = new URL('resources/empty.js', location.href).toString();
        script.addEventListener('load', t.step_func(() => {
            assert_equals(performance.getEntriesByName(url).length, 1);
            t.done();
        }));
        script.src = url;
        document.body.appendChild(script);
        t.add_cleanup(() => script.remove());
    }, "The RT entry for script should be available when the script 'load' event fires");

    async_test(t => {
        const script = document.createElement("script");
        const url = new URL('resources/non-existent.js', location.href).toString();
        script.addEventListener('error', t.step_func(() => {
            assert_equals(performance.getEntriesByName(url).length, 1);
            t.done();
        }));
        script.src = url;
        document.body.appendChild(script);
        t.add_cleanup(() => script.remove());
    }, "The RT entry for a non-existent script should be available when the script 'error' event fires");
</script>
</body>
</html>
