From 345a2f81dacc46d0a511bff68c4ed5bd30213a67 Mon Sep 17 00:00:00 2001 From: gasolin Date: Fri, 7 Jul 2017 11:52:33 +0800 Subject: [PATCH] Bug 1375775 - test cases for reusable tourset;r=mossop MozReview-Commit-ID: IlxgYRuFpCc --HG-- extra : rebase_source : 5fb443a6181e909e6e7dad276e0e5b60ba983936 --- .../onboarding/test/browser/browser.ini | 1 + .../browser_onboarding_notification.js | 3 - .../test/browser/browser_onboarding_tours.js | 9 +- .../browser/browser_onboarding_tourset.js | 104 ++++++++++++++++++ .../onboarding/test/browser/head.js | 3 + 5 files changed, 111 insertions(+), 9 deletions(-) create mode 100644 browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js diff --git a/browser/extensions/onboarding/test/browser/browser.ini b/browser/extensions/onboarding/test/browser/browser.ini index 7f3098e0186e..18a4f852a4e2 100644 --- a/browser/extensions/onboarding/test/browser/browser.ini +++ b/browser/extensions/onboarding/test/browser/browser.ini @@ -4,3 +4,4 @@ support-files = [browser_onboarding_notification.js] [browser_onboarding_tours.js] +[browser_onboarding_tourset.js] diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_notification.js b/browser/extensions/onboarding/test/browser/browser_onboarding_notification.js index 0218d7b9464b..5096be5d24ad 100644 --- a/browser/extensions/onboarding/test/browser/browser_onboarding_notification.js +++ b/browser/extensions/onboarding/test/browser/browser_onboarding_notification.js @@ -5,7 +5,6 @@ add_task(async function test_show_tour_notifications_in_order() { resetOnboardingDefaultState(); - await SpecialPowers.pushPrefEnv({set: [["browser.onboarding.enabled", true]]}); let tourIds = TOUR_IDs; let tab = null; @@ -43,7 +42,6 @@ add_task(async function test_show_tour_notifications_in_order() { add_task(async function test_open_target_tour_from_notification() { resetOnboardingDefaultState(); - await SpecialPowers.pushPrefEnv({set: [["browser.onboarding.enabled", true]]}); let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); await BrowserTestUtils.loadURI(tab.linkedBrowser, ABOUT_NEWTAB_URL); @@ -61,7 +59,6 @@ add_task(async function test_open_target_tour_from_notification() { add_task(async function test_not_show_notification_for_completed_tour() { resetOnboardingDefaultState(); - await SpecialPowers.pushPrefEnv({set: [["browser.onboarding.enabled", true]]}); let tourIds = TOUR_IDs; // Make only the last tour uncompleted diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js b/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js index f8f2fc4303e1..28f31db9a3a3 100644 --- a/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js +++ b/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js @@ -29,11 +29,10 @@ function assertTourCompletedStyle(tourId, expectComplete, browser) { add_task(async function test_hide_onboarding_tours() { resetOnboardingDefaultState(); - await SpecialPowers.pushPrefEnv({set: [["browser.onboarding.enabled", true]]}); let tourIds = TOUR_IDs; let tabs = []; - for (let url of [ABOUT_NEWTAB_URL, ABOUT_HOME_URL]) { + for (let url of URLs) { let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); await BrowserTestUtils.loadURI(tab.linkedBrowser, url); await promiseOnboardingOverlayLoaded(tab.linkedBrowser); @@ -61,11 +60,10 @@ add_task(async function test_hide_onboarding_tours() { add_task(async function test_click_action_button_to_set_tour_completed() { resetOnboardingDefaultState(); - await SpecialPowers.pushPrefEnv({set: [["browser.onboarding.enabled", true]]}); let tourIds = TOUR_IDs; let tabs = []; - for (let url of [ABOUT_NEWTAB_URL, ABOUT_HOME_URL]) { + for (let url of URLs) { let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); await BrowserTestUtils.loadURI(tab.linkedBrowser, url); await promiseOnboardingOverlayLoaded(tab.linkedBrowser); @@ -91,7 +89,6 @@ add_task(async function test_click_action_button_to_set_tour_completed() { add_task(async function test_set_right_tour_completed_style_on_overlay() { resetOnboardingDefaultState(); - await SpecialPowers.pushPrefEnv({set: [["browser.onboarding.enabled", true]]}); let tourIds = TOUR_IDs; // Make the tours of even number as completed @@ -100,7 +97,7 @@ add_task(async function test_set_right_tour_completed_style_on_overlay() { } let tabs = []; - for (let url of [ABOUT_NEWTAB_URL, ABOUT_HOME_URL]) { + for (let url of URLs) { let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); await BrowserTestUtils.loadURI(tab.linkedBrowser, url); await promiseOnboardingOverlayLoaded(tab.linkedBrowser); diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js b/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js new file mode 100644 index 000000000000..114d6a1bb4fb --- /dev/null +++ b/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js @@ -0,0 +1,104 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +add_task(async function test_onboarding_default_new_tourset() { + resetOnboardingDefaultState(); + let tabs = []; + for (let url of URLs) { + let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); + await BrowserTestUtils.loadURI(tab.linkedBrowser, url); + await promiseOnboardingOverlayLoaded(tab.linkedBrowser); + await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser); + await promiseOnboardingOverlayOpened(tab.linkedBrowser); + tabs.push(tab); + } + + let doc = content && content.document; + let doms = doc.querySelectorAll(".onboarding-tour-item"); + is(doms.length, TOUR_IDs.length, "has exact tour numbers"); + doms.forEach((dom, idx) => { + is(TOUR_IDs[idx], dom.id, "contain defined onboarding id"); + }); + + for (let i = tabs.length - 1; i >= 0; --i) { + let tab = tabs[i]; + await BrowserTestUtils.removeTab(tab); + } +}); + +add_task(async function test_onboarding_custom_new_tourset() { + const CUSTOM_NEW_TOURs = [ + "onboarding-tour-private-browsing", + "onboarding-tour-addons", + "onboarding-tour-customize", + ]; + + resetOnboardingDefaultState(); + await SpecialPowers.pushPrefEnv({set: [ + ["browser.onboarding.tour-type", "new"], + ["browser.onboarding.tourset-version", 1], + ["browser.onboarding.seen-tourset-version", 1], + ["browser.onboarding.newtour", "private,addons,customize"], + ]}); + + let tabs = []; + for (let url of URLs) { + let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); + await BrowserTestUtils.loadURI(tab.linkedBrowser, url); + await promiseOnboardingOverlayLoaded(tab.linkedBrowser); + await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser); + await promiseOnboardingOverlayOpened(tab.linkedBrowser); + tabs.push(tab); + } + + let doc = content && content.document; + let doms = doc.querySelectorAll(".onboarding-tour-item"); + is(doms.length, CUSTOM_NEW_TOURs.length, "has exact tour numbers"); + doms.forEach((dom, idx) => { + is(CUSTOM_NEW_TOURs[idx], dom.id, "contain defined onboarding id"); + }); + + for (let i = tabs.length - 1; i >= 0; --i) { + let tab = tabs[i]; + await BrowserTestUtils.removeTab(tab); + } +}); + +add_task(async function test_onboarding_custom_update_tourset() { + const CUSTOM_UPDATE_TOURs = [ + "onboarding-tour-customize", + "onboarding-tour-private-browsing", + "onboarding-tour-addons", + ]; + resetOnboardingDefaultState(); + await SpecialPowers.pushPrefEnv({set: [ + ["browser.onboarding.tour-type", "update"], + ["browser.onboarding.tourset-version", 1], + ["browser.onboarding.seen-tourset-version", 1], + ["browser.onboarding.updatetour", "customize,private,addons"], + ]}); + + let tabs = []; + for (let url of URLs) { + let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); + await BrowserTestUtils.loadURI(tab.linkedBrowser, url); + await promiseOnboardingOverlayLoaded(tab.linkedBrowser); + await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser); + await promiseOnboardingOverlayOpened(tab.linkedBrowser); + tabs.push(tab); + } + + let doc = content && content.document; + let doms = doc.querySelectorAll(".onboarding-tour-item"); + is(doms.length, CUSTOM_UPDATE_TOURs.length, "has exact tour numbers"); + doms.forEach((dom, idx) => { + is(CUSTOM_UPDATE_TOURs[idx], dom.id, "contain defined onboarding id"); + }); + + for (let i = tabs.length - 1; i >= 0; --i) { + let tab = tabs[i]; + await BrowserTestUtils.removeTab(tab); + } +}); diff --git a/browser/extensions/onboarding/test/browser/head.js b/browser/extensions/onboarding/test/browser/head.js index 37621b25671e..9bfd83ba8dae 100644 --- a/browser/extensions/onboarding/test/browser/head.js +++ b/browser/extensions/onboarding/test/browser/head.js @@ -5,6 +5,7 @@ let { Preferences } = Cu.import("resource://gre/modules/Preferences.jsm", {}); const ABOUT_HOME_URL = "about:home"; const ABOUT_NEWTAB_URL = "about:newtab"; +const URLs = [ABOUT_HOME_URL, ABOUT_NEWTAB_URL]; const TOUR_IDs = [ "onboarding-tour-private-browsing", "onboarding-tour-addons", @@ -13,10 +14,12 @@ const TOUR_IDs = [ "onboarding-tour-default-browser", "onboarding-tour-sync", ]; +const UPDATE_TOUR_IDs = []; function resetOnboardingDefaultState() { // All the prefs should be reset to the default states // and no need to revert back so we don't use `SpecialPowers.pushPrefEnv` here. + Preferences.set("browser.onboarding.enabled", true); Preferences.set("browser.onboarding.hidden", false); Preferences.set("browser.onboarding.notification.finished", false); Preferences.set("browser.onboarding.notification.lastPrompted", "");