
PASS CustomElementRegistry interface must have define as a method 
PASS customElements.define must throw when the element interface is not a constructor 
PASS customElements.define must not throw the constructor is HTMLElement 
PASS customElements.define must throw with an invalid name 
PASS customElements.define must throw when there is already a custom element of the same name 
PASS customElements.define must throw a NotSupportedError when there is already a custom element with the same class 
PASS customElements.define must throw a NotSupportedError when element definition is running flag is set 
PASS customElements.define must check IsConstructor on the constructor before checking the element definition is running flag 
PASS customElements.define must validate the custom element name before checking the element definition is running flag 
PASS customElements.define unset the element definition is running flag before upgrading custom elements 
PASS customElements.define must not throw when defining another custom element in a different global object during Get(constructor, "prototype") 
PASS Custom Elements: CustomElementRegistry interface 
PASS customElements.define must get "prototype" property of the constructor 
PASS customElements.define must rethrow an exception thrown while getting "prototype" property of the constructor 
PASS customElements.define must throw when "prototype" property of the constructor is not an object 
PASS customElements.define must get callbacks of the constructor prototype 
PASS customElements.define must rethrow an exception thrown while getting callbacks on the constructor prototype 
PASS customElements.define must rethrow an exception thrown while converting a callback value to Function callback type 
PASS customElements.define must get "observedAttributes" property on the constructor prototype when "attributeChangedCallback" is present 
PASS customElements.define must rethrow an exception thrown while getting observedAttributes on the constructor prototype 
PASS customElements.define must rethrow an exception thrown while converting the value of observedAttributes to sequence<DOMString> 
PASS customElements.define must rethrow an exception thrown while iterating over observedAttributes to sequence<DOMString> 
PASS customElements.define must rethrow an exception thrown while retrieving Symbol.iterator on observedAttributes 
PASS customElements.define must not throw even if "observedAttributes" fails to convert if "attributeChangedCallback" is not defined 
PASS customElements.define must define an instantiatable custom element 
PASS customElements.define must upgrade elements in the shadow-including tree order 
PASS CustomElementRegistry interface must have get as a method 
PASS customElements.get must return undefined when the registry does not contain an entry with the given name 
PASS customElements.get must return undefined when the registry does not contain an entry with the given name even if the name was not a valid custom element name 
PASS customElements.get return the constructor of the entry with the given name when there is a matching entry. 
PASS customElements.whenDefined must return a promise for a valid custom element name 
PASS customElements.whenDefined must return the same promise each time invoked for a valid custom element name which has not been defined 
PASS customElements.whenDefined must return an unresolved promise when the registry does not contain the entry with the given name 
PASS customElements.whenDefined must return a rejected promise when the given name is not a valid custom element name 
PASS customElements.whenDefined must return a resolved promise when the registry contains the entry with the given name 
PASS customElements.whenDefined must return a new resolved promise each time invoked when the registry contains the entry with the given name 
PASS A promise returned by customElements.whenDefined must be resolved by "define" 

