diff options
Diffstat (limited to 'devtools/client/webide/test/browser_tabs.js')
-rw-r--r-- | devtools/client/webide/test/browser_tabs.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/devtools/client/webide/test/browser_tabs.js b/devtools/client/webide/test/browser_tabs.js new file mode 100644 index 000000000..541c6b363 --- /dev/null +++ b/devtools/client/webide/test/browser_tabs.js @@ -0,0 +1,84 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +const TEST_URI = "http://example.com/browser/devtools/client/webide/test/doc_tabs.html"; + +function test() { + waitForExplicitFinish(); + requestCompleteLog(); + + Task.spawn(function* () { + // Since we test the connections set below, destroy the server in case it + // was left open. + DebuggerServer.destroy(); + DebuggerServer.init(); + DebuggerServer.addBrowserActors(); + + let tab = yield addTab(TEST_URI); + + let win = yield openWebIDE(); + let docProject = getProjectDocument(win); + let docRuntime = getRuntimeDocument(win); + + yield connectToLocal(win, docRuntime); + + is(Object.keys(DebuggerServer._connections).length, 1, "Locally connected"); + + yield selectTabProject(win, docProject); + + ok(win.UI.toolboxPromise, "Toolbox promise exists"); + yield win.UI.toolboxPromise; + + let project = win.AppManager.selectedProject; + is(project.location, TEST_URI, "Location is correct"); + is(project.name, "example.com: Test Tab", "Name is correct"); + + // Ensure tab list changes are noticed + let tabsNode = docProject.querySelector("#project-panel-tabs"); + is(tabsNode.querySelectorAll(".panel-item").length, 2, "2 tabs available"); + yield removeTab(tab); + yield waitForUpdate(win, "project"); + yield waitForUpdate(win, "runtime-targets"); + is(tabsNode.querySelectorAll(".panel-item").length, 1, "1 tab available"); + + tab = yield addTab(TEST_URI); + + is(tabsNode.querySelectorAll(".panel-item").length, 2, "2 tabs available"); + + yield removeTab(tab); + + is(tabsNode.querySelectorAll(".panel-item").length, 2, "2 tabs available"); + + docProject.querySelector("#refresh-tabs").click(); + + yield waitForUpdate(win, "runtime-targets"); + + is(tabsNode.querySelectorAll(".panel-item").length, 1, "1 tab available"); + + yield win.Cmds.disconnectRuntime(); + yield closeWebIDE(win); + + DebuggerServer.destroy(); + }).then(finish, handleError); +} + +function connectToLocal(win, docRuntime) { + let deferred = promise.defer(); + win.AppManager.connection.once( + win.Connection.Events.CONNECTED, + () => deferred.resolve()); + docRuntime.querySelectorAll(".runtime-panel-item-other")[1].click(); + return deferred.promise; +} + +function selectTabProject(win, docProject) { + return Task.spawn(function* () { + yield waitForUpdate(win, "runtime-targets"); + let tabsNode = docProject.querySelector("#project-panel-tabs"); + let tabNode = tabsNode.querySelectorAll(".panel-item")[1]; + let project = waitForUpdate(win, "project"); + tabNode.click(); + yield project; + }); +} |