browser_jsterm_helper_dollar_x.js (3918B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const TEST_URI = `data:text/html,<!DOCTYPE html> 7 <main> 8 <ul> 9 <li>First</li> 10 <li>Second</li> 11 </ul> 12 <aside>Sidebar</aside> 13 </main> 14 `; 15 16 add_task(async function () { 17 const hud = await openNewTabAndConsole(TEST_URI); 18 19 // Place the mouse on the top left corner to avoid triggering an highlighter request 20 // to the server. See Bug 1531572. 21 EventUtils.synthesizeMouse( 22 hud.ui.outputNode, 23 0, 24 0, 25 { type: "mousemove" }, 26 hud.iframeWindow 27 ); 28 29 let message = await executeAndWaitForResultMessage( 30 hud, 31 "$x('.//li')", 32 "Array [ li, li ]" 33 ); 34 ok(message, "`$x` worked"); 35 36 message = await executeAndWaitForResultMessage( 37 hud, 38 "$x('.//li', document.body)[0]", 39 "<li>" 40 ); 41 ok(message, "`$x()` result can be used right away"); 42 43 message = await executeAndWaitForResultMessage( 44 hud, 45 "$x('count(.//li)', document.body, XPathResult.NUMBER_TYPE)", 46 "2" 47 ); 48 ok(message, "$x works as expected with XPathResult.NUMBER_TYPE"); 49 50 message = await executeAndWaitForResultMessage( 51 hud, 52 "$x('count(.//li)', document.body, 'number')", 53 "2" 54 ); 55 ok(message, "$x works as expected number type"); 56 57 message = await executeAndWaitForResultMessage( 58 hud, 59 "$x('.//li', document.body, XPathResult.STRING_TYPE)", 60 "First" 61 ); 62 ok(message, "$x works as expected with XPathResult.STRING_TYPE"); 63 64 message = await executeAndWaitForResultMessage( 65 hud, 66 "$x('.//li', document.body, 'string')", 67 "First" 68 ); 69 ok(message, "$x works as expected with string type"); 70 71 message = await executeAndWaitForResultMessage( 72 hud, 73 "$x('//li[not(@foo)]', document.body, XPathResult.BOOLEAN_TYPE)", 74 "true" 75 ); 76 ok(message, "$x works as expected with XPathResult.BOOLEAN_TYPE"); 77 78 message = await executeAndWaitForResultMessage( 79 hud, 80 "$x('//li[not(@foo)]', document.body, 'bool')", 81 "true" 82 ); 83 ok(message, "$x works as expected with bool type"); 84 85 message = await executeAndWaitForResultMessage( 86 hud, 87 "$x('.//li', document.body, XPathResult.UNORDERED_NODE_ITERATOR_TYPE)", 88 "Array [ li, li ]" 89 ); 90 ok( 91 message, 92 "$x works as expected with XPathResult.UNORDERED_NODE_ITERATOR_TYPE" 93 ); 94 95 message = await executeAndWaitForResultMessage( 96 hud, 97 "$x('.//li', document.body, 'nodes')", 98 "Array [ li, li ]" 99 ); 100 ok(message, "$x works as expected with nodes type"); 101 102 message = await executeAndWaitForResultMessage( 103 hud, 104 "$x('.//li', document.body, XPathResult.ORDERED_NODE_ITERATOR_TYPE)", 105 "Array [ li, li ]" 106 ); 107 ok( 108 message, 109 "$x works as expected with XPathResult.ORDERED_NODE_ITERATOR_TYPE" 110 ); 111 112 message = await executeAndWaitForResultMessage( 113 hud, 114 "$x('.//li', document.body, XPathResult.ANY_UNORDERED_NODE_TYPE)", 115 "<li>" 116 ); 117 ok(message, "$x works as expected with XPathResult.ANY_UNORDERED_NODE_TYPE"); 118 119 message = await executeAndWaitForResultMessage( 120 hud, 121 "$x('.//li', document.body, XPathResult.FIRST_ORDERED_NODE_TYPE)", 122 "<li>" 123 ); 124 ok(message, "$x works as expected with XPathResult.FIRST_ORDERED_NODE_TYPE"); 125 126 message = await executeAndWaitForResultMessage( 127 hud, 128 "$x('.//li', document.body, 'node')", 129 "<li>" 130 ); 131 ok(message, "$x works as expected with node type"); 132 133 message = await executeAndWaitForResultMessage( 134 hud, 135 "$x('.//li', document.body, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE)", 136 "Array [ li, li ]" 137 ); 138 ok( 139 message, 140 "$x works as expected with XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE" 141 ); 142 143 message = await executeAndWaitForResultMessage( 144 hud, 145 "$x('.//li', document.body, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE)", 146 "Array [ li, li ]" 147 ); 148 ok( 149 message, 150 "$x works as expected with XPathResult.ORDERED_NODE_SNAPSHOT_TYPE" 151 ); 152 });