From 7de12065d0db89517f26bf8af13251ee4a4160db Mon Sep 17 00:00:00 2001 From: agamvrinos Date: Fri, 28 Feb 2020 16:41:45 +0000 Subject: [PATCH] Bug 1617540 - Add `hasPopupLabels` helpers for webconsole tests r=nchevobbe Differential Revision: https://phabricator.services.mozilla.com/D64476 --HG-- extra : moz-landing-system : lando --- ...wser_jsterm_autocomplete_array_no_index.js | 6 +-- ...wser_jsterm_autocomplete_cached_results.js | 25 +++++------ .../browser_jsterm_autocomplete_commands.js | 5 +-- ...sterm_autocomplete_expression_variables.js | 7 ++- ...owser_jsterm_autocomplete_getters_cache.js | 20 ++++----- ...ser_jsterm_autocomplete_getters_confirm.js | 14 +++--- ...erm_autocomplete_in_debugger_stackframe.js | 39 ++++++---------- ...browser_jsterm_autocomplete_inside_text.js | 7 +-- ...ser_jsterm_autocomplete_nav_and_tab_key.js | 8 +--- .../browser_jsterm_autocomplete_null.js | 5 +-- .../browser_jsterm_autocomplete_width.js | 5 +-- .../browser_jsterm_completion_bracket.js | 19 ++++---- ...sterm_completion_bracket_cached_results.js | 11 +++-- ...wser_jsterm_completion_case_sensitivity.js | 33 ++++++-------- ...ser_jsterm_completion_dollar_underscore.js | 15 +++---- .../browser_jsterm_completion_dollar_zero.js | 10 ++--- ...browser_jsterm_completion_perfect_match.js | 10 ++--- .../client/webconsole/test/browser/head.js | 44 +++++++++++++++++++ 18 files changed, 140 insertions(+), 143 deletions(-) diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_array_no_index.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_array_no_index.js index 0a0d40e7aab1..d506dc089dbe 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_array_no_index.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_array_no_index.js @@ -25,10 +25,8 @@ add_task(async function() { await onPopUpOpen; - const popupItems = getAutocompletePopupLabels(popup); - is( - popupItems.includes("0"), - false, + ok( + !hasPopupLabel(popup, "0"), "Completing on an array doesn't show numbers." ); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_cached_results.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_cached_results.js index bd024f887cc5..dff18c3f51ee 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_cached_results.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_cached_results.js @@ -36,7 +36,7 @@ add_task(async function() { EventUtils.synthesizeKey("d"); await onUpdated; ok( - !getAutocompletePopupLabels(popup).includes("docfoobar"), + !hasPopupLabel(popup, "docfoobar"), "autocomplete popup does not contain docfoobar. List has not been updated" ); @@ -45,7 +45,7 @@ add_task(async function() { EventUtils.synthesizeKey("o"); await onUpdated; ok( - !getAutocompletePopupLabels(popup).includes("docfoobar"), + !hasPopupLabel(popup, "docfoobar"), "autocomplete popup does not contain docfoobar. List has not been updated" ); @@ -54,7 +54,7 @@ add_task(async function() { EventUtils.synthesizeKey("KEY_Backspace"); await onUpdated; ok( - !getAutocompletePopupLabels(popup).includes("docfoobar"), + !hasPopupLabel(popup, "docfoobar"), "autocomplete cached results do not contain docfoobar. list has not been updated" ); @@ -66,7 +66,7 @@ add_task(async function() { await jstermComplete("window."); await jstermComplete("window.getC"); ok( - getAutocompletePopupLabels(popup).includes("getComputedStyle"), + hasPopupLabel(popup, "getComputedStyle"), "autocomplete results do contain getComputedStyle" ); @@ -92,7 +92,7 @@ add_task(async function() { await onUpdated; ok( - !getAutocompletePopupLabels(popup).includes("docfoobar"), + !hasPopupLabel(popup, "docfoobar"), "autocomplete cached results do not contain docfoobar. list has not been updated" ); @@ -108,27 +108,24 @@ add_task(async function() { ); await jstermComplete("window.testObject."); await jstermComplete("window.testObject.z"); - is( - getAutocompletePopupLabels(popup).join("-"), - "zz-zzz-zzzz", + ok( + hasExactPopupLabels(popup, ["zz", "zzz", "zzzz"]), "results are the expected ones" ); onUpdated = jsterm.once("autocomplete-updated"); EventUtils.sendString("z"); await onUpdated; - is( - getAutocompletePopupLabels(popup).join("-"), - "zz-zzz-zzzz", + ok( + hasExactPopupLabels(popup, ["zz", "zzz", "zzzz"]), "filtering from the cache works - step 1" ); onUpdated = jsterm.once("autocomplete-updated"); EventUtils.sendString("z"); await onUpdated; - is( - getAutocompletePopupLabels(popup).join("-"), - "zzz-zzzz", + ok( + hasExactPopupLabels(popup, ["zzz", "zzzz"]), "filtering from the cache works - step 2" ); }); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_commands.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_commands.js index e6a8073ef953..7b40027de51c 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_commands.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_commands.js @@ -21,9 +21,8 @@ add_task(async function() { await onPopUpOpen; const expectedCommands = [":help", ":screenshot"]; - is( - getAutocompletePopupLabels(autocompletePopup).join("\n"), - expectedCommands.join("\n"), + ok( + hasExactPopupLabels(autocompletePopup, expectedCommands), "popup contains expected commands" ); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_expression_variables.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_expression_variables.js index c1ac7ecdd60c..f921748f209f 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_expression_variables.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_expression_variables.js @@ -27,9 +27,8 @@ add_task(async function() { test` ); - is( - getAutocompletePopupLabels(autocompletePopup).join("\n"), - [ + ok( + hasExactPopupLabels(autocompletePopup, [ "testClass", "testConst", "testDeconstruct1", @@ -43,7 +42,7 @@ add_task(async function() { "testParamRest", "testParamRestFirst", "testVar", - ].join("\n"), + ]), "Autocomplete popup displays both global and local variables" ); }); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_cache.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_cache.js index 669e0333c218..759cd01fff56 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_cache.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_cache.js @@ -55,9 +55,8 @@ add_task(async function() { EventUtils.synthesizeKey("KEY_Tab"); await onPopUpOpen; ok(autocompletePopup.isOpen, "popup is open after Tab"); - is( - getAutocompletePopupLabels(autocompletePopup).join("-"), - "baz-bloop", + ok( + hasExactPopupLabels(autocompletePopup, ["baz", "bloop"]), "popup has expected items" ); checkInputValueAndCursorPosition(hud, "foo.bar.|"); @@ -74,9 +73,8 @@ add_task(async function() { onPopUpOpen = autocompletePopup.once("popup-opened"); EventUtils.synthesizeKey(" ", { ctrlKey: true }); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join("-"), - "baz-bloop", + ok( + hasExactPopupLabels(autocompletePopup, ["baz", "bloop"]), "popup has expected items" ); checkInputValueAndCursorPosition(hud, "foo.bar.|"); @@ -89,9 +87,8 @@ add_task(async function() { EventUtils.synthesizeKey(" "); await onAutocompleteUpdate; is(autocompletePopup.isOpen, true, "Autocomplete popup is still opened"); - is( - getAutocompletePopupLabels(autocompletePopup).join("-"), - "baz-bloop", + ok( + hasExactPopupLabels(autocompletePopup, ["baz", "bloop"]), "popup has expected items" ); @@ -99,9 +96,8 @@ add_task(async function() { EventUtils.synthesizeKey("KEY_Backspace"); await onAutocompleteUpdate; is(autocompletePopup.isOpen, true, "Autocomplete popup is still opened"); - is( - getAutocompletePopupLabels(autocompletePopup).join("-"), - "baz-bloop", + ok( + hasExactPopupLabels(autocompletePopup, ["baz", "bloop"]), "popup has expected items" ); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_confirm.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_confirm.js index d8d5bfd5dd77..82aafeb8ccdc 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_confirm.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_getters_confirm.js @@ -60,9 +60,8 @@ add_task(async function() { EventUtils.synthesizeKey("KEY_Tab"); await onPopUpOpen; ok(autocompletePopup.isOpen, "popup is open after Tab"); - is( - getAutocompletePopupLabels(autocompletePopup).join("-"), - "baz-bloop", + ok( + hasExactPopupLabels(autocompletePopup, ["baz", "bloop"]), "popup has expected items" ); checkInputValueAndCursorPosition(hud, "window.foo.bar.|"); @@ -94,9 +93,8 @@ add_task(async function() { EventUtils.synthesizeKey("KEY_Tab"); await onPopUpOpen; ok(autocompletePopup.isOpen, "popup is open after Tab"); - is( - getAutocompletePopupLabels(autocompletePopup).join("-"), - `"hello"-"world"`, + ok( + hasExactPopupLabels(autocompletePopup, [`"hello"`, `"world"`]), "popup has expected items" ); checkInputValueAndCursorPosition(hud, "window.foo.bar.baz[|"); @@ -113,7 +111,7 @@ add_task(async function() { await onPopUpOpen; ok(autocompletePopup.isOpen, "got items of getter result"); ok( - getAutocompletePopupLabels(autocompletePopup).includes("toExponential"), + hasPopupLabel(autocompletePopup, "toExponential"), "popup has expected items" ); @@ -140,7 +138,7 @@ add_task(async function() { "popup is open after clicking on the confirm button" ); ok( - getAutocompletePopupLabels(autocompletePopup).includes("startsWith"), + hasPopupLabel(autocompletePopup, "startsWith"), "popup has expected items" ); checkInputValueAndCursorPosition(hud, "window.foo.rab.|"); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_in_debugger_stackframe.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_in_debugger_stackframe.js index e61b0f98b06e..28b67501b730 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_in_debugger_stackframe.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_in_debugger_stackframe.js @@ -37,25 +37,23 @@ add_task(async function() { // Test if 'foo' gives 'foo1' but not 'foo2' or 'foo3' await jstermComplete("foo"); - is( - getAutocompletePopupLabels(popup).join("-"), - "foo1-foo1Obj", + ok( + hasExactPopupLabels(popup, ["foo1", "foo1Obj"]), `"foo" gave the expected suggestions` ); // Test if 'foo1Obj.' gives 'prop1' and 'prop2' await jstermComplete("foo1Obj."); checkInputCompletionValue(hud, "prop1", "foo1Obj completion"); - is( - getAutocompletePopupLabels(popup).join("-"), - "prop1-prop2", + ok( + hasExactPopupLabels(popup, ["prop1", "prop2"]), `"foo1Obj." gave the expected suggestions` ); // Test if 'foo1Obj.prop2.' gives 'prop21' await jstermComplete("foo1Obj.prop2."); ok( - getAutocompletePopupLabels(popup).includes("prop21"), + hasPopupLabel(popup, "prop21"), `"foo1Obj.prop2." gave the expected suggestions` ); @@ -73,10 +71,9 @@ add_task(async function() { // Test if 'foo' gives 'foo3' and 'foo1' but not 'foo2', since we are paused in // the `secondCall` function (called by `firstCall`, which we call in `pauseDebugger`). await jstermComplete("foo"); - is( - getAutocompletePopupLabels(popup).join("-"), - "foo1-foo1Obj-foo3-foo3Obj", - `"foo" gave the expected suggestions` + ok( + hasExactPopupLabels(popup, ["foo1", "foo1Obj", "foo3", "foo3Obj"]), + `"foo." gave the expected suggestions` ); await openDebugger(); @@ -90,32 +87,22 @@ add_task(async function() { // Test if 'foo' gives 'foo2' and 'foo1' but not 'foo3', since we are now in the // `firstCall` frame. await jstermComplete("foo"); - is( - getAutocompletePopupLabels(popup).join("-"), - "foo1-foo1Obj-foo2-foo2Obj", + ok( + hasExactPopupLabels(popup, ["foo1", "foo1Obj", "foo2", "foo2Obj"]), `"foo" gave the expected suggestions` ); // Test if 'foo2Obj.' gives 'prop1' await jstermComplete("foo2Obj."); - ok( - getAutocompletePopupLabels(popup).includes("prop1"), - `"foo2Obj." returns "prop1"` - ); + ok(hasPopupLabel(popup, "prop1"), `"foo2Obj." returns "prop1"`); // Test if 'foo2Obj.prop1.' gives 'prop11' await jstermComplete("foo2Obj.prop1."); - ok( - getAutocompletePopupLabels(popup).includes("prop11"), - `"foo2Obj.prop1" returns "prop11"` - ); + ok(hasPopupLabel(popup, "prop11"), `"foo2Obj.prop1" returns "prop11"`); // Test if 'foo2Obj.prop1.prop11.' gives suggestions for a string,i.e. 'length' await jstermComplete("foo2Obj.prop1.prop11."); - ok( - getAutocompletePopupLabels(popup).includes("length"), - `results do contain "length"` - ); + ok(hasPopupLabel(popup, "length"), `results do contain "length"`); // Test if 'foo2Obj[0].' throws no errors. await jstermComplete("foo2Obj[0]."); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_inside_text.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_inside_text.js index dac7f646b9af..6946482b6127 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_inside_text.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_inside_text.js @@ -50,11 +50,8 @@ add_task(async function() { is(popup.selectedIndex, 1, "popup.selectedIndex is correct"); ok(!getInputCompletionValue(hud), "completeNode.value is empty"); - const items = getAutocompletePopupLabels(popup); - const expectedItems = ["testBugAA", "testBugBB"]; - is( - items.join("-"), - expectedItems.join("-"), + ok( + hasExactPopupLabels(popup, ["testBugAA", "testBugBB"]), "getItems returns the items we expect" ); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_nav_and_tab_key.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_nav_and_tab_key.js index 4b6553fb21dc..92ce7a905f65 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_nav_and_tab_key.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_nav_and_tab_key.js @@ -39,13 +39,9 @@ add_task(async function() { ok(popup.isOpen, "popup is open"); - const popupItems = getAutocompletePopupLabels(popup); const expectedPopupItems = ["item00", "item1", "item2", "item3"]; - - is(popup.itemCount, expectedPopupItems.length, "popup.itemCount is correct"); - is( - popupItems.join("-"), - expectedPopupItems.join("-"), + ok( + hasExactPopupLabels(popup, expectedPopupItems), "getItems returns the items we expect" ); is(popup.selectedIndex, 0, "Index of the first item is selected."); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js index 000fb4aabd6b..dc800d842a03 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js @@ -28,9 +28,8 @@ add_task(async function() { await onPopUpOpen; ok(popup.isOpen, "popup is open"); const expectedPopupItems = ["null", "nullVar"]; - is( - getAutocompletePopupLabels(popup).join("-"), - expectedPopupItems.join("-"), + ok( + hasExactPopupLabels(popup, expectedPopupItems), "popup has expected items" ); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_width.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_width.js index baa9d77e5edc..bf029c697534 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_width.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_width.js @@ -30,9 +30,8 @@ add_task(async function() { ok(popup.isOpen, "popup is open"); const expectedPopupItems = ["xx", "xxx"]; - is( - getAutocompletePopupLabels(popup).join("-"), - expectedPopupItems.join("-"), + ok( + hasExactPopupLabels(popup, expectedPopupItems), "popup has expected items" ); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket.js b/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket.js index 9cf48f9ce68b..aa07c0e4f2cd 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket.js @@ -146,9 +146,8 @@ async function testInput( EventUtils.sendString(input); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join("|"), - expectedItems.join("|"), + ok( + hasExactPopupLabels(autocompletePopup, expectedItems), `${description} - popup has expected item, in expected order` ); checkInputCompletionValue( @@ -183,9 +182,12 @@ async function testCompletionTextUpdateOnPopupNavigate(hud) { EventUtils.sendString(input); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join("|"), - `"data-test"|"dataTest"|"DATA-TEST"`, + ok( + hasExactPopupLabels(autocompletePopup, [ + `"data-test"`, + `"dataTest"`, + `"DATA-TEST"`, + ]), `popup has expected items, in expected order` ); checkInputCompletionValue(hud, `-test"]`, `completeNode has expected value`); @@ -218,9 +220,8 @@ async function testAcceptCompletionExistingClosingBracket(hud) { const onPopUpOpen = autocompletePopup.once("popup-opened"); EventUtils.sendString("b"); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join("|"), - `"bar"`, + ok( + hasExactPopupLabels(autocompletePopup, [`"bar"`]), `popup has expected item` ); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket_cached_results.js b/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket_cached_results.js index 39bc4252a261..4341a9018c2f 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket_cached_results.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_completion_bracket_cached_results.js @@ -92,11 +92,11 @@ add_task(async function() { EventUtils.sendString(test.initialInput); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join("|"), - test.expectedItems.join("|"), + ok( + hasExactPopupLabels(autocompletePopup, test.expectedItems), `popup has expected items, in expected order` ); + checkInputCompletionValue( hud, test.expectedCompletionText, @@ -111,9 +111,8 @@ add_task(async function() { EventUtils.sendString(char); await onPopupUpdate; - is( - getAutocompletePopupLabels(autocompletePopup).join("|"), - expectedItems.join("|"), + ok( + hasExactPopupLabels(autocompletePopup, expectedItems), `popup has expected items, in expected order` ); checkInputCompletionValue( diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_completion_case_sensitivity.js b/devtools/client/webconsole/test/browser/browser_jsterm_completion_case_sensitivity.js index 96c7fd89128b..ecb7705d7763 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_completion_case_sensitivity.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_completion_case_sensitivity.js @@ -29,11 +29,11 @@ add_task(async function() { EventUtils.sendString("foob"); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "fooBar - FooBar", + ok( + hasExactPopupLabels(autocompletePopup, ["fooBar", "FooBar"]), "popup has expected item, in expected order" ); + checkInputCompletionValue(hud, "ar", "completeNode has expected value"); info("Check that filtering the autocomplete cache is also case insensitive"); @@ -43,9 +43,8 @@ add_task(async function() { await onAutoCompleteUpdated; checkInput("fooba|"); - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "fooBar - FooBar", + ok( + hasExactPopupLabels(autocompletePopup, ["fooBar", "FooBar"]), "popup cache filtering is also case-insensitive" ); checkInputCompletionValue(hud, "r", "completeNode has expected value"); @@ -68,9 +67,8 @@ add_task(async function() { // to display the popup so the user knows that we are matching "Foo" and not "foo". checkInput("fooBar.f|"); ok(true, "The popup was opened even if there's 1 item matching"); - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "Foo", + ok( + hasExactPopupLabels(autocompletePopup, ["Foo"]), "popup has expected item" ); checkInputCompletionValue(hud, "oo", "completeNode has expected value"); @@ -88,9 +86,8 @@ add_task(async function() { EventUtils.sendString("func"); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "function - Function", + ok( + hasExactPopupLabels(autocompletePopup, ["function", "Function"]), "popup has expected item" ); checkInputCompletionValue(hud, "tion", "completeNode has expected value"); @@ -107,18 +104,16 @@ add_task(async function() { onPopUpOpen = autocompletePopup.once("popup-opened"); EventUtils.sendString("fooBar."); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "test - Foo - Test - TEST", - "popup has expected items" + ok( + hasExactPopupLabels(autocompletePopup, ["test", "Foo", "Test", "TEST"]), + "popup has expected item" ); onAutoCompleteUpdated = jsterm.once("autocomplete-updated"); EventUtils.sendString("T"); await onAutoCompleteUpdated; - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "Test - TEST", + ok( + hasExactPopupLabels(autocompletePopup, ["Test", "TEST"]), "popup was filtered case-sensitively, as expected" ); }); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_underscore.js b/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_underscore.js index 9d642f27bdab..4c713f607e3b 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_underscore.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_underscore.js @@ -32,26 +32,23 @@ add_task(async function() { await setInputValueForAutocompletion(hud, "$_."); checkInputCompletionValue(hud, "x", "'$_.' completion (completeNode)"); - is( - getAutocompletePopupLabels(autocompletePopup).join("|"), - "x|y", + ok( + hasExactPopupLabels(autocompletePopup, ["x", "y"]), "autocomplete popup has expected items" ); is(autocompletePopup.isOpen, true, "autocomplete popup is open"); await setInputValueForAutocompletion(hud, "$_.x."); is(autocompletePopup.isOpen, true, "autocomplete popup is open"); - is( - getAutocompletePopupLabels(autocompletePopup).includes("toExponential"), - true, + ok( + hasPopupLabel(autocompletePopup, "toExponential"), "autocomplete popup has expected items" ); await setInputValueForAutocompletion(hud, "$_.y."); is(autocompletePopup.isOpen, true, "autocomplete popup is open"); - is( - getAutocompletePopupLabels(autocompletePopup).includes("trim"), - true, + ok( + hasPopupLabel(autocompletePopup, "trim"), "autocomplete popup has expected items" ); }); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_zero.js b/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_zero.js index aa4433a1e185..f994c6f2572a 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_zero.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_completion_dollar_zero.js @@ -31,18 +31,16 @@ add_task(async function() { const { autocompletePopup } = jsterm; await setInputValueForAutocompletion(hud, "$0."); - is( - getAutocompletePopupLabels(autocompletePopup).includes("attributes"), - true, + ok( + hasPopupLabel(autocompletePopup, "attributes"), "autocomplete popup has expected items" ); is(autocompletePopup.isOpen, true, "autocomplete popup is open"); await setInputValueForAutocompletion(hud, "$0.attributes."); is(autocompletePopup.isOpen, true, "autocomplete popup is open"); - is( - getAutocompletePopupLabels(autocompletePopup).includes("getNamedItem"), - true, + ok( + hasPopupLabel(autocompletePopup, "getNamedItem"), "autocomplete popup has expected items" ); }); diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_completion_perfect_match.js b/devtools/client/webconsole/test/browser/browser_jsterm_completion_perfect_match.js index 88b8050cea9f..128a88847a0f 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_completion_perfect_match.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_completion_perfect_match.js @@ -24,18 +24,16 @@ add_task(async function() { const onPopUpOpen = autocompletePopup.once("popup-opened"); EventUtils.sendString("x."); await onPopUpOpen; - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "foo - foO - fOo - fOO", + ok( + hasExactPopupLabels(autocompletePopup, ["foo", "foO", "fOo", "fOO"]), "popup has expected item, in expected order" ); const onAutoCompleteUpdated = jsterm.once("autocomplete-updated"); EventUtils.sendString("foO"); await onAutoCompleteUpdated; - is( - getAutocompletePopupLabels(autocompletePopup).join(" - "), - "foO - foo - fOo - fOO", + ok( + hasExactPopupLabels(autocompletePopup, ["foO", "foo", "fOo", "fOO"]), "popup has expected item, in expected order" ); }); diff --git a/devtools/client/webconsole/test/browser/head.js b/devtools/client/webconsole/test/browser/head.js index cb6b5afb9207..b787ae6360f9 100644 --- a/devtools/client/webconsole/test/browser/head.js +++ b/devtools/client/webconsole/test/browser/head.js @@ -1334,6 +1334,50 @@ function getAutocompletePopupLabels(popup) { return popup.getItems().map(item => item.label); } +/** + * Check if the retrieved list of autocomplete labels of the specific popup + * includes all of the expected labels. + * + * @param {AutocompletPopup} popup + * @param {Array} expected the array of expected labels + */ +function hasExactPopupLabels(popup, expected) { + return hasPopupLabels(popup, expected, true); +} + +/** + * Check if the expected label is included in the list of autocomplete labels + * of the specific popup. + * + * @param {AutocompletPopup} popup + * @param {String} label the label to check + */ +function hasPopupLabel(popup, label) { + return hasPopupLabels(popup, [label]); +} + +/** + * Validate the expected labels against the autocomplete labels. + * + * @param {AutocompletPopup} popup + * @param {Array} expectedLabels + * @param {Boolean} checkAll + */ +function hasPopupLabels(popup, expectedLabels, checkAll = false) { + const autocompleteLabels = getAutocompletePopupLabels(popup); + if (checkAll) { + return ( + autocompleteLabels.length === expectedLabels.length && + autocompleteLabels.every((autoLabel, idx) => { + return expectedLabels.indexOf(autoLabel) === idx; + }) + ); + } + return expectedLabels.every(expectedLabel => { + return autocompleteLabels.includes(expectedLabel); + }); +} + /** * Return the "Confirm Dialog" element. *