diff options
Diffstat (limited to 'browser/components/uitour/test/browser_UITour4.js')
-rw-r--r-- | browser/components/uitour/test/browser_UITour4.js | 550 |
1 files changed, 550 insertions, 0 deletions
diff --git a/browser/components/uitour/test/browser_UITour4.js b/browser/components/uitour/test/browser_UITour4.js new file mode 100644 index 0000000000..a2396bd1aa --- /dev/null +++ b/browser/components/uitour/test/browser_UITour4.js @@ -0,0 +1,550 @@ +"use strict"; + +var gTestTab; +var gContentAPI; +var gContentWindow; + +add_task(setup_UITourTest); + +add_UITour_task( + async function test_highligh_between_pageActionButtonOnUrlbar_and_buttonOnPageActionPanel() { + let highlight = document.getElementById("UITourHighlight"); + is_element_hidden(highlight, "Highlight should initially be hidden"); + + // Test highlighting the page action button on the urlbar + let pageActionPanel = BrowserPageActions.panelNode; + let highlightVisiblePromise = elementVisiblePromise( + highlight, + "Should show highlight" + ); + gContentAPI.showHighlight("pageActionButton"); + await highlightVisiblePromise; + is( + pageActionPanel.state, + "closed", + "Shouldn't open the page action panel while highlighting the pageActionButton" + ); + is( + getShowHighlightTargetName(), + "pageActionButton", + "Should highlight the pageActionButton" + ); + + // Test switching the highlight to the copyURL button on the page action panel + let panelShownPromise = promisePanelElementShown(window, pageActionPanel); + highlightVisiblePromise = elementVisiblePromise( + highlight, + "Should show highlight" + ); + gContentAPI.showHighlight("pageAction-copyURL"); + await highlightVisiblePromise; + await panelShownPromise; + is( + pageActionPanel.state, + "open", + "Should open the page action panel for highlighting the pageAction-copyURL" + ); + is( + getShowHighlightTargetName(), + "pageAction-copyURL", + "Should highlight the pageAction-copyURL" + ); + + // Test hiding highlight + let panelHiddenPromise = promisePanelElementHidden(window, pageActionPanel); + let highlightHiddenPromise = elementHiddenPromise( + highlight, + "Should hide highlight" + ); + gContentAPI.hideHighlight(); + await highlightHiddenPromise; + await panelHiddenPromise; + is( + pageActionPanel.state, + "closed", + "Should close the page action panel after hiding highlight" + ); + } +); + +add_UITour_task( + async function test_highligh_between_buttonOnAppMenu_and_buttonOnPageActionPanel() { + let highlight = document.getElementById("UITourHighlight"); + is_element_hidden(highlight, "Highlight should initially be hidden"); + + let appMenu = window.PanelUI.panel; + let pageActionPanel = BrowserPageActions.panelNode; + + // Test highlighting the addons button on the app menu + let appMenuShownPromise = promisePanelElementShown(window, appMenu); + let highlightVisiblePromise = elementVisiblePromise( + highlight, + "Should show highlight" + ); + gContentAPI.showHighlight("addons"); + await appMenuShownPromise; + await highlightVisiblePromise; + is( + appMenu.state, + "open", + "Should open the app menu to highlight the addons button" + ); + is(pageActionPanel.state, "closed", "Shouldn't open the page action panel"); + is( + getShowHighlightTargetName(), + "addons", + "Should highlight the addons button on the app menu" + ); + + // Test switching the highlight to the copyURL button on the page action panel + let appMenuHiddenPromise = promisePanelElementHidden(window, appMenu); + let pageActionPanelShownPromise = promisePanelElementShown( + window, + pageActionPanel + ); + highlightVisiblePromise = elementVisiblePromise( + highlight, + "Should show highlight" + ); + gContentAPI.showHighlight("pageAction-copyURL"); + await appMenuHiddenPromise; + await pageActionPanelShownPromise; + await highlightVisiblePromise; + is( + appMenu.state, + "closed", + "Should close the app menu after no more highlight for the addons button" + ); + is( + pageActionPanel.state, + "open", + "Should open the page action panel to highlight the copyURL button" + ); + is( + getShowHighlightTargetName(), + "pageAction-copyURL", + "Should highlight the copyURL button on the page action panel" + ); + + // Test hiding highlight + let pageActionPanelHiddenPromise = promisePanelElementHidden( + window, + pageActionPanel + ); + let highlightHiddenPromise = elementHiddenPromise( + highlight, + "Should hide highlight" + ); + gContentAPI.hideHighlight(); + await pageActionPanelHiddenPromise; + await highlightHiddenPromise; + is( + appMenu.state, + "closed", + "Shouldn't open the app menu after hiding highlight" + ); + is( + pageActionPanel.state, + "closed", + "Should close the page action panel after hiding highlight" + ); + } +); + +add_UITour_task( + async function test_showInfo_between_buttonOnPageActionPanel_and_buttonOnAppMenu() { + let tooltip = document.getElementById("UITourTooltip"); + is_element_hidden(tooltip, "Tooltip should initially be hidden"); + + let appMenu = window.PanelUI.panel; + let pageActionPanel = BrowserPageActions.panelNode; + + // Test showing info tooltip on the emailLink button on the page action panel + let pageActionPanelShownPromise = promisePanelElementShown( + window, + pageActionPanel + ); + let tooltipVisiblePromise = elementVisiblePromise( + tooltip, + "Should show info tooltip" + ); + await showInfoPromise("pageAction-emailLink", "title", "text"); + await pageActionPanelShownPromise; + await tooltipVisiblePromise; + is(appMenu.state, "closed", "Shouldn't open the app menu"); + is( + pageActionPanel.state, + "open", + "Should open the page action panel to show info on the copyURL button" + ); + is( + getShowInfoTargetName(), + "pageAction-emailLink", + "Should show info tooltip on the emailLink button on the page action panel" + ); + + // Test switching info tooltip to the customize button on the app menu + let appMenuShownPromise = promisePanelElementShown(window, appMenu); + let pageActionPanelHiddenPromise = promisePanelElementHidden( + window, + pageActionPanel + ); + tooltipVisiblePromise = elementVisiblePromise( + tooltip, + "Should show info tooltip" + ); + await showInfoPromise("customize", "title", "text"); + await appMenuShownPromise; + await pageActionPanelHiddenPromise; + await tooltipVisiblePromise; + is( + appMenu.state, + "open", + "Should open the app menu to show info on the customize button" + ); + is( + pageActionPanel.state, + "closed", + "Should close the page action panel after no more show info for the copyURL button" + ); + is( + getShowInfoTargetName(), + "customize", + "Should show info tooltip on the customize button on the app menu" + ); + + // Test hiding info tooltip + let appMenuHiddenPromise = promisePanelElementHidden(window, appMenu); + let tooltipHiddenPromise = elementHiddenPromise( + tooltip, + "Should hide info" + ); + gContentAPI.hideInfo(); + await appMenuHiddenPromise; + await tooltipHiddenPromise; + is(appMenu.state, "closed", "Should close the app menu after hiding info"); + is( + pageActionPanel.state, + "closed", + "Shouldn't open the page action panel after hiding info" + ); + } +); + +add_UITour_task( + async function test_highlight_buttonOnPageActionPanel_and_showInfo_buttonOnAppMenu() { + let highlight = document.getElementById("UITourHighlight"); + is_element_hidden(highlight, "Highlight should initially be hidden"); + let tooltip = document.getElementById("UITourTooltip"); + is_element_hidden(tooltip, "Tooltip should initially be hidden"); + + let appMenu = window.PanelUI.panel; + let pageActionPanel = BrowserPageActions.panelNode; + + // Test highlighting the sendToDevice button on the page action panel + let pageActionPanelShownPromise = promisePanelElementShown( + window, + pageActionPanel + ); + let highlightVisiblePromise = elementVisiblePromise( + highlight, + "Should show highlight" + ); + gContentAPI.showHighlight("pageAction-sendToDevice"); + await pageActionPanelShownPromise; + await highlightVisiblePromise; + is(appMenu.state, "closed", "Shouldn't open the app menu"); + is( + pageActionPanel.state, + "open", + "Should open the page action panel to highlight the sendToDevice button" + ); + is( + getShowHighlightTargetName(), + "pageAction-sendToDevice", + "Should highlight the sendToDevice button on the page action panel" + ); + + // Test showing info tooltip on the privateWindow button on the app menu + let appMenuShownPromise = promisePanelElementShown(window, appMenu); + let tooltipVisiblePromise = elementVisiblePromise( + tooltip, + "Should show info tooltip" + ); + let pageActionPanelHiddenPromise = promisePanelElementHidden( + window, + pageActionPanel + ); + let highlightHiddenPromise = elementHiddenPromise( + highlight, + "Should hide highlight" + ); + await showInfoPromise("privateWindow", "title", "text"); + await appMenuShownPromise; + await tooltipVisiblePromise; + await pageActionPanelHiddenPromise; + await highlightHiddenPromise; + is( + appMenu.state, + "open", + "Should open the app menu to show info on the privateWindow button" + ); + is(pageActionPanel.state, "closed", "Should close the page action panel"); + is( + getShowInfoTargetName(), + "privateWindow", + "Should show info tooltip on the privateWindow button on the app menu" + ); + + // Test hiding info tooltip + let appMenuHiddenPromise = promisePanelElementHidden(window, appMenu); + let tooltipHiddenPromise = elementHiddenPromise( + tooltip, + "Should hide info" + ); + gContentAPI.hideInfo(); + await appMenuHiddenPromise; + await tooltipHiddenPromise; + is( + appMenu.state, + "closed", + "Should close the app menu after hiding info tooltip" + ); + } +); + +add_UITour_task( + async function test_showInfo_buttonOnAppMenu_and_highlight_buttonOnPageActionPanel() { + let highlight = document.getElementById("UITourHighlight"); + is_element_hidden(highlight, "Highlight should initially be hidden"); + let tooltip = document.getElementById("UITourTooltip"); + is_element_hidden(tooltip, "Tooltip should initially be hidden"); + + let appMenu = window.PanelUI.panel; + let pageActionPanel = BrowserPageActions.panelNode; + + // Test showing info tooltip on the privateWindow button on the app menu + let appMenuShownPromise = promisePanelElementShown(window, appMenu); + let tooltipVisiblePromise = elementVisiblePromise( + tooltip, + "Should show info tooltip" + ); + await showInfoPromise("privateWindow", "title", "text"); + await appMenuShownPromise; + await tooltipVisiblePromise; + is( + appMenu.state, + "open", + "Should open the app menu to show info on the privateWindow button" + ); + is(pageActionPanel.state, "closed", "Shouldn't open the page action panel"); + is( + getShowInfoTargetName(), + "privateWindow", + "Should show info tooltip on the privateWindow button on the app menu" + ); + + // Test highlighting the sendToDevice button on the page action panel + let pageActionPanelShownPromise = promisePanelElementShown( + window, + pageActionPanel + ); + let highlightVisiblePromise = elementVisiblePromise( + highlight, + "Should show highlight" + ); + let appMenuHiddenPromise = promisePanelElementHidden(window, appMenu); + let tooltipHiddenPromise = elementHiddenPromise( + tooltip, + "Should hide info" + ); + gContentAPI.showHighlight("pageAction-sendToDevice"); + await pageActionPanelShownPromise; + await highlightVisiblePromise; + await appMenuHiddenPromise; + await tooltipHiddenPromise; + is(appMenu.state, "closed", "Should close the app menu"); + is( + pageActionPanel.state, + "open", + "Should open the page action panel to highlight the sendToDevice button" + ); + is( + getShowHighlightTargetName(), + "pageAction-sendToDevice", + "Should highlight the sendToDevice button on the page action panel" + ); + + // Test hiding highlight + let pageActionPanelHiddenPromise = promisePanelElementHidden( + window, + pageActionPanel + ); + let highlightHiddenPromise = elementHiddenPromise( + highlight, + "Should hide highlight" + ); + gContentAPI.hideHighlight(); + await pageActionPanelHiddenPromise; + await highlightHiddenPromise; + is( + pageActionPanel.state, + "closed", + "Should close the page action panel after hiding highlight" + ); + } +); + +add_UITour_task( + async function test_show_appMenu_and_highligh_buttonOnPageActionPanel() { + let highlight = document.getElementById("UITourHighlight"); + is_element_hidden(highlight, "Highlight should initially be hidden"); + + let appMenu = window.PanelUI.panel; + let pageActionPanel = BrowserPageActions.panelNode; + + // Test explicity asking for opening the app menu + let appMenuShownPromise = promisePanelElementShown(window, appMenu); + gContentAPI.showMenu("appMenu"); + await appMenuShownPromise; + is(appMenu.state, "open", "Should open the app menu"); + is(pageActionPanel.state, "closed", "Shouldn't open the page action panel"); + + // Test highlighting the sendToDevice button on the page action panel + let pageActionPanelShownPromise = promisePanelElementShown( + window, + pageActionPanel + ); + let highlightVisiblePromise = elementVisiblePromise( + highlight, + "Should show highlight" + ); + gContentAPI.showHighlight("pageAction-sendToDevice"); + await pageActionPanelShownPromise; + await highlightVisiblePromise; + is( + appMenu.state, + "open", + "Shouldn't close the app menu because it is opened explictly by api user." + ); + is( + pageActionPanel.state, + "open", + "Should open the page action panel to highlight the sendToDevice button" + ); + is( + getShowHighlightTargetName(), + "pageAction-sendToDevice", + "Should highlight the sendToDevice button on the page action panel" + ); + + // Test hiding the app menu wouldn't affect the highlight on the page action panel + let appMenuHiddenPromise = promisePanelElementHidden(window, appMenu); + gContentAPI.hideMenu("appMenu"); + await appMenuHiddenPromise; + is_element_visible(highlight, "Highlight should still be visible"); + is(appMenu.state, "closed", "Should close the app menu"); + is(pageActionPanel.state, "open", "Shouldn't close the page action panel"); + is( + getShowHighlightTargetName(), + "pageAction-sendToDevice", + "Should still highlight the sendToDevice button on the page action panel" + ); + + // Test hiding highlight + let pageActionPanelHiddenPromise = promisePanelElementHidden( + window, + pageActionPanel + ); + let highlightHiddenPromise = elementHiddenPromise( + highlight, + "Should hide highlight" + ); + gContentAPI.hideHighlight(); + await pageActionPanelHiddenPromise; + await highlightHiddenPromise; + is(appMenu.state, "closed", "Shouldn't open the app menu"); + is( + pageActionPanel.state, + "closed", + "Should close the page action panel after hiding highlight" + ); + } +); + +add_UITour_task( + async function test_show_pageActionPanel_and_showInfo_buttonOnAppMenu() { + let tooltip = document.getElementById("UITourTooltip"); + is_element_hidden(tooltip, "Tooltip should initially be hidden"); + + let appMenu = window.PanelUI.panel; + let pageActionPanel = BrowserPageActions.panelNode; + + // Test explicity asking for opening the page action panel + let pageActionPanelShownPromise = promisePanelElementShown( + window, + pageActionPanel + ); + gContentAPI.showMenu("pageActionPanel"); + await pageActionPanelShownPromise; + is(appMenu.state, "closed", "Shouldn't open the app menu"); + is(pageActionPanel.state, "open", "Should open the page action panel"); + + // Test showing info tooltip on the privateWindow button on the app menu + let appMenuShownPromise = promisePanelElementShown(window, appMenu); + let tooltipVisiblePromise = elementVisiblePromise( + tooltip, + "Should show info tooltip" + ); + await showInfoPromise("privateWindow", "title", "text"); + await appMenuShownPromise; + await tooltipVisiblePromise; + is( + appMenu.state, + "open", + "Should open the app menu to show info on the privateWindow button" + ); + is( + pageActionPanel.state, + "open", + "Shouldn't close the page action panel because it is opened explictly by api user." + ); + is( + getShowInfoTargetName(), + "privateWindow", + "Should show info tooltip on the privateWindow button on the app menu" + ); + + // Test hiding the page action panel wouldn't affect the info tooltip on the app menu + let pageActionPanelHiddenPromise = promisePanelElementHidden( + window, + pageActionPanel + ); + gContentAPI.hideMenu("pageActionPanel"); + await pageActionPanelHiddenPromise; + is_element_visible(tooltip, "Tooltip should still be visible"); + is(appMenu.state, "open", "Shouldn't close the app menu"); + is( + pageActionPanel.state, + "closed", + "Should close the page action panel after hideMenu" + ); + is( + getShowInfoTargetName(), + "privateWindow", + "Should still show info tooltip on the privateWindow button on the app menu" + ); + + // Test hiding info tooltip + let appMenuHiddenPromise = promisePanelElementHidden(window, appMenu); + let tooltipHiddenPromise = elementHiddenPromise( + tooltip, + "Should hide info" + ); + gContentAPI.hideInfo(); + await appMenuHiddenPromise; + await tooltipHiddenPromise; + is(appMenu.state, "closed", "Should close the app menu after hideInfo"); + is(pageActionPanel.state, "closed", "Shouldn't open the page action panel"); + } +); |