
PASS HTMLSlotElement must be defined on window 
PASS "name" attribute on HTMLSlotElement must reflect "name" attribute 
PASS assignedNodes() on a HTMLSlotElement must return an empty array when the slot element is not in a tree or in a document tree 
PASS assignedNodes({"flattened":false}) on a HTMLSlotElement must return an empty array when the slot element is not in a tree or in a document tree 
PASS assignedNodes({"flattened":true}) on a HTMLSlotElement must return an empty array when the slot element is not in a tree or in a document tree 
PASS assignedNodes() must return the list of assigned nodes when none of the assigned nodes themselves are slots 
PASS assignedNodes({"flattened":false}) must return the list of assigned nodes when none of the assigned nodes themselves are slots 
PASS assignedNodes({"flattened":true}) must return the list of assigned nodes when none of the assigned nodes themselves are slots 
PASS assignedNodes() must update when slot and name attributes are modified 
PASS assignedNodes({"flattened":false}) must update when slot and name attributes are modified 
PASS assignedNodes({"flattened":true}) must update when slot and name attributes are modified 
PASS assignedNodes() must update when a default slot is introduced dynamically by a slot rename 
PASS assignedNodes({"flattened":false}) must update when a default slot is introduced dynamically by a slot rename 
PASS assignedNodes({"flattened":true}) must update when a default slot is introduced dynamically by a slot rename 
PASS assignedNodes() must update when slot elements are inserted or removed 
PASS assignedNodes({"flattened":false}) must update when slot elements are inserted or removed 
PASS assignedNodes({"flattened":true}) must update when slot elements are inserted or removed 
PASS assignedNodes({flatten: true}) must return the distributed nodes, and assignedNodes() and assignedNodes({flatten: false}) must returned the assigned nodes 

