diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /devtools/client/debugger/test/mochitest/browser_dbg-tabs.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg-tabs.js')
-rw-r--r-- | devtools/client/debugger/test/mochitest/browser_dbg-tabs.js | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg-tabs.js b/devtools/client/debugger/test/mochitest/browser_dbg-tabs.js new file mode 100644 index 0000000000..74d5a4afbc --- /dev/null +++ b/devtools/client/debugger/test/mochitest/browser_dbg-tabs.js @@ -0,0 +1,107 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */ + +// Tests adding and removing tabs + +"use strict"; + +add_task(async function testTabsOnReload() { + const dbg = await initDebugger( + "doc-scripts.html", + "simple1.js", + "simple2.js" + ); + + await selectSource(dbg, "simple1.js"); + await selectSource(dbg, "simple2.js"); + is(countTabs(dbg), 2); + + info("Test reloading the debugger"); + await reload(dbg, "simple1.js", "simple2.js"); + await waitForSelectedSource(dbg, "simple2.js"); + is(countTabs(dbg), 2); + + info("Test reloading the debuggee a second time"); + await reload(dbg, "simple1.js", "simple2.js"); + await waitForSelectedSource(dbg, "simple2.js"); + is(countTabs(dbg), 2); +}); + +add_task(async function testOpeningAndClosingTabs() { + const dbg = await initDebugger( + "doc-scripts.html", + "simple1.js", + "simple2.js", + "simple3.js" + ); + + // /!\ Tabs are opened by default on the left/beginning + // so that they are displayed in the other way around. + // To make the test clearer insert them in a way so that + // they are in the expected order: simple1 then simple2,... + await selectSource(dbg, "simple3.js"); + await selectSource(dbg, "simple2.js"); + await selectSource(dbg, "simple1.js"); + + info("Reselect simple2 so that we then close the selected tab"); + await selectSource(dbg, "simple2.js"); + await closeTab(dbg, "simple2.js"); + is(countTabs(dbg), 2); + info("Removing the tab in the middle should select the following one"); + await waitForSelectedSource(dbg, "simple3.js"); + + await closeTab(dbg, "simple3.js"); + is(countTabs(dbg), 1); + info("Removing the last tab should select the first tab before"); + await waitForSelectedSource(dbg, "simple1.js"); + + info("Re-open a second tab so that we can cover closing the first tab"); + await selectSource(dbg, "simple2.js"); + is(countTabs(dbg), 2); + await closeTab(dbg, "simple1.js"); + info("Removing the first tab should select the first tab after"); + is(countTabs(dbg), 1); + await waitForSelectedSource(dbg, "simple2.js"); + + info("Close the last tab"); + await closeTab(dbg, "simple2.js"); + is(countTabs(dbg), 0); + is( + dbg.selectors.getSelectedLocation(), + null, + "Selected location is cleared when closing the last tab" + ); + + info("Test reloading the debugger"); + await reload(dbg, "simple1.js", "simple2.js", "simple3.js"); + is(countTabs(dbg), 0); + + // /!\ Tabs are opened by default on the left/beginning + // so that they are displayed in the other way around. + // To make the test clearer insert them in a way so that + // they are in the expected order: simple1 then simple2,... + await selectSource(dbg, "simple3.js"); + await selectSource(dbg, "simple2.js"); + await selectSource(dbg, "simple1.js"); + is(countTabs(dbg), 3); + + info("Reselect simple3 so that we then close the selected tab"); + await selectSource(dbg, "simple3.js"); + + info("Removing the last tab, should select the one before"); + await closeTab(dbg, "simple3.js"); + is(countTabs(dbg), 2); + await waitForSelectedSource(dbg, "simple2.js"); + + info("Test the close all tabs context menu"); + const waitForOpen = waitForContextMenu(dbg); + info(`Open the current active tab context menu`); + rightClickElement(dbg, "activeTab"); + await waitForOpen; + const onCloseTabsAction = waitForDispatch(dbg.store, "CLOSE_TABS"); + info(`Select the close all tabs context menu item`); + selectContextMenuItem(dbg, `#node-menu-close-all-tabs`); + await onCloseTabsAction; + is(countTabs(dbg), 0); +}); |