summaryrefslogtreecommitdiffstats
path: root/browser/components/firefoxview/tests/browser/browser_cfr_message.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/firefoxview/tests/browser/browser_cfr_message.js')
-rw-r--r--browser/components/firefoxview/tests/browser/browser_cfr_message.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/browser/components/firefoxview/tests/browser/browser_cfr_message.js b/browser/components/firefoxview/tests/browser/browser_cfr_message.js
new file mode 100644
index 0000000000..337f74c4b1
--- /dev/null
+++ b/browser/components/firefoxview/tests/browser/browser_cfr_message.js
@@ -0,0 +1,67 @@
+const { ASRouter } = ChromeUtils.import(
+ "resource://activity-stream/lib/ASRouter.jsm"
+);
+const { ASRouterTriggerListeners } = ChromeUtils.import(
+ "resource://activity-stream/lib/ASRouterTriggerListeners.jsm"
+);
+
+const { SpecialMessageActions } = ChromeUtils.importESModule(
+ "resource://messaging-system/lib/SpecialMessageActions.sys.mjs"
+);
+
+add_task(async function cfr_firefoxview_should_show() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.firefox-view.view-count", 0]],
+ });
+
+ let cfrSpy = sinon.spy(ASRouter, "routeCFRMessage");
+ let specialMessageActionsSpy = sinon.spy(
+ SpecialMessageActions,
+ "handleAction"
+ );
+ registerCleanupFunction(() => {
+ cfrSpy.restore();
+ specialMessageActionsSpy.restore();
+ ASRouter.resetMessageState();
+ ASRouter.unblockMessageById("CFR_FIREFOX_VIEW");
+ ASRouterTriggerListeners.get("nthTabClosed").uninit();
+ });
+
+ let tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser);
+ let tab2 = await BrowserTestUtils.openNewForegroundTab(gBrowser);
+ let tab3 = await BrowserTestUtils.openNewForegroundTab(gBrowser);
+
+ const showPanel = BrowserTestUtils.waitForEvent(
+ PopupNotifications.panel,
+ "popupshown",
+ target => {
+ return target;
+ }
+ );
+ BrowserTestUtils.removeTab(tab1);
+ BrowserTestUtils.removeTab(tab2);
+ BrowserTestUtils.removeTab(tab3);
+
+ await showPanel;
+
+ Assert.equal(cfrSpy.lastCall.args[0].id, "CFR_FIREFOX_VIEW");
+
+ const notification = document.querySelector(
+ "#contextual-feature-recommendation-notification"
+ );
+
+ Assert.ok(notification);
+ Assert.ok(document.querySelector(".popup-notification-primary-button"));
+
+ Assert.ok(document.querySelector(".popup-notification-secondary-button"));
+
+ await notification.button.click();
+
+ Assert.equal(
+ specialMessageActionsSpy.firstCall.args[0].type,
+ "OPEN_FIREFOX_VIEW"
+ );
+ await SpecialPowers.popPrefEnv();
+
+ closeFirefoxViewTab(window);
+});