diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js new file mode 100644 index 0000000000..a98a2495c4 --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_jsterm_autocomplete_null.js @@ -0,0 +1,71 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +add_task(async function () { + await pushPref("devtools.chrome.enabled", true); + await addTab("about:blank"); + + info(`Open browser console with ctrl-shift-j`); + // we're using the browser console so we can check for error messages that would be + // caused by console code. + const opened = waitForBrowserConsole(); + EventUtils.synthesizeKey("j", { accelKey: true, shiftKey: true }, window); + const hud = await opened; + const { jsterm } = hud; + const { autocompletePopup: popup } = jsterm; + + info(`Clear existing messages`); + const onMessagesCleared = hud.ui.once("messages-cleared"); + await clearOutput(hud); + await onMessagesCleared; + + info(`Create a null variable`); + // Using the commands directly as we don't want to impact the UI state. + await hud.commands.scriptCommand.execute("globalThis.nullVar = null"); + + info(`Check completion suggestions for "null"`); + await setInputValueForAutocompletion(hud, "null"); + ok(popup.isOpen, "popup is open"); + const expectedPopupItems = ["null", "nullVar"]; + ok( + hasExactPopupLabels(popup, expectedPopupItems), + "popup has expected items" + ); + + info(`Check completion suggestions for "null."`); + let onAutocompleteUpdated = jsterm.once("autocomplete-updated"); + EventUtils.sendString(".", hud.iframeWindow); + await onAutocompleteUpdated; + is(popup.itemCount, 0, "popup has no items"); + + info(`Check completion suggestions for "null"`); + onAutocompleteUpdated = jsterm.once("autocomplete-updated"); + EventUtils.synthesizeKey("KEY_Backspace", undefined, hud.iframeWindow); + await onAutocompleteUpdated; + is(popup.itemCount, 2, "popup has 2 items"); + + info(`Check completion suggestions for "nullVar"`); + onAutocompleteUpdated = jsterm.once("autocomplete-updated"); + EventUtils.sendString("Var.", hud.iframeWindow); + await onAutocompleteUpdated; + is(popup.itemCount, 0, "popup has no items"); + is(popup.isOpen, false, "popup is closed"); + + info(`Check that no error was logged`); + await waitFor(() => findErrorMessage(hud, "", ":not(.network)")).then( + message => { + ok(false, `Got error ${JSON.stringify(message.textContent)}`); + }, + error => { + if (!error.message.includes("Failed waitFor")) { + throw error; + } + ok(true, `No error was logged`); + } + ); + + info(`Cleanup`); + await hud.commands.scriptCommand.execute("delete globalThis.nullVar"); +}); |