diff options
Diffstat (limited to 'testing/web-platform/tests/dom/nodes/Element-matches.html')
-rw-r--r-- | testing/web-platform/tests/dom/nodes/Element-matches.html | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/testing/web-platform/tests/dom/nodes/Element-matches.html b/testing/web-platform/tests/dom/nodes/Element-matches.html new file mode 100644 index 000000000..e04c0f9d1 --- /dev/null +++ b/testing/web-platform/tests/dom/nodes/Element-matches.html @@ -0,0 +1,87 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>Selectors-API Level 2 Test Suite: HTML with Selectors Level 3</title> +<!-- Selectors API Test Suite Version 3 --> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/dom/nodes/selectors.js"></script> +<script src="/dom/nodes/ParentNode-querySelector-All.js"></script> +<script src="Element-matches.js"></script> +<style>iframe { visibility: hidden; position: absolute; }</style> + +<div id="log">This test requires JavaScript.</div> + +<script> +async_test(function() { + var frame = document.createElement("iframe"); + frame.onload = this.step_func_done(init); + frame.src = "/dom/nodes/ParentNode-querySelector-All-content.html#target"; + document.body.appendChild(frame); +}); + +function init(e) { + /* + * This test suite tests Selectors API methods in 4 different contexts: + * 1. Document node + * 2. In-document Element node + * 3. Detached Element node (an element with no parent, not in the document) + * 4. Document Fragment node + * + * For each context, the following tests are run: + * + * The interface check tests ensure that each type of node exposes the Selectors API methods. + * + * The matches() tests are run + * All the selectors tested for both the valid and invalid selector tests are found in selectors.js. + * See comments in that file for documentation of the format used. + * + * The level2-lib.js file contains all the common test functions for running each of the aforementioned tests + */ + + var docType = "html"; // Only run tests suitable for HTML + + // Prepare the nodes for testing + var doc = e.target.contentDocument; // Document Node tests + + var element = doc.getElementById("root"); // In-document Element Node tests + + //Setup the namespace tests + setupSpecialElements(doc, element); + + var outOfScope = element.cloneNode(true); // Append this to the body before running the in-document + // Element tests, but after running the Document tests. This + // tests that no elements that are not descendants of element + // are selected. + + traverse(outOfScope, function(elem) { // Annotate each element as being a clone; used for verifying + elem.setAttribute("data-clone", ""); // that none of these elements ever match. + }); + + + var detached = element.cloneNode(true); // Detached Element Node tests + + var fragment = doc.createDocumentFragment(); // Fragment Node tests + fragment.appendChild(element.cloneNode(true)); + + // Setup Tests + interfaceCheckMatches("Document", doc); + interfaceCheckMatches("Detached Element", detached); + interfaceCheckMatches("Fragment", fragment); + interfaceCheckMatches("In-document Element", element); + + runSpecialMatchesTests("DIV Element", element); + runSpecialMatchesTests("NULL Element", document.createElement("null")); + runSpecialMatchesTests("UNDEFINED Element", document.createElement("undefined")); + + runInvalidSelectorTestMatches("Document", doc, invalidSelectors); + runInvalidSelectorTestMatches("Detached Element", detached, invalidSelectors); + runInvalidSelectorTestMatches("Fragment", fragment, invalidSelectors); + runInvalidSelectorTestMatches("In-document Element", element, invalidSelectors); + + runMatchesTest("In-document", doc, validSelectors, "html"); + runMatchesTest("Detached", detached, validSelectors, "html"); + runMatchesTest("Fragment", fragment, validSelectors, "html"); + + runMatchesTest("In-document", doc, scopedSelectors, "html"); +} +</script> |