Test that template contents are cloned when the template element is imported via importNode

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


importedOuterTemplate = anotherDocument.importNode(outerTemplate, true)
PASS outerTemplate.ownerDocument is document
PASS importedOuterTemplate.ownerDocument is anotherDocument
PASS importedOuterTemplate.content is not outerTemplate.content
PASS importedOuterTemplate.content.childNodes.length is 1
innerTemplate = outerTemplate.content.firstChild
importedInnerTemplate = importedOuterTemplate.content.firstChild
PASS importedInnerTemplate.outerHTML is innerTemplate.outerHTML
PASS innerTemplate.ownerDocument is not importedInnerTemplate.ownerDocument
PASS importedInnerTemplate.content is not innerTemplate.content
PASS innerTemplate.content.childNodes.length is 1
PASS importedInnerTemplate.content.childNodes.length is 1
PASS innerTemplate.content.firstChild.outerHTML is importedInnerTemplate.content.firstChild.outerHTML
PASS successfullyParsed is true

TEST COMPLETE

