diff options
Diffstat (limited to 'devtools/client/scratchpad/test/browser_scratchpad_autocomplete.js')
-rw-r--r-- | devtools/client/scratchpad/test/browser_scratchpad_autocomplete.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/devtools/client/scratchpad/test/browser_scratchpad_autocomplete.js b/devtools/client/scratchpad/test/browser_scratchpad_autocomplete.js new file mode 100644 index 000000000..3a6eef8b4 --- /dev/null +++ b/devtools/client/scratchpad/test/browser_scratchpad_autocomplete.js @@ -0,0 +1,66 @@ +/* vim: set ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +/* Bug 968896 */ + +// Test the completions using numbers. +const source = "0x1."; +const completions = ["toExponential", "toFixed", "toString"]; +const { Task } = require("devtools/shared/task"); + +function test() { + const options = { tabContent: "test scratchpad autocomplete" }; + openTabAndScratchpad(options) + .then(Task.async(runTests)) + .then(finish, console.error); +} + + +function* runTests([win, sp]) { + const {editor} = sp; + const editorWin = editor.container.contentWindow; + + // Show the completions popup. + sp.setText(source); + sp.editor.setCursor({ line: 0, ch: source.length }); + yield keyOnce("suggestion-entered", " ", { ctrlKey: true }); + + // Get the hints popup container. + const hints = editorWin.document.querySelector(".CodeMirror-hints"); + + ok(hints, + "The hint container should exist."); + is(hints.childNodes.length, 3, + "The hint container should have the completions."); + + let i = 0; + for (let completion of completions) { + let active = hints.querySelector(".CodeMirror-hint-active"); + is(active.textContent, completion, + "Check that completion " + i++ + " is what is expected."); + yield keyOnce("suggestion-entered", "VK_DOWN"); + } + + // We should have looped around to the first suggestion again. Accept it. + yield keyOnce("after-suggest", "VK_RETURN"); + + is(sp.getText(), source + completions[0], + "Autocompletion should work and select the right element."); + + // Check that the information tooltips work. + sp.setText("5"); + yield keyOnce("show-information", " ", { ctrlKey: true, shiftKey: true }); + + // Get the information container. + const info = editorWin.document.querySelector(".CodeMirror-Tern-information"); + ok(info, + "Info tooltip should appear."); + is(info.textContent.slice(0, 6), "number", + "Info tooltip should have expected contents."); + + function keyOnce(event, key, opts = {}) { + const p = editor.once(event); + EventUtils.synthesizeKey(key, opts, editorWin); + return p; + } +} |