Test steps 4 and 5 of the HTMLConstructor

This commit is contained in:
Connor Brewster 2017-06-13 15:01:34 -06:00
parent 1f3fd77d8f
commit 81e28a2b5f
2 changed files with 13 additions and 1 deletions

View file

@ -554120,7 +554120,7 @@
"testharness"
],
"custom-elements/HTMLElement-constructor.html": [
"7fefdaa4cbdf30c505858730a5a3858e9db5dbc2",
"64522527ef425b90c704b20b000c8feef0d1ca25",
"testharness"
],
"custom-elements/OWNERS": [

View file

@ -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);