Status: FAIL | Duration: 62ms | Subtests: 21/39 | Open test on wpt.live | wpt.fyi
Data from commit:
a50cb89 wpt: run reference-named files which are themselves tests (#836) (2026-09-03)
| Subtest | Status | Message |
|---|---|---|
| The document root element should be focusable. | PASS | |
| rect should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| svg should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| a should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| a[href] should be focusable. | PASS | |
| iframe should be focusable. | PASS | |
| audio[controls] should be focusable. | PASS | |
| video[controls] should be focusable. | PASS | |
| canvas[tabindex] should be focusable. | PASS | |
| circle[tabindex] should be focusable. | PASS | |
| ellipse[tabindex] should be focusable. | PASS | |
| foreignObject[tabindex] should be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| g[tabindex] should be focusable. | PASS | |
| image[tabindex] should be focusable. | PASS | |
| line[tabindex] should be focusable. | PASS | |
| mesh[tabindex] should be focusable. | PASS | |
| path[tabindex] should be focusable. | PASS | |
| polygon[tabindex] should be focusable. | PASS | |
| rect[tabindex] should be focusable. | PASS | |
| svg[tabindex] should be focusable. | PASS | |
| switch[tabindex] should be focusable. | PASS | |
| text[tabindex] should be focusable. | PASS | |
| textPath[tabindex] should be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| tspan[tabindex] should be focusable. | PASS | |
| unknown[tabindex] should be focusable. | PASS | |
| use[tabindex] should be focusable. | PASS | |
| clipPath[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| defs[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| desc[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| linearGradient[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| marker[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| mask[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| metadata[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| pattern[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| radialGradient[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| script[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| style[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| title[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
| symbol[tabindex] should not be focusable. | FAIL | cannot convert 'null' or 'undefined' to object |
/svg/interact/scripted/tabindex-focus-flag.svg
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> <metadata> <h:link rel="help" href="https://w3c.github.io/svgwg/svg2-draft/interact.html#Focus"/> </metadata> <g id="default-samples"> <!-- non-default focusable renderable element --> <rect></rect> <svg></svg> <!-- anchors need a href to be focusable --> <a></a> <a href=""></a> <!-- iframe, and audio/video with controls are default focusable --> <h:iframe src="resources/blank.htm"></h:iframe> <h:audio controls="controls"></h:audio> <h:video controls="controls"></h:video> <!-- non-default focusable renderable element with valid tabindex --> <h:canvas tabindex="0"></h:canvas> <circle tabindex="0"></circle> <ellipse tabindex="0"></ellipse> <foreignObject tabindex="0"></foreignObject> <g tabindex="0"></g> <image tabindex="0"></image> <line tabindex="0"></line> <mesh tabindex="0"></mesh> <path tabindex="0"></path> <polygon tabindex="0"></polygon> <rect tabindex="0"></rect> <svg tabindex="0"></svg> <switch tabindex="0"></switch> <text tabindex="0"> <textPath tabindex="0"></textPath> <tspan tabindex="0"></tspan> </text> <unknown tabindex="0"></unknown> <use tabindex="0"></use> <!-- never-rendered element with valid tabindex --> <clipPath tabindex="0"></clipPath> <defs tabindex="0"></defs> <desc tabindex="0"></desc> <linearGradient tabindex="0"></linearGradient> <marker tabindex="0"></marker> <mask tabindex="0"></mask> <metadata tabindex="0"></metadata> <pattern tabindex="0"></pattern> <radialGradient tabindex="0"></radialGradient> <script tabindex="0"></script> <style tabindex="0"></style> <title tabindex="0"></title> <symbol tabindex="0"></symbol> </g> <h:script src="/resources/testharness.js"/> <h:script src="/resources/testharnessreport.js"/> <script><![CDATA[ var root = document.querySelector("svg"); test(() => { root.focus(); assert_equals(document.activeElement, root); }, 'The document root element should be focusable.'); const defaultList = [ ['rect', false], ['svg', false], ['a', false], ['a[href]', true], ['iframe', true], ['audio[controls]', true], ['video[controls]', true], ['canvas[tabindex]', true], ['circle[tabindex]', true], ['ellipse[tabindex]', true], ['foreignObject[tabindex]', true], ['g[tabindex]', true], ['image[tabindex]', true], ['line[tabindex]', true], ['mesh[tabindex]', true], ['path[tabindex]', true], ['polygon[tabindex]', true], ['rect[tabindex]', true], ['svg[tabindex]', true], ['switch[tabindex]', true], ['text[tabindex]', true], ['textPath[tabindex]', true], ['tspan[tabindex]', true], ['unknown[tabindex]', true], ['use[tabindex]', true], ['clipPath[tabindex]', false], ['defs[tabindex]', false], ['desc[tabindex]', false], ['linearGradient[tabindex]', false], ['marker[tabindex]', false], ['mask[tabindex]', false], ['metadata[tabindex]', false], ['pattern[tabindex]', false], ['radialGradient[tabindex]', false], ['script[tabindex]', false], ['style[tabindex]', false], ['title[tabindex]', false], ['symbol[tabindex]', false], ]; for (entry of defaultList) { test(() => { var element = document.querySelector('#default-samples ' + entry[0]); element.focus(); if (entry[1]) assert_equals(document.activeElement, element); else assert_not_equals(document.activeElement, element); }, entry[0] + ' should ' + (entry[1] ? '' : 'not ') + 'be focusable.'); } ]]></script> </svg>