summaryrefslogtreecommitdiffstats
path: root/browser/components/firefoxview/tests/browser/browser_opentabs_cards.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/firefoxview/tests/browser/browser_opentabs_cards.js')
-rw-r--r--browser/components/firefoxview/tests/browser/browser_opentabs_cards.js431
1 files changed, 101 insertions, 330 deletions
diff --git a/browser/components/firefoxview/tests/browser/browser_opentabs_cards.js b/browser/components/firefoxview/tests/browser/browser_opentabs_cards.js
index d57aa3cad1..d4de3ae5a9 100644
--- a/browser/components/firefoxview/tests/browser/browser_opentabs_cards.js
+++ b/browser/components/firefoxview/tests/browser/browser_opentabs_cards.js
@@ -7,36 +7,16 @@ const ROW_DATE_ID = "fxview-tab-row-date";
let gInitialTab;
let gInitialTabURL;
-const { NonPrivateTabs } = ChromeUtils.importESModule(
- "resource:///modules/OpenTabs.sys.mjs"
-);
add_setup(function () {
// This test opens a lot of windows and tabs and might run long on slower configurations
- requestLongerTimeout(2);
+ requestLongerTimeout(3);
gInitialTab = gBrowser.selectedTab;
gInitialTabURL = gBrowser.selectedBrowser.currentURI.spec;
});
-async function navigateToOpenTabs(browser) {
- const document = browser.contentDocument;
- if (document.querySelector("named-deck").selectedViewName != "opentabs") {
- await navigateToCategoryAndWait(browser.contentDocument, "opentabs");
- }
-}
-
-function getOpenTabsComponent(browser) {
- return browser.contentDocument.querySelector("named-deck > view-opentabs");
-}
-
-function getCards(browser) {
- return getOpenTabsComponent(browser).shadowRoot.querySelectorAll(
- "view-opentabs-card"
- );
-}
-
async function cleanup() {
- await SimpleTest.promiseFocus(window);
+ await switchToWindow(window);
await promiseAllButPrimaryWindowClosed();
await BrowserTestUtils.switchTab(gBrowser, gInitialTab);
await closeFirefoxViewTab(window);
@@ -58,11 +38,6 @@ async function cleanup() {
);
}
-async function getRowsForCard(card) {
- await TestUtils.waitForCondition(() => card.tabList.rowEls.length);
- return card.tabList.rowEls;
-}
-
/**
* Verify that there are the expected number of cards, and that each card has
* the expected URLs in order.
@@ -73,10 +48,10 @@ async function getRowsForCard(card) {
* The expected URLs for each card.
*/
async function checkTabLists(browser, expected) {
- const cards = getCards(browser);
+ const cards = getOpenTabsCards(getOpenTabsComponent(browser));
is(cards.length, expected.length, `There are ${expected.length} windows.`);
for (let i = 0; i < cards.length; i++) {
- const tabItems = await getRowsForCard(cards[i]);
+ const tabItems = await getTabRowsForCard(cards[i]);
const actual = Array.from(tabItems).map(({ url }) => url);
Assert.deepEqual(
actual,
@@ -87,11 +62,12 @@ async function checkTabLists(browser, expected) {
}
add_task(async function open_tab_same_window() {
+ let tabChangeRaised;
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
await navigateToOpenTabs(browser);
const openTabs = getOpenTabsComponent(browser);
- await openTabs.openTabsTarget.readyWindowsPromise;
+ await NonPrivateTabs.readyWindowsPromise;
await openTabs.updateComplete;
await checkTabLists(browser, [[gInitialTabURL]]);
@@ -99,7 +75,7 @@ add_task(async function open_tab_same_window() {
browser.contentDocument,
"visibilitychange"
);
- let tabChangeRaised = BrowserTestUtils.waitForEvent(
+ tabChangeRaised = BrowserTestUtils.waitForEvent(
NonPrivateTabs,
"TabChange"
);
@@ -114,7 +90,7 @@ add_task(async function open_tab_same_window() {
const browser = viewTab.linkedBrowser;
const openTabs = getOpenTabsComponent(browser);
setSortOption(openTabs, "tabStripOrder");
- await openTabs.openTabsTarget.readyWindowsPromise;
+ await NonPrivateTabs.readyWindowsPromise;
await openTabs.updateComplete;
await checkTabLists(browser, [[gInitialTabURL, TEST_URL]]);
@@ -122,8 +98,8 @@ add_task(async function open_tab_same_window() {
browser.contentDocument,
"visibilitychange"
);
- const cards = getCards(browser);
- const tabItems = await getRowsForCard(cards[0]);
+ const cards = getOpenTabsCards(openTabs);
+ const tabItems = await getTabRowsForCard(cards[0]);
tabItems[0].mainEl.click();
await promiseHidden;
});
@@ -135,8 +111,11 @@ add_task(async function open_tab_same_window() {
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
- const cards = getCards(browser);
- let tabItems = await getRowsForCard(cards[0]);
+ const openTabs = getOpenTabsComponent(browser);
+ await openTabs.updateComplete;
+
+ const cards = getOpenTabsCards(openTabs);
+ let tabItems = await getTabRowsForCard(cards[0]);
let promiseHidden = BrowserTestUtils.waitForEvent(
browser.contentDocument,
@@ -154,7 +133,13 @@ add_task(async function open_tab_same_window() {
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
- let tabChangeRaised = BrowserTestUtils.waitForEvent(
+ const openTabs = getOpenTabsComponent(browser);
+ await openTabs.updateComplete;
+
+ // sanity-check current tab order before we change it
+ await checkTabLists(browser, [[gInitialTabURL, TEST_URL]]);
+
+ tabChangeRaised = BrowserTestUtils.waitForEvent(
NonPrivateTabs,
"TabChange"
);
@@ -162,18 +147,24 @@ add_task(async function open_tab_same_window() {
info("Bring the new tab to the front.");
gBrowser.moveTabTo(newTab, 0);
+ info("Waiting for tabChangeRaised to resolve from the tab move");
await tabChangeRaised;
+ await openTabs.updateComplete;
+
await checkTabLists(browser, [[TEST_URL, gInitialTabURL]]);
tabChangeRaised = BrowserTestUtils.waitForEvent(
NonPrivateTabs,
"TabChange"
);
+ info("Remove the new tab");
await BrowserTestUtils.removeTab(newTab);
+ info("Waiting for tabChangeRaised to resolve from removing the tab");
await tabChangeRaised;
+ await openTabs.updateComplete;
await checkTabLists(browser, [[gInitialTabURL]]);
- const [card] = getCards(browser);
- const [row] = await getRowsForCard(card);
+ const [card] = getOpenTabsCards(getOpenTabsComponent(browser));
+ const [row] = await getTabRowsForCard(card);
ok(
!row.shadowRoot.getElementById("fxview-tab-row-url").hidden,
"The URL is displayed, since we have one window."
@@ -188,25 +179,29 @@ add_task(async function open_tab_same_window() {
});
add_task(async function open_tab_new_window() {
- const win = await BrowserTestUtils.openNewBrowserWindow();
- let winFocused;
- await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
+ const win2 = await BrowserTestUtils.openNewBrowserWindow();
+ let winBecameActive;
+ let tabChangeRaised;
+ await switchToWindow(win2);
+ await NonPrivateTabs.readyWindowsPromise;
+
+ await BrowserTestUtils.openNewForegroundTab(win2.gBrowser, TEST_URL);
info("Open fxview in new window");
- await openFirefoxViewTab(win).then(async viewTab => {
+ await openFirefoxViewTab(win2).then(async viewTab => {
const browser = viewTab.linkedBrowser;
await navigateToOpenTabs(browser);
const openTabs = getOpenTabsComponent(browser);
setSortOption(openTabs, "tabStripOrder");
- await openTabs.openTabsTarget.readyWindowsPromise;
+ await NonPrivateTabs.readyWindowsPromise;
await openTabs.updateComplete;
await checkTabLists(browser, [
[gInitialTabURL, TEST_URL],
[gInitialTabURL],
]);
- const cards = getCards(browser);
- const originalWinRows = await getRowsForCard(cards[1]);
+ const cards = getOpenTabsCards(openTabs);
+ const originalWinRows = await getTabRowsForCard(cards[1]);
const [row] = originalWinRows;
ok(
row.shadowRoot.getElementById("fxview-tab-row-url").hidden,
@@ -217,47 +212,60 @@ add_task(async function open_tab_new_window() {
"The date is hidden, since we have two windows."
);
info("Select a tab from the original window.");
- let tabChangeRaised = BrowserTestUtils.waitForEvent(
+ tabChangeRaised = BrowserTestUtils.waitForEvent(
NonPrivateTabs,
"TabRecencyChange"
);
- winFocused = BrowserTestUtils.waitForEvent(window, "focus", true);
- originalWinRows[0].mainEl.click();
+ winBecameActive = Promise.all([
+ BrowserTestUtils.waitForEvent(window, "focus", true),
+ BrowserTestUtils.waitForEvent(window, "activate"),
+ ]);
+ ok(row.tabElement, "The row has a tabElement property");
+ is(
+ row.tabElement.ownerGlobal,
+ window,
+ "The tabElement's ownerGlobal is our original window"
+ );
+ info(`Clicking on row with URL: ${row.url}`);
+ row.mainEl.click();
+ info("Waiting for TabRecencyChange event");
await tabChangeRaised;
});
- info("Wait for the original window to be focused");
- await winFocused;
+ info("Wait for the original window to be focused & active");
+ await winBecameActive;
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
await navigateToOpenTabs(browser);
const openTabs = getOpenTabsComponent(browser);
- await openTabs.openTabsTarget.readyWindowsPromise;
+ await NonPrivateTabs.readyWindowsPromise;
await openTabs.updateComplete;
- const cards = getCards(browser);
+ const cards = getOpenTabsCards(openTabs);
is(cards.length, 2, "There are two windows.");
- const newWinRows = await getRowsForCard(cards[1]);
+ const newWinRows = await getTabRowsForCard(cards[1]);
info("Select a tab from the new window.");
- winFocused = BrowserTestUtils.waitForEvent(win, "focus", true);
- let tabChangeRaised = BrowserTestUtils.waitForEvent(
+ winBecameActive = Promise.all([
+ BrowserTestUtils.waitForEvent(win2, "focus", true),
+ BrowserTestUtils.waitForEvent(win2, "activate"),
+ ]);
+ tabChangeRaised = BrowserTestUtils.waitForEvent(
NonPrivateTabs,
"TabRecencyChange"
);
newWinRows[0].mainEl.click();
await tabChangeRaised;
});
- info("Wait for the new window to be focused");
- await winFocused;
+ info("Wait for the new window to be focused & active");
+ await winBecameActive;
await cleanup();
});
add_task(async function open_tab_new_private_window() {
await BrowserTestUtils.openNewBrowserWindow({ private: true });
- await SimpleTest.promiseFocus(window);
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
await navigateToOpenTabs(browser);
@@ -265,7 +273,7 @@ add_task(async function open_tab_new_private_window() {
await openTabs.openTabsTarget.readyWindowsPromise;
await openTabs.updateComplete;
- const cards = getCards(browser);
+ const cards = getOpenTabsCards(openTabs);
is(cards.length, 1, "The private window is not displayed.");
});
await cleanup();
@@ -274,6 +282,7 @@ add_task(async function open_tab_new_private_window() {
add_task(async function open_tab_new_window_sort_by_recency() {
info("Open new tabs in a new window.");
const newWindow = await BrowserTestUtils.openNewBrowserWindow();
+ await switchToWindow(newWindow);
const tabs = [
newWindow.gBrowser.selectedTab,
await BrowserTestUtils.openNewForegroundTab(newWindow.gBrowser, URLs[0]),
@@ -285,7 +294,7 @@ add_task(async function open_tab_new_window_sort_by_recency() {
await navigateToOpenTabs(linkedBrowser);
const openTabs = getOpenTabsComponent(linkedBrowser);
setSortOption(openTabs, "recency");
- await openTabs.openTabsTarget.readyWindowsPromise;
+ await NonPrivateTabs.readyWindowsPromise;
await openTabs.updateComplete;
await checkTabLists(linkedBrowser, [
@@ -293,13 +302,13 @@ add_task(async function open_tab_new_window_sort_by_recency() {
[URLs[1], URLs[0], gInitialTabURL],
]);
info("Select tabs in the new window to trigger recency changes.");
- await SimpleTest.promiseFocus(newWindow);
+ await switchToWindow(newWindow);
await BrowserTestUtils.switchTab(newWindow.gBrowser, tabs[1]);
await BrowserTestUtils.switchTab(newWindow.gBrowser, tabs[0]);
- await SimpleTest.promiseFocus(window);
+ await switchToWindow(window);
await TestUtils.waitForCondition(async () => {
- const [, secondCard] = getCards(linkedBrowser);
- const tabItems = await getRowsForCard(secondCard);
+ const [, secondCard] = getOpenTabsCards(openTabs);
+ const tabItems = await getTabRowsForCard(secondCard);
return tabItems[0].url === gInitialTabURL;
});
await checkTabLists(linkedBrowser, [
@@ -311,12 +320,13 @@ add_task(async function open_tab_new_window_sort_by_recency() {
});
add_task(async function styling_for_multiple_windows() {
+ let tabChangeRaised;
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
await navigateToOpenTabs(browser);
const openTabs = getOpenTabsComponent(browser);
setSortOption(openTabs, "tabStripOrder");
- await openTabs.openTabsTarget.readyWindowsPromise;
+ await NonPrivateTabs.readyWindowsPromise;
await openTabs.updateComplete;
ok(
@@ -325,13 +335,10 @@ add_task(async function styling_for_multiple_windows() {
);
});
- await BrowserTestUtils.openNewBrowserWindow();
- let tabChangeRaised = BrowserTestUtils.waitForEvent(
- NonPrivateTabs,
- "TabChange"
- );
+ let win2 = await BrowserTestUtils.openNewBrowserWindow();
+ info("Switching to new window");
+ await switchToWindow(win2);
await NonPrivateTabs.readyWindowsPromise;
- await tabChangeRaised;
is(
NonPrivateTabs.currentWindows.length,
2,
@@ -339,290 +346,54 @@ add_task(async function styling_for_multiple_windows() {
);
info("switch to firefox view in the first window");
- SimpleTest.promiseFocus(window);
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
const openTabs = getOpenTabsComponent(browser);
- await openTabs.openTabsTarget.readyWindowsPromise;
- await openTabs.updateComplete;
+ const cardContainer = openTabs.shadowRoot.querySelector(
+ ".view-opentabs-card-container"
+ );
+ info("waiting for card-count to reflect 2 windows");
+ await BrowserTestUtils.waitForCondition(() => {
+ return cardContainer.getAttribute("card-count") == "two";
+ });
is(
openTabs.openTabsTarget.currentWindows.length,
2,
"There should be 2 current windows"
);
- ok(
- openTabs.shadowRoot.querySelector("[card-count=two]"),
- "The container shows two columns when two windows are open."
+ is(
+ cardContainer.getAttribute("card-count"),
+ "two",
+ "The container shows two columns when two windows are open"
);
});
- await BrowserTestUtils.openNewBrowserWindow();
+
tabChangeRaised = BrowserTestUtils.waitForEvent(NonPrivateTabs, "TabChange");
+ let win3 = await BrowserTestUtils.openNewBrowserWindow();
+ await switchToWindow(win3);
await NonPrivateTabs.readyWindowsPromise;
await tabChangeRaised;
is(
NonPrivateTabs.currentWindows.length,
3,
- "NonPrivateTabs now has 2 currentWindows"
+ "NonPrivateTabs now has 3 currentWindows"
);
- SimpleTest.promiseFocus(window);
- await openFirefoxViewTab(window).then(async viewTab => {
- const browser = viewTab.linkedBrowser;
- const openTabs = getOpenTabsComponent(browser);
- await openTabs.openTabsTarget.readyWindowsPromise;
- await openTabs.updateComplete;
-
- ok(
- openTabs.shadowRoot.querySelector("[card-count=three-or-more]"),
- "The container shows three columns when three windows are open."
- );
- });
- await cleanup();
-});
-
-add_task(async function toggle_show_more_link() {
- const tabEntry = url => ({
- entries: [{ url, triggeringPrincipal_base64 }],
- });
- const NUMBER_OF_WINDOWS = 4;
- const NUMBER_OF_TABS = 42;
- const browserState = { windows: [] };
- for (let windowIndex = 0; windowIndex < NUMBER_OF_WINDOWS; windowIndex++) {
- const winData = { tabs: [] };
- let tabCount = windowIndex == NUMBER_OF_WINDOWS - 1 ? NUMBER_OF_TABS : 1;
- for (let i = 0; i < tabCount; i++) {
- winData.tabs.push(tabEntry(`data:,Window${windowIndex}-Tab${i}`));
- }
- winData.selected = winData.tabs.length;
- browserState.windows.push(winData);
- }
- // use Session restore to batch-open windows and tabs
- await SessionStoreTestUtils.promiseBrowserState(browserState);
- // restoring this state requires an update to the initial tab globals
- // so cleanup expects the right thing
- gInitialTab = gBrowser.selectedTab;
- gInitialTabURL = gBrowser.selectedBrowser.currentURI.spec;
-
- const windows = Array.from(Services.wm.getEnumerator("navigator:browser"));
- is(windows.length, NUMBER_OF_WINDOWS, "There are four browser windows.");
-
- const tab = (win = window) => {
- info("Tab");
- EventUtils.synthesizeKey("KEY_Tab", {}, win);
- };
-
- const enter = (win = window) => {
- info("Enter");
- EventUtils.synthesizeKey("KEY_Enter", {}, win);
- };
-
- let lastCard;
-
- SimpleTest.promiseFocus(window);
+ // switch back to the original window
await openFirefoxViewTab(window).then(async viewTab => {
const browser = viewTab.linkedBrowser;
- await navigateToOpenTabs(browser);
const openTabs = getOpenTabsComponent(browser);
- await openTabs.openTabsTarget.readyWindowsPromise;
- await openTabs.updateComplete;
-
- const cards = getCards(browser);
- is(cards.length, NUMBER_OF_WINDOWS, "There are four windows.");
- lastCard = cards[NUMBER_OF_WINDOWS - 1];
- });
-
- await openFirefoxViewTab(window).then(async viewTab => {
- const browser = viewTab.linkedBrowser;
- const openTabs = getOpenTabsComponent(browser);
- await openTabs.openTabsTarget.readyWindowsPromise;
- await openTabs.updateComplete;
- Assert.less(
- (await getRowsForCard(lastCard)).length,
- NUMBER_OF_TABS,
- "Not all tabs are shown yet."
- );
- info("Toggle the Show More link.");
- lastCard.shadowRoot.querySelector("div[slot=footer]").click();
- await BrowserTestUtils.waitForMutationCondition(
- lastCard.shadowRoot,
- { childList: true, subtree: true },
- async () => (await getRowsForCard(lastCard)).length === NUMBER_OF_TABS
+ const cardContainer = openTabs.shadowRoot.querySelector(
+ ".view-opentabs-card-container"
);
- info("Toggle the Show Less link.");
- lastCard.shadowRoot.querySelector("div[slot=footer]").click();
- await BrowserTestUtils.waitForMutationCondition(
- lastCard.shadowRoot,
- { childList: true, subtree: true },
- async () => (await getRowsForCard(lastCard)).length < NUMBER_OF_TABS
- );
-
- // Setting this pref allows the test to run as expected with a keyboard on MacOS
- await SpecialPowers.pushPrefEnv({
- set: [["accessibility.tabfocus", 7]],
+ await BrowserTestUtils.waitForCondition(() => {
+ return cardContainer.getAttribute("card-count") == "three-or-more";
});
-
- info("Toggle the Show More link with keyboard.");
- lastCard.shadowRoot.querySelector("card-container").summaryEl.focus();
- // Tab to first item in the list
- tab();
- // Tab to the footer
- tab();
- enter();
- await BrowserTestUtils.waitForMutationCondition(
- lastCard.shadowRoot,
- { childList: true, subtree: true },
- async () => (await getRowsForCard(lastCard)).length === NUMBER_OF_TABS
- );
-
- info("Toggle the Show Less link with keyboard.");
- lastCard.shadowRoot.querySelector("card-container").summaryEl.focus();
- // Tab to first item in the list
- tab();
- // Tab to the footer
- tab();
- enter();
- await BrowserTestUtils.waitForMutationCondition(
- lastCard.shadowRoot,
- { childList: true, subtree: true },
- async () => (await getRowsForCard(lastCard)).length < NUMBER_OF_TABS
- );
-
- await SpecialPowers.popPrefEnv();
- });
- await cleanup();
-});
-
-add_task(async function search_open_tabs() {
- // Open a new window and navigate to TEST_URL. Then, when we search for
- // TEST_URL, it should show a search result in the new window's card.
- const win = await BrowserTestUtils.openNewBrowserWindow();
- await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
-
- await SpecialPowers.pushPrefEnv({
- set: [["browser.firefox-view.search.enabled", true]],
- });
- await openFirefoxViewTab(window).then(async viewTab => {
- const browser = viewTab.linkedBrowser;
- await navigateToOpenTabs(browser);
- const openTabs = getOpenTabsComponent(browser);
- await openTabs.openTabsTarget.readyWindowsPromise;
- await openTabs.updateComplete;
-
- const cards = getCards(browser);
- is(cards.length, 2, "There are two windows.");
- const winTabs = await getRowsForCard(cards[0]);
- const newWinTabs = await getRowsForCard(cards[1]);
-
- info("Input a search query.");
- EventUtils.synthesizeMouseAtCenter(openTabs.searchTextbox, {}, content);
- EventUtils.sendString(TEST_URL, content);
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[0].tabList.rowEls.length === 0,
- "There are no matching search results in the original window."
- );
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[1].tabList.rowEls.length === 1,
- "There is one matching search result in the new window."
- );
-
- info("Clear the search query.");
- EventUtils.synthesizeMouseAtCenter(
- openTabs.searchTextbox.clearButton,
- {},
- content
- );
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[0].tabList.rowEls.length === winTabs.length,
- "The original window's list is restored."
- );
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[1].tabList.rowEls.length === newWinTabs.length,
- "The new window's list is restored."
- );
- openTabs.searchTextbox.blur();
-
- info("Input a search query with keyboard.");
- EventUtils.synthesizeKey("f", { accelKey: true }, content);
- EventUtils.sendString(TEST_URL, content);
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[0].tabList.rowEls.length === 0,
- "There are no matching search results in the original window."
- );
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[1].tabList.rowEls.length === 1,
- "There is one matching search result in the new window."
- );
-
- info("Clear the search query with keyboard.");
- is(
- openTabs.shadowRoot.activeElement,
- openTabs.searchTextbox,
- "Search input is focused"
- );
- EventUtils.synthesizeKey("KEY_Tab", {}, content);
ok(
- openTabs.searchTextbox.clearButton.matches(":focus-visible"),
- "Clear Search button is focused"
- );
- EventUtils.synthesizeKey("KEY_Enter", {}, content);
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[0].tabList.rowEls.length === winTabs.length,
- "The original window's list is restored."
- );
- await TestUtils.waitForCondition(
- () => openTabs.viewCards[1].tabList.rowEls.length === newWinTabs.length,
- "The new window's list is restored."
- );
- });
-
- await SpecialPowers.popPrefEnv();
- await cleanup();
-});
-
-add_task(async function search_open_tabs_recent_browsing() {
- const NUMBER_OF_TABS = 6;
- const win = await BrowserTestUtils.openNewBrowserWindow();
- for (let i = 0; i < NUMBER_OF_TABS; i++) {
- await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
- }
- await SpecialPowers.pushPrefEnv({
- set: [["browser.firefox-view.search.enabled", true]],
- });
- await openFirefoxViewTab(window).then(async viewTab => {
- const browser = viewTab.linkedBrowser;
- await navigateToCategoryAndWait(browser.contentDocument, "recentbrowsing");
- const recentBrowsing = browser.contentDocument.querySelector(
- "view-recentbrowsing"
- );
-
- info("Input a search query.");
- EventUtils.synthesizeMouseAtCenter(
- recentBrowsing.searchTextbox,
- {},
- content
- );
- EventUtils.sendString(TEST_URL, content);
- const slot = recentBrowsing.querySelector("[slot='opentabs']");
- await TestUtils.waitForCondition(
- () => slot.viewCards[0].tabList.rowEls.length === 5,
- "Not all search results are shown yet."
+ openTabs.shadowRoot.querySelector("[card-count=three-or-more]"),
+ "The container shows three columns when three windows are open."
);
-
- info("Click the Show All link.");
- const showAllLink = await TestUtils.waitForCondition(() => {
- const elt = slot.viewCards[0].shadowRoot.querySelector(
- "[data-l10n-id='firefoxview-show-all']"
- );
- EventUtils.synthesizeMouseAtCenter(elt, {}, content);
- if (slot.viewCards[0].tabList.rowEls.length === NUMBER_OF_TABS) {
- return elt;
- }
- return false;
- }, "All search results are shown.");
- is(showAllLink.role, "link", "The show all control is a link.");
- ok(BrowserTestUtils.isHidden(showAllLink), "The show all link is hidden.");
});
- await SpecialPowers.popPrefEnv();
await cleanup();
});