<body>
    <p>Test passes if it does not assert in debug builds.</p>
    <option id="option">
        <svg id="svg">
            <set id="set" attributeName="externalResourcesRequired" dur="20ms" to="true"/>
        </svg>
    </option>
    <select id="select">
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        svg.addEventListener("load", () => {
            select.add(option);
        });

        set.addEventListener("endEvent", () => {
            if (window.testRunner)
                testRunner.notifyDone();
        });
    </script>
</body>
