Bug 1479395 [wpt PR 12225] - Clean up IDL tests which reference SVG, a=testonly
authorLuke Bjerring <lukebjerring@users.noreply.github.com>
Thu, 02 Aug 2018 14:26:53 +0000
changeset 826262 1ec460b3a7889c002fec2bdd04fbd2a2309f2b70
parent 826261 0be309fac53a652b380df519bf41db074cbe1570
child 826263 263132ef9c2d28809723e59f9dc3df935f37b64e
push id118275
push userbmo:dharvey@mozilla.com
push dateFri, 03 Aug 2018 11:44:33 +0000
reviewerstestonly
bugs1479395, 12225
milestone63.0a1
Bug 1479395 [wpt PR 12225] - Clean up IDL tests which reference SVG, a=testonly Automatic update from web-platform-testsClean up IDL tests which reference SVG (#12225) -- wpt-commits: d533edcd109bf4084608515766d7744f9957633a wpt-pr: 12225
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/cookie-store/idlharness.tentative.https.html
testing/web-platform/tests/css/css-masking/idlharness.html
testing/web-platform/tests/css/cssom-view/interfaces.html
testing/web-platform/tests/css/filter-effects/interfaces.any.js
testing/web-platform/tests/html/dom/interfaces.https.html
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -450185,17 +450185,17 @@
    "0c3d8b12d46ab587bf9e4f0a6c38768f06cd792d",
    "testharness"
   ],
   "cookie-store/httponly_cookies.https.window.js": [
    "01239aec58fbd81967a0e7ac47723423fd42b0a8",
    "testharness"
   ],
   "cookie-store/idlharness.tentative.https.html": [
-   "b9cab343ffbdc77c8fb1b609451c9da7d4dbf5e4",
+   "864b6994f0d11b5a241b33a68fe233f8d0413c90",
    "testharness"
   ],
   "cookie-store/idlharness_serviceworker.js": [
    "1b28b2895f186fe79e5b5963c3a8aa2e5a8a7855",
    "support"
   ],
   "cookie-store/idlharness_serviceworker.tentative.https.html": [
    "845a9fdd7e05cba85bcb3e7714fb4a82cfd0d23c",
@@ -533261,17 +533261,17 @@
    "5ec30181f25a12e51f1dedaa658ce66ad91824e8",
    "support"
   ],
   "css/css-masking/clip/reference/clip-vertical-stripe-ref.html": [
    "96ccc2c19c428ddf3717c641db07bce710bb6690",
    "support"
   ],
   "css/css-masking/idlharness.html": [
-   "71cca64c3e4e5c3d3eb0c129d25e5907b8665599",
+   "41bab663d40b68056cee2bbb898847996e0796f2",
    "testharness"
   ],
   "css/css-masking/parsing/clip-invalid.html": [
    "68b67c93131b3717ae2f90e18a52f423f351b94f",
    "testharness"
   ],
   "css/css-masking/parsing/clip-path-invalid.html": [
    "3f5940a5f87f2dc3eebc95b6a5b8623c8453affe",
@@ -562221,17 +562221,17 @@
    "9171997e2a9c59df4e4c1aaad58079593d496cf1",
    "testharness"
   ],
   "css/cssom-view/iframe.html": [
    "e4413a7388a7a0463264a002985ef2525ec6034b",
    "support"
   ],
   "css/cssom-view/interfaces.html": [
-   "38de8dc6a440828339c43e6f12e965052219253a",
+   "c73663e2714431c99dd4a4695da0a52cabc31d4b",
    "testharness"
   ],
   "css/cssom-view/matchMedia.xht": [
    "7ac875c6aa967187d8171f0876a5de15adfe5249",
    "testharness"
   ],
   "css/cssom-view/matchMediaAddListener.html": [
    "7236be7febc985a9432e3127b78acf352bb91fa1",
@@ -563337,17 +563337,17 @@
    "a50f8da566aed1af0866390f27b93c69118324c5",
    "reftest"
   ],
   "css/filter-effects/filters-test-brightness-003.html": [
    "9ecef28aa54d133dfaea55551dbed91305cf9d0e",
    "reftest"
   ],
   "css/filter-effects/interfaces.any.js": [
-   "86993b1f069f0f5a059e983aab6a007f9d6b9645",
+   "88fab2fb861a42873c8a3b692037b222ef1d277a",
    "testharness"
   ],
   "css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html": [
    "3aca3734eaad689f0bde34e3ce3004bd2c16a3ca",
    "testharness"
   ],
   "css/filter-effects/parsing/color-interpolation-filters-parsing-valid.html": [
    "d2e89a3625853fecdb86618afaad9d3354f34ed2",
@@ -586801,17 +586801,17 @@
    "031cde580b2c3ddb6c2f0c9cb56e9cd57a48a3bb",
    "support"
   ],
   "html/dom/historical.html": [
    "a36b4b2e92b792b18fb8704d217a089ba07be254",
    "testharness"
   ],
   "html/dom/interfaces.https.html": [
-   "165865d4daa591d17808625f2f9fb9b677207c7f",
+   "78f7d13d1afd42d8933930bb28e7271b71f62ac3",
    "testharness"
   ],
   "html/dom/interfaces.worker.js": [
    "9fc3dccc66bdb72199cf819c8e1174958696f67c",
    "testharness"
   ],
   "html/dom/new-harness.js": [
    "11bf7623251113c06e95f2a176318b9f630fca26",
--- a/testing/web-platform/tests/cookie-store/idlharness.tentative.https.html
+++ b/testing/web-platform/tests/cookie-store/idlharness.tentative.https.html
@@ -4,59 +4,20 @@
 <link rel="help" href="https://github.com/WICG/cookie-store"/>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/resources/WebIDLParser.js"></script>
 <script src="/resources/idlharness.js"></script>
 <script>
 'use strict';
 
-promise_test(async t => {
-  const urls = [
-    '/interfaces/uievents.idl',
-    '/interfaces/dom.idl',
-    '/interfaces/html.idl',
-    '/interfaces/cookie-store.idl'
-  ];
-  const [uievents, dom, html, cookie_store] = await Promise.all(
-    urls.map(url => fetch(url).then(r => r.text())));
-
-  const idl_array = new IdlArray();
-
-  // Dependencies of HTML
-  idl_array.add_untested_idls(dom, { only: [
-    'Event',
-    'EventInit',
-    'EventTarget',
-    'HTMLCollection',
-    'NodeList',
-  ] });
-  idl_array.add_untested_idls('interface Document {};');
-  idl_array.add_untested_idls('interface Element {};');
-  idl_array.add_untested_idls('interface LinkStyle {};');
-  idl_array.add_untested_idls('interface SVGElement {};');
-  idl_array.add_untested_idls(html);
-  idl_array.add_untested_idls(uievents, { only: [
-    'UIEvent',
-    'UIEventInit',
-    'MouseEvent',
-    'MouseEventInit',
-    'EventModifierInit',
-  ] });
-
-  idl_array.add_untested_idls(
-    `dictionary ExtendableEventInit {};`);
-  idl_array.add_untested_idls(
-    `[Global=ExtendableEvent, Exposed=ServiceWorker]
-     interface ExtendableEvent : Event {};`);
-  idl_array.add_untested_idls(
-    `[Global=ServiceWorker, Exposed=ServiceWorker]
-     interface ServiceWorkerGlobalScope {};`);
-
-  idl_array.add_idls(cookie_store);
-
-  idl_array.add_objects({
-    CookieStore: ["self.cookieStore"],
-    CookieChangeEvent: ["new CookieChangeEvent('change')"],
-  });
-  idl_array.test();
-}, 'Interface test');
+idl_test(
+  ['cookie-store'],
+  ['SVG', 'service-workers', 'uievents', 'html', 'dom'],
+  idl_array => {
+    idl_array.add_objects({
+      CookieStore: ['cookieStore'],
+      CookieChangeEvent: ['new CookieChangeEvent("change")'],
+    });
+  },
+  'Interface test'
+);
 </script>
--- a/testing/web-platform/tests/css/css-masking/idlharness.html
+++ b/testing/web-platform/tests/css/css-masking/idlharness.html
@@ -1,34 +1,30 @@
 <!doctype html>
 <title>css-masking IDL tests</title>
 <link rel="help" href="https://drafts.fxtf.org/css-masking-1/">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/resources/WebIDLParser.js"></script>
 <script src="/resources/idlharness.js"></script>
+
 <script>
-  "use strict";
+  'use strict';
 
-  promise_test(async () => {
-    const idl_array = new IdlArray();
-    const idl = await fetch("/interfaces/css-masking.idl").then(r => r.text());
-    const dom = await fetch("/interfaces/dom.idl").then(r => r.text());
-    idl_array.add_idls(idl);
-    idl_array.add_untested_idls('interface SVGElement : Element {};');
-    idl_array.add_untested_idls('interface SVGAnimatedEnumeration {};');
-    idl_array.add_untested_idls('interface SVGAnimatedLength {};');
-    idl_array.add_untested_idls('interface SVGAnimatedTransformList {};');
-    idl_array.add_dependency_idls(dom); // Needed for Element
-    idl_array.add_objects({
-      SVGClipPathElement: [document.querySelector('#clip1')],
-      SVGMaskElement: [document.querySelector('#mask1')],
-    });
-    idl_array.test();
-  }, "Test IDL implementation of css-masking");
+  idl_test(
+    ['css-masking'],
+    ['SVG', 'html', 'dom'],
+    idl_array => {
+      idl_array.add_objects({
+        SVGClipPathElement: [document.querySelector('#clip1')],
+        SVGMaskElement: [document.querySelector('#mask1')],
+      });
+    },
+    'Test IDL implementation of css-masking'
+  );
 </script>
 
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
   <clipPath id="clip1">
     <rect x="50" y="50" width="100" height="100" />
   </clipPath>
   <mask id="mask1" x="0" y="0" width="1" height="1" maskContentUnits="objectBoundingBox">
     <rect x="0" y="0" width="1" height="1" fill="white" />
--- a/testing/web-platform/tests/css/cssom-view/interfaces.html
+++ b/testing/web-platform/tests/css/cssom-view/interfaces.html
@@ -10,64 +10,37 @@
 <script src=/resources/idlharness.js></script>
 
 <input id="caretPositionInput" style="position: absolute; top: 0; left: 0; border: 0;">
 
 <h1>CSSOM View IDL tests</h1>
 <div id=log></div>
 
 <script>
-"use strict";
-
-function doTest([html, dom, uievents, cssom, cssom_view]) {
+'use strict';
 
-  var idlArray = new IdlArray();
-  var svg = "interface SVGElement : Element {};";
-  idlArray.add_untested_idls(html + dom + svg + cssom);
-  idlArray.add_untested_idls(uievents, { only: [
-    'UIEvent',
-    'UIEventInit',
-    'MouseEvent',
-    'MouseEventInit',
-    'EventModifierInit']
-  });
-  idlArray.add_idls(cssom_view);
+const waitForLoad = new Promise(resolve => { addEventListener('load', resolve); });
 
-  idlArray.add_objects({
-    "Window": ["window"],
-    "MediaQueryList": ["matchMedia('all')"],
-    "MediaQueryListEvent": ["new MediaQueryListEvent('change')"],
-    "Screen": ["screen"],
-    "Document": ["document"],
-    "CaretPosition": ["document.caretPositionFromPoint(5, 5)"],
-    "Element": ["document.createElementNS('x', 'y')"],
-    "HTMLElement": ["document.createElement('div')"],
-    "HTMLImageElement": ["document.createElement('img')"],
-    "Range": ["new Range()"],
-    // "MouseEvent": ["new MouseEvent('foo')"],
-    "Text": ["document.createTextNode('x')"],
-    // "CSSPseudoElement": [],
-  });
-  idlArray.test();
-};
+idl_test(
+  ['cssom-view'],
+  ['html', 'dom', 'uievents', 'cssom'],
+  async idlArray => {
+    idlArray.add_objects({
+      Window: ['window'],
+      MediaQueryList: ['matchMedia("all")'],
+      MediaQueryListEvent: ['new MediaQueryListEvent("change")'],
+      Screen: ['screen'],
+      Document: ['document'],
+      CaretPosition: ['document.caretPositionFromPoint(5, 5)'],
+      Element: ['document.createElementNS("x", "y")'],
+      HTMLElement: ['document.createElement("div")'],
+      HTMLImageElement: ['document.createElement("img")'],
+      Range: ['new Range()'],
+      // MouseEvent: ['new MouseEvent("foo")'],
+      Text: ['document.createTextNode("x")'],
+      // CSSPseudoElement: [],
+    });
 
-function fetchData(url) {
-  return fetch(url).then((response) => response.text());
-}
-
-function waitForLoad() {
-  return new Promise(function(resolve) {
-    addEventListener("load", resolve);
-  });
-}
-
-promise_test(function() {
-  // Have to wait for onload
-  return Promise.all([fetchData("/interfaces/html.idl"),
-                      fetchData("/interfaces/dom.idl"),
-                      fetchData("/interfaces/uievents.idl"),
-                      fetchData("/interfaces/cssom.idl"),
-                      fetchData("/interfaces/cssom-view.idl"),
-                      waitForLoad()])
-                .then(doTest);
-}, "Test driver");
-
+    await waitForLoad;
+  },
+  'Test driver'
+);
 </script>
--- a/testing/web-platform/tests/css/filter-effects/interfaces.any.js
+++ b/testing/web-platform/tests/css/filter-effects/interfaces.any.js
@@ -1,16 +1,15 @@
 // META: script=/resources/WebIDLParser.js
 // META: script=/resources/idlharness.js
 
 'use strict';
 
 // https://drafts.fxtf.org/filter-effects/
 
-promise_test(async () => {
-  const filterEffectsIdl = await fetch('/interfaces/filter-effects.idl').then(r => r.text());
-  const idlArray = new IdlArray();
-  idlArray.add_idls(filterEffectsIdl);
-  idlArray.add_untested_idls('interface SVGElement {};');
-  idlArray.add_untested_idls('interface SVGURIReference {};');
-  idlArray.test();
-  done();
-}, 'Filter effects interfaces.');
+idl_test(
+  ['filter-effects'],
+  ['SVG', 'html', 'dom'],
+  idl_array => {
+    // TODO: objects
+  },
+  'Filter effects interfaces.'
+);
--- a/testing/web-platform/tests/html/dom/interfaces.https.html
+++ b/testing/web-platform/tests/html/dom/interfaces.https.html
@@ -28,215 +28,196 @@ setup(function() {
 });
 
 function createInput(type) {
   var input = document.createElement('input');
   input.type = type;
   return input;
 }
 
-function doTest([html, dom, cssom, uievents, touchevents]) {
-  var idlArray = new IdlArray();
-  var svg = "interface SVGElement : Element {};";
-  idlArray.add_untested_idls(dom + svg + cssom + uievents + touchevents);
-  idlArray.add_idls(html);
+const waitForLoad = new Promise(resolve => { addEventListener('load', resolve); })
 
-  idlArray.add_objects({
-    NodeList: ['document.getElementsByName("name")'],
-    HTMLAllCollection: ['document.all'],
-    HTMLFormControlsCollection: ['document.createElement("form").elements'],
-    RadioNodeList: [],
-    HTMLOptionsCollection: ['document.createElement("select").options'],
-    DOMStringMap: ['document.head.dataset'],
-    Transferable: [],
-    Document: ['iframe.contentDocument', 'new Document()'],
-    XMLDocument: ['document.implementation.createDocument(null, "", null)'],
-    HTMLElement: ['document.createElement("noscript")'], // more tests in html/semantics/interfaces.js
-    HTMLUnknownElement: ['document.createElement("bgsound")'], // more tests in html/semantics/interfaces.js
-    HTMLHtmlElement: ['document.createElement("html")'],
-    HTMLHeadElement: ['document.createElement("head")'],
-    HTMLTitleElement: ['document.createElement("title")'],
-    HTMLBaseElement: ['document.createElement("base")'],
-    HTMLLinkElement: ['document.createElement("link")'],
-    HTMLMetaElement: ['document.createElement("meta")'],
-    HTMLStyleElement: ['document.createElement("style")'],
-    HTMLScriptElement: ['document.createElement("script")'],
-    HTMLBodyElement: ['document.createElement("body")'],
-    HTMLHeadingElement: ['document.createElement("h1")'],
-    HTMLParagraphElement: ['document.createElement("p")'],
-    HTMLHRElement: ['document.createElement("hr")'],
-    HTMLPreElement: [
-      'document.createElement("pre")',
-      'document.createElement("listing")',
-      'document.createElement("xmp")',
-    ],
-    HTMLQuoteElement: [
-      'document.createElement("blockquote")',
-      'document.createElement("q")',
-    ],
-    HTMLOlistElement: ['document.createElement("ol")'],
-    HTMLUlistElement: ['document.createElement("ul")'],
-    HTMLLIElement: ['document.createElement("li")'],
-    HTMLDlistElement: ['document.createElement("dl")'],
-    HTMLDivElement: ['document.createElement("div")'],
-    HTMLAnchorElement: ['document.createElement("a")'],
-    HTMLDataElement: ['document.createElement("data")'],
-    HTMLTimeElement: ['document.createElement("time")'],
-    HTMLSpanElement: ['document.createElement("span")'],
-    HTMLBRElement: ['document.createElement("br")'],
-    HTMLModElement: [
-      'document.createElement("ins")',
-      'document.createElement("del")',
-    ],
-    HTMLPictureElement: ['document.createElement("picture")'],
-    HTMLImageElement: ['document.createElement("img")', 'new Image()'],
-    HTMLIframeElement: ['document.createElement("iframe")'],
-    HTMLEmbedElement: ['document.createElement("embed")'],
-    HTMLObjectElement: ['document.createElement("object")'],
-    HTMLParamElement: ['document.createElement("param")'],
-    HTMLVideoElement: ['document.createElement("video")'],
-    HTMLAudioElement: ['document.createElement("audio")', 'new Audio()'],
-    HTMLSourceElement: ['document.createElement("source")'],
-    HTMLTrackElement: ['document.createElement("track")'],
-    HTMLMediaElement: [],
-    MediaError: ['errorVideo.error'],
-    AudioTrackList: [],
-    AudioTrack: [],
-    VideoTrackList: [],
-    VideoTrack: [],
-    TextTrackList: ['document.createElement("video").textTracks'],
-    TextTrack: ['document.createElement("track").track'],
-    TextTrackCueList: ['document.createElement("video").addTextTrack("subtitles").cues'],
-    TextTrackCue: [],
-    DataCue: [],
-    TimeRanges: ['document.createElement("video").buffered'],
-    TrackEvent: ['new TrackEvent("addtrack", {track:document.createElement("track").track})'],
-    HTMLTemplateElement: ['document.createElement("template")'],
-    HTMLSlotElement: ['document.createElement("slot")'],
-    HTMLCanvasElement: ['document.createElement("canvas")'],
-    CanvasRenderingContext2D: ['document.createElement("canvas").getContext("2d")'],
-    CanvasGradient: [],
-    CanvasPattern: [],
-    TextMetrics: [],
-    ImageData: [],
-    HTMLMapElement: ['document.createElement("map")'],
-    HTMLAreaElement: ['document.createElement("area")'],
-    HTMLTableElement: ['document.createElement("table")'],
-    HTMLTableCaptionElement: ['document.createElement("caption")'],
-    HTMLTableColElement: [
-      'document.createElement("colgroup")',
-      'document.createElement("col")',
-    ],
-    HTMLTableSectionElement: [
-      'document.createElement("tbody")',
-      'document.createElement("thead")',
-      'document.createElement("tfoot")',
-    ],
-    HTMLTableRowElement: ['document.createElement("tr")'],
-    HTMLTableCellElement: [
-      'document.createElement("td")',
-      'document.createElement("th")',
-    ],
-    HTMLFormElement: ['document.createElement("form")'],
-    HTMLFieldsetElement: ['document.createElement("fieldset")'],
-    HTMLLegendElement: ['document.createElement("legend")'],
-    HTMLLabelElement: ['document.createElement("label")'],
-    HTMLInputElement: [
-      'document.createElement("input")',
-      'createInput("text")',
-      'createInput("hidden")',
-      'createInput("search")',
-      'createInput("tel")',
-      'createInput("url")',
-      'createInput("email")',
-      'createInput("password")',
-      'createInput("date")',
-      'createInput("month")',
-      'createInput("week")',
-      'createInput("time")',
-      'createInput("datetime-local")',
-      'createInput("number")',
-      'createInput("range")',
-      'createInput("color")',
-      'createInput("checkbox")',
-      'createInput("radio")',
-      'createInput("file")',
-      'createInput("submit")',
-      'createInput("image")',
-      'createInput("reset")',
-      'createInput("button")'
-    ],
-    HTMLButtonElement: ['document.createElement("button")'],
-    HTMLSelectElement: ['document.createElement("select")'],
-    HTMLDataListElement: ['document.createElement("datalist")'],
-    HTMLOptGroupElement: ['document.createElement("optgroup")'],
-    HTMLOptionElement: ['document.createElement("option")', 'new Option()'],
-    HTMLTextAreaElement: ['document.createElement("textarea")'],
-    HTMLOutputElement: ['document.createElement("output")'],
-    HTMLProgressElement: ['document.createElement("progress")'],
-    HTMLMeterElement: ['document.createElement("meter")'],
-    ValidityState: ['document.createElement("input").validity'],
-    HTMLDetailsElement: ['document.createElement("details")'],
-    HTMLMenuElement: ['document.createElement("menu")'],
-    Window: ['window'],
-    BarProp: [],
-    History: ['window.history'],
-    Location: ['window.location'],
-    PopStateEvent: ['new PopStateEvent("popstate", { data: {} })'],
-    HashChangeEvent: [],
-    PageTransitionEvent: [],
-    BeforeUnloadEvent: [],
-    ApplicationCache: ['window.applicationCache'],
-    WindowModal: [],
-    Navigator: ['window.navigator'],
-    External: ['window.external'],
-    DataTransfer: [],
-    DataTransferItemList: [],
-    DataTransferItem: [],
-    DragEvent: [],
-    NavigatorUserMediaError: [],
-    MediaStream: [],
-    LocalMediaStream: [],
-    MediaStreamTrack: [],
-    MediaStreamRecorder: [],
-    PeerConnection: [],
-    MediaStreamEvent: [],
-    ErrorEvent: [],
-    WebSocket: ['new WebSocket("wss://foo")'],
-    CloseEvent: ['new CloseEvent("close")'],
-    AbstractWorker: [],
-    Worker: [],
-    SharedWorker: [],
-    MessageEvent: ['new MessageEvent("message", { data: 5 })'],
-    MessageChannel: [],
-    MessagePort: [],
-    HTMLMarqueeElement: ['document.createElement("marquee")'],
-    HTMLFrameSetElement: ['document.createElement("frameset")'],
-    HTMLFrameElement: ['document.createElement("frame")'],
-    HTMLDirectoryElement: ['document.createElement("dir")'],
-    HTMLFontElement: ['document.createElement("font")'],
-  });
-  idlArray.prevent_multiple_testing("HTMLElement");
-  idlArray.test();
-};
-
-function fetchData(url) {
-  return fetch(url).then((response) => response.text());
-}
-
-function waitForLoad() {
-  return new Promise(function(resolve) {
-    addEventListener("load", resolve);
-  });
-}
-
-promise_test(function() {
-  // Have to wait for onload
-  return Promise.all([fetchData("/interfaces/html.idl"),
-                      fetchData("/interfaces/dom.idl"),
-                      fetchData("/interfaces/cssom.idl"),
-                      fetchData("/interfaces/touchevents.idl"),
-                      fetchData("/interfaces/uievents.idl"),
-                      waitForLoad()])
-                .then(doTest);
-}, "Test driver");
+idl_test(
+  ['html'],
+  ['SVG', 'cssom', 'touchevents', 'uievents', 'dom'],
+  async idlArray => {
+    idlArray.add_objects({
+      NodeList: ['document.getElementsByName("name")'],
+      HTMLAllCollection: ['document.all'],
+      HTMLFormControlsCollection: ['document.createElement("form").elements'],
+      RadioNodeList: [],
+      HTMLOptionsCollection: ['document.createElement("select").options'],
+      DOMStringMap: ['document.head.dataset'],
+      Transferable: [],
+      Document: ['iframe.contentDocument', 'new Document()'],
+      XMLDocument: ['document.implementation.createDocument(null, "", null)'],
+      HTMLElement: ['document.createElement("noscript")'], // more tests in html/semantics/interfaces.js
+      HTMLUnknownElement: ['document.createElement("bgsound")'], // more tests in html/semantics/interfaces.js
+      HTMLHtmlElement: ['document.createElement("html")'],
+      HTMLHeadElement: ['document.createElement("head")'],
+      HTMLTitleElement: ['document.createElement("title")'],
+      HTMLBaseElement: ['document.createElement("base")'],
+      HTMLLinkElement: ['document.createElement("link")'],
+      HTMLMetaElement: ['document.createElement("meta")'],
+      HTMLStyleElement: ['document.createElement("style")'],
+      HTMLScriptElement: ['document.createElement("script")'],
+      HTMLBodyElement: ['document.createElement("body")'],
+      HTMLHeadingElement: ['document.createElement("h1")'],
+      HTMLParagraphElement: ['document.createElement("p")'],
+      HTMLHRElement: ['document.createElement("hr")'],
+      HTMLPreElement: [
+        'document.createElement("pre")',
+        'document.createElement("listing")',
+        'document.createElement("xmp")',
+      ],
+      HTMLQuoteElement: [
+        'document.createElement("blockquote")',
+        'document.createElement("q")',
+      ],
+      HTMLOlistElement: ['document.createElement("ol")'],
+      HTMLUlistElement: ['document.createElement("ul")'],
+      HTMLLIElement: ['document.createElement("li")'],
+      HTMLDlistElement: ['document.createElement("dl")'],
+      HTMLDivElement: ['document.createElement("div")'],
+      HTMLAnchorElement: ['document.createElement("a")'],
+      HTMLDataElement: ['document.createElement("data")'],
+      HTMLTimeElement: ['document.createElement("time")'],
+      HTMLSpanElement: ['document.createElement("span")'],
+      HTMLBRElement: ['document.createElement("br")'],
+      HTMLModElement: [
+        'document.createElement("ins")',
+        'document.createElement("del")',
+      ],
+      HTMLPictureElement: ['document.createElement("picture")'],
+      HTMLImageElement: ['document.createElement("img")', 'new Image()'],
+      HTMLIframeElement: ['document.createElement("iframe")'],
+      HTMLEmbedElement: ['document.createElement("embed")'],
+      HTMLObjectElement: ['document.createElement("object")'],
+      HTMLParamElement: ['document.createElement("param")'],
+      HTMLVideoElement: ['document.createElement("video")'],
+      HTMLAudioElement: ['document.createElement("audio")', 'new Audio()'],
+      HTMLSourceElement: ['document.createElement("source")'],
+      HTMLTrackElement: ['document.createElement("track")'],
+      HTMLMediaElement: [],
+      MediaError: ['errorVideo.error'],
+      AudioTrackList: [],
+      AudioTrack: [],
+      VideoTrackList: [],
+      VideoTrack: [],
+      TextTrackList: ['document.createElement("video").textTracks'],
+      TextTrack: ['document.createElement("track").track'],
+      TextTrackCueList: ['document.createElement("video").addTextTrack("subtitles").cues'],
+      TextTrackCue: [],
+      DataCue: [],
+      TimeRanges: ['document.createElement("video").buffered'],
+      TrackEvent: ['new TrackEvent("addtrack", {track:document.createElement("track").track})'],
+      HTMLTemplateElement: ['document.createElement("template")'],
+      HTMLSlotElement: ['document.createElement("slot")'],
+      HTMLCanvasElement: ['document.createElement("canvas")'],
+      CanvasRenderingContext2D: ['document.createElement("canvas").getContext("2d")'],
+      CanvasGradient: [],
+      CanvasPattern: [],
+      TextMetrics: [],
+      ImageData: [],
+      HTMLMapElement: ['document.createElement("map")'],
+      HTMLAreaElement: ['document.createElement("area")'],
+      HTMLTableElement: ['document.createElement("table")'],
+      HTMLTableCaptionElement: ['document.createElement("caption")'],
+      HTMLTableColElement: [
+        'document.createElement("colgroup")',
+        'document.createElement("col")',
+      ],
+      HTMLTableSectionElement: [
+        'document.createElement("tbody")',
+        'document.createElement("thead")',
+        'document.createElement("tfoot")',
+      ],
+      HTMLTableRowElement: ['document.createElement("tr")'],
+      HTMLTableCellElement: [
+        'document.createElement("td")',
+        'document.createElement("th")',
+      ],
+      HTMLFormElement: ['document.createElement("form")'],
+      HTMLFieldsetElement: ['document.createElement("fieldset")'],
+      HTMLLegendElement: ['document.createElement("legend")'],
+      HTMLLabelElement: ['document.createElement("label")'],
+      HTMLInputElement: [
+        'document.createElement("input")',
+        'createInput("text")',
+        'createInput("hidden")',
+        'createInput("search")',
+        'createInput("tel")',
+        'createInput("url")',
+        'createInput("email")',
+        'createInput("password")',
+        'createInput("date")',
+        'createInput("month")',
+        'createInput("week")',
+        'createInput("time")',
+        'createInput("datetime-local")',
+        'createInput("number")',
+        'createInput("range")',
+        'createInput("color")',
+        'createInput("checkbox")',
+        'createInput("radio")',
+        'createInput("file")',
+        'createInput("submit")',
+        'createInput("image")',
+        'createInput("reset")',
+        'createInput("button")'
+      ],
+      HTMLButtonElement: ['document.createElement("button")'],
+      HTMLSelectElement: ['document.createElement("select")'],
+      HTMLDataListElement: ['document.createElement("datalist")'],
+      HTMLOptGroupElement: ['document.createElement("optgroup")'],
+      HTMLOptionElement: ['document.createElement("option")', 'new Option()'],
+      HTMLTextAreaElement: ['document.createElement("textarea")'],
+      HTMLOutputElement: ['document.createElement("output")'],
+      HTMLProgressElement: ['document.createElement("progress")'],
+      HTMLMeterElement: ['document.createElement("meter")'],
+      ValidityState: ['document.createElement("input").validity'],
+      HTMLDetailsElement: ['document.createElement("details")'],
+      HTMLMenuElement: ['document.createElement("menu")'],
+      Window: ['window'],
+      BarProp: [],
+      History: ['window.history'],
+      Location: ['window.location'],
+      PopStateEvent: ['new PopStateEvent("popstate", { data: {} })'],
+      HashChangeEvent: [],
+      PageTransitionEvent: [],
+      BeforeUnloadEvent: [],
+      ApplicationCache: ['window.applicationCache'],
+      WindowModal: [],
+      Navigator: ['window.navigator'],
+      External: ['window.external'],
+      DataTransfer: [],
+      DataTransferItemList: [],
+      DataTransferItem: [],
+      DragEvent: [],
+      NavigatorUserMediaError: [],
+      MediaStream: [],
+      LocalMediaStream: [],
+      MediaStreamTrack: [],
+      MediaStreamRecorder: [],
+      PeerConnection: [],
+      MediaStreamEvent: [],
+      ErrorEvent: [],
+      WebSocket: ['new WebSocket("wss://foo")'],
+      CloseEvent: ['new CloseEvent("close")'],
+      AbstractWorker: [],
+      Worker: [],
+      SharedWorker: [],
+      MessageEvent: ['new MessageEvent("message", { data: 5 })'],
+      MessageChannel: [],
+      MessagePort: [],
+      HTMLMarqueeElement: ['document.createElement("marquee")'],
+      HTMLFrameSetElement: ['document.createElement("frameset")'],
+      HTMLFrameElement: ['document.createElement("frame")'],
+      HTMLDirectoryElement: ['document.createElement("dir")'],
+      HTMLFontElement: ['document.createElement("font")'],
+    });
+    idlArray.prevent_multiple_testing('HTMLElement');
+    await waitForLoad;
+  },
+  'html interfaces'
+);
 
 </script>