summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js')
-rw-r--r--browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js143
1 files changed, 143 insertions, 0 deletions
diff --git a/browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js b/browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js
new file mode 100644
index 0000000000..7751c9c420
--- /dev/null
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_open_related.js
@@ -0,0 +1,143 @@
+add_task(async function test() {
+ // eslint-disable-next-line @microsoft/sdl/no-insecure-url
+ let tab1 = await addTab("http://example.com/1");
+ // eslint-disable-next-line @microsoft/sdl/no-insecure-url
+ let tab2 = await addTab("http://example.com/2");
+ // eslint-disable-next-line @microsoft/sdl/no-insecure-url
+ let tab3 = await addTab("http://example.com/3");
+
+ await BrowserTestUtils.switchTab(gBrowser, tab1);
+ await triggerClickOn(tab2, { ctrlKey: true });
+
+ ok(tab1.multiselected, "Tab1 is multi-selected");
+ ok(tab2.multiselected, "Tab2 is multi-selected");
+ ok(!tab3.multiselected, "Tab3 is not multi-selected");
+
+ let metaKeyEvent =
+ AppConstants.platform == "macosx" ? { metaKey: true } : { ctrlKey: true };
+
+ let newTabButton = gBrowser.tabContainer.newTabButton;
+ let promiseTabOpened = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabOpen"
+ );
+ EventUtils.synthesizeMouseAtCenter(newTabButton, metaKeyEvent);
+ let openEvent = await promiseTabOpened;
+ let newTab = openEvent.target;
+
+ is(
+ newTab.previousElementSibling,
+ tab1,
+ "New tab should be opened after the selected tab (tab1)"
+ );
+ is(
+ newTab.nextElementSibling,
+ tab2,
+ "New tab should be opened after the selected tab (tab1) and before tab2"
+ );
+ BrowserTestUtils.removeTab(newTab);
+
+ await BrowserTestUtils.switchTab(gBrowser, tab1);
+ ok(!tab1.multiselected, "Tab1 is not multi-selected");
+ ok(!tab2.multiselected, "Tab2 is not multi-selected");
+ ok(!tab3.multiselected, "Tab3 is not multi-selected");
+
+ promiseTabOpened = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabOpen"
+ );
+ EventUtils.synthesizeMouseAtCenter(newTabButton, metaKeyEvent);
+ openEvent = await promiseTabOpened;
+ newTab = openEvent.target;
+ is(
+ newTab.previousElementSibling,
+ tab1,
+ "New tab should be opened after tab1 when only tab1 is selected"
+ );
+ is(
+ newTab.nextElementSibling,
+ tab2,
+ "New tab should be opened before tab2 when only tab1 is selected"
+ );
+ BrowserTestUtils.removeTab(newTab);
+
+ await BrowserTestUtils.switchTab(gBrowser, tab1);
+ await triggerClickOn(tab3, { ctrlKey: true });
+ ok(tab1.multiselected, "Tab1 is multi-selected");
+ ok(!tab2.multiselected, "Tab2 is not multi-selected");
+ ok(tab3.multiselected, "Tab3 is multi-selected");
+
+ promiseTabOpened = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabOpen"
+ );
+ EventUtils.synthesizeMouseAtCenter(newTabButton, metaKeyEvent);
+ openEvent = await promiseTabOpened;
+ newTab = openEvent.target;
+ let previous = gBrowser.tabContainer.findNextTab(newTab, { direction: -1 });
+ is(previous, tab1, "New tab should be opened after the selected tab (tab1)");
+ let next = gBrowser.tabContainer.findNextTab(newTab, { direction: 1 });
+ is(
+ next,
+ tab2,
+ "New tab should be opened after the selected tab (tab1) and before tab2"
+ );
+ BrowserTestUtils.removeTab(newTab);
+
+ await BrowserTestUtils.switchTab(gBrowser, tab1);
+ ok(!tab1.multiselected, "Tab1 is not multi-selected");
+ ok(!tab2.multiselected, "Tab2 is not multi-selected");
+ ok(!tab3.multiselected, "Tab3 is not multi-selected");
+
+ promiseTabOpened = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabOpen"
+ );
+ EventUtils.synthesizeMouseAtCenter(newTabButton, {});
+ openEvent = await promiseTabOpened;
+ newTab = openEvent.target;
+ previous = gBrowser.tabContainer.findNextTab(newTab, { direction: -1 });
+ is(
+ previous,
+ tab3,
+ "New tab should be opened after tab3 when ctrlKey is not used without multiselection"
+ );
+ next = gBrowser.tabContainer.findNextTab(newTab, { direction: 1 });
+ is(
+ next,
+ null,
+ "New tab should be opened at the end of the tabstrip when ctrlKey is not used without multiselection"
+ );
+ BrowserTestUtils.removeTab(newTab);
+
+ await BrowserTestUtils.switchTab(gBrowser, tab1);
+ await triggerClickOn(tab2, { ctrlKey: true });
+ ok(tab1.multiselected, "Tab1 is multi-selected");
+ ok(tab2.multiselected, "Tab2 is multi-selected");
+ ok(!tab3.multiselected, "Tab3 is not multi-selected");
+
+ promiseTabOpened = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabOpen"
+ );
+ EventUtils.synthesizeMouseAtCenter(newTabButton, {});
+ openEvent = await promiseTabOpened;
+ newTab = openEvent.target;
+ previous = gBrowser.tabContainer.findNextTab(newTab, { direction: -1 });
+ is(
+ previous,
+ tab3,
+ "New tab should be opened after tab3 when ctrlKey is not used with multiselection"
+ );
+ next = gBrowser.tabContainer.findNextTab(newTab, { direction: 1 });
+ is(
+ next,
+ null,
+ "New tab should be opened at the end of the tabstrip when ctrlKey is not used with multiselection"
+ );
+ BrowserTestUtils.removeTab(newTab);
+
+ BrowserTestUtils.removeTab(tab1);
+ BrowserTestUtils.removeTab(tab2);
+ BrowserTestUtils.removeTab(tab3);
+});