diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index a235abdc2e5..02bcc380548 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -554120,7 +554120,7 @@ "testharness" ], "custom-elements/HTMLElement-constructor.html": [ - "7fefdaa4cbdf30c505858730a5a3858e9db5dbc2", + "64522527ef425b90c704b20b000c8feef0d1ca25", "testharness" ], "custom-elements/OWNERS": [ diff --git a/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html b/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html index 1ed625f63bb..cb6d5409962 100644 --- a/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html +++ b/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html @@ -27,6 +27,18 @@ test(function () { assert_throws({'name': 'TypeError'}, function () { new SomeCustomElement; }); }, 'HTMLElement constructor must throw TypeError when it has not been defined by customElements.define'); +test(function () { + class SomeCustomElement extends HTMLParagraphElement {}; + customElements.define('some-custom-element', SomeCustomElement); + assert_throws({'name': 'TypeError'}, function () { new SomeCustomElement(); }); +}, 'Custom element constructor must throw TypeError when it does not extend HTMLElement'); + +test(function () { + class SomeCustomButtonElement extends HTMLButtonElement {}; + customElements.define('some-custom-button-element', SomeCustomButtonElement, { extends: "p" }); + assert_throws({'name': 'TypeError'}, function () { new SomeCustomButtonElement(); }); +}, 'Custom element constructor must throw TypeError when it does not extend the proper element interface'); + test(function () { class CustomElementWithInferredTagName extends HTMLElement {}; customElements.define('inferred-name', CustomElementWithInferredTagName);