1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=835896
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 835896</title>
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
<script type="application/javascript" src="inspector-helpers.js"></script>
<script type="application/javascript">
"use strict";
window.onload = function() {
SimpleTest.waitForExplicitFinish();
let walkerFront = null;
let inspectorCommand = null;
// WalkerFront and Inspector Command specific tests. These aren't to exercise search
// edge cases so much as to test the state the Front maintains between
// searches.
addAsyncTest(async function setup() {
info("Setting up inspector and walker actors.");
const url = document.getElementById("inspectorContent").href;
const { commands } = await attachURL(url);
const target = commands.targetCommand.targetFront;
const inspector = await target.getFront("inspector");
walkerFront = inspector.walker;
inspectorCommand = commands.inspectorCommand;
runNextTest();
});
addAsyncTest(async function testWalkerFrontDefaults() {
info("Testing search API using WalkerFront and Inspector Command.");
const nodes = await walkerFront.querySelectorAll(walkerFront.rootNode, "h2");
const fronts = await nodes.items();
const commandResult = await inspectorCommand.findNextNode("");
ok(!commandResult, "Null result on front when searching for ''");
let results = await inspectorCommand.findNextNode("h2");
isDeeply(results, {
node: fronts[0],
resultsIndex: 0,
resultsLength: 3,
}, "Default options work");
results = await inspectorCommand.findNextNode("h2", { });
isDeeply(results, {
node: fronts[1],
resultsIndex: 1,
resultsLength: 3,
}, "Search works with empty options");
// Clear search data to remove result state on the front
await inspectorCommand.findNextNode("");
runNextTest();
});
addAsyncTest(async function testMultipleSearches() {
info("Testing search API using WalkerFront and Inspector Command (reverse=false)");
const nodes = await walkerFront.querySelectorAll(walkerFront.rootNode, "h2");
const fronts = await nodes.items();
let results = await inspectorCommand.findNextNode("h2");
isDeeply(results, {
node: fronts[0],
resultsIndex: 0,
resultsLength: 3,
}, "Search works with multiple results (reverse=false)");
results = await inspectorCommand.findNextNode("h2");
isDeeply(results, {
node: fronts[1],
resultsIndex: 1,
resultsLength: 3,
}, "Search works with multiple results (reverse=false)");
results = await inspectorCommand.findNextNode("h2");
isDeeply(results, {
node: fronts[2],
resultsIndex: 2,
resultsLength: 3,
}, "Search works with multiple results (reverse=false)");
results = await inspectorCommand.findNextNode("h2");
isDeeply(results, {
node: fronts[0],
resultsIndex: 0,
resultsLength: 3,
}, "Search works with multiple results (reverse=false)");
// Clear search data to remove result state on the front
await inspectorCommand.findNextNode("");
runNextTest();
});
addAsyncTest(async function testMultipleSearchesReverse() {
info("Testing search API using WalkerFront and Inspector Command (reverse=true)");
const nodes = await walkerFront.querySelectorAll(walkerFront.rootNode, "h2");
const fronts = await nodes.items();
let results = await inspectorCommand.findNextNode("h2", {reverse: true});
isDeeply(results, {
node: fronts[2],
resultsIndex: 2,
resultsLength: 3,
}, "Search works with multiple results (reverse=true)");
results = await inspectorCommand.findNextNode("h2", {reverse: true});
isDeeply(results, {
node: fronts[1],
resultsIndex: 1,
resultsLength: 3,
}, "Search works with multiple results (reverse=true)");
results = await inspectorCommand.findNextNode("h2", {reverse: true});
isDeeply(results, {
node: fronts[0],
resultsIndex: 0,
resultsLength: 3,
}, "Search works with multiple results (reverse=true)");
results = await inspectorCommand.findNextNode("h2", {reverse: true});
isDeeply(results, {
node: fronts[2],
resultsIndex: 2,
resultsLength: 3,
}, "Search works with multiple results (reverse=true)");
results = await inspectorCommand.findNextNode("h2", {reverse: false});
isDeeply(results, {
node: fronts[0],
resultsIndex: 0,
resultsLength: 3,
}, "Search works with multiple results (reverse=false)");
// Clear search data to remove result state on the command
await inspectorCommand.findNextNode("");
runNextTest();
});
runNextTest();
};
</script>
</head>
<body>
<a id="inspectorContent" target="_blank" href="inspector-search-data.html">Test Document</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
</body>
</html>
|