summaryrefslogtreecommitdiffstats
path: root/browser/components/uitour/test/browser_UITour4.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/uitour/test/browser_UITour4.js')
-rw-r--r--browser/components/uitour/test/browser_UITour4.js550
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");
+ }
+);