Bug 1392167 - Have getCurrentActiveTour() check states of all DOM elements. r=fischer r=gasolin
MozReview-Commit-ID: DHu4ZKGXdfD
--- a/browser/extensions/onboarding/test/browser/browser_onboarding_select_default_tour.js
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_select_default_tour.js
@@ -26,65 +26,35 @@ add_task(async function test_default_tou
info("Make sure the default tour is active and open the right page");
let { activeNavItemId, activePageId } = await getCurrentActiveTour(tab.linkedBrowser);
is(`#${activeNavItemId}`, PRIVATE_BROWSING_TOUR_ID, "default tour is active");
is(activePageId, "onboarding-tour-private-browsing-page", "default tour page is shown");
await BrowserTestUtils.removeTab(tab);
});
-add_task(async function test_first_tour_is_active_by_default() {
- 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 tab = await openTab(ABOUT_NEWTAB_URL);
- await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
- await BrowserTestUtils.synthesizeMouseAtCenter(OVERLAY_ICON_ID, {}, tab.linkedBrowser);
- await promiseOnboardingOverlayOpened(tab.linkedBrowser);
-
- info("Make sure the default tour is selected");
- let doc = content && content.document;
- let dom = doc.querySelector(PRIVATE_BROWSING_TOUR_ID);
- ok(dom.classList.contains(CLASS_ACTIVE), "default tour is selected");
- let dom2 = doc.querySelector(ADDONS_TOUR_ID);
- ok(!dom2.classList.contains(CLASS_ACTIVE), "none default tour should not be selected");
- let dom3 = doc.querySelector(CUSTOMIZE_TOUR_ID);
- ok(!dom3.classList.contains(CLASS_ACTIVE), "none default tour should not be selected");
-
- await BrowserTestUtils.removeTab(tab);
-});
-
add_task(async function test_select_first_uncomplete_tour() {
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"],
]});
setTourCompletedState("onboarding-tour-private-browsing", true);
let tab = await openTab(ABOUT_NEWTAB_URL);
await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
await BrowserTestUtils.synthesizeMouseAtCenter(OVERLAY_ICON_ID, {}, tab.linkedBrowser);
await promiseOnboardingOverlayOpened(tab.linkedBrowser);
info("Make sure the first uncomplete tour is selected");
- let doc = content && content.document;
- let dom = doc.querySelector(PRIVATE_BROWSING_TOUR_ID);
- ok(!dom.classList.contains(CLASS_ACTIVE), "the first tour is set completed and should not be selected");
- let dom2 = doc.querySelector(ADDONS_TOUR_ID);
- ok(dom2.classList.contains(CLASS_ACTIVE), "the first uncomplete tour is selected");
- let dom3 = doc.querySelector(CUSTOMIZE_TOUR_ID);
- ok(!dom3.classList.contains(CLASS_ACTIVE), "other tour should not be selected");
+ let { activeNavItemId, activePageId } = await getCurrentActiveTour(tab.linkedBrowser);
+ is(`#${activeNavItemId}`, ADDONS_TOUR_ID, "default tour is active");
+ is(activePageId, "onboarding-tour-addons-page", "default tour page is shown");
await BrowserTestUtils.removeTab(tab);
});
add_task(async function test_select_first_tour_when_all_tours_are_complete() {
resetOnboardingDefaultState();
await SpecialPowers.pushPrefEnv({set: [
["browser.onboarding.tour-type", "new"],
@@ -97,18 +67,14 @@ add_task(async function test_select_firs
setTourCompletedState("onboarding-tour-customize", true);
let tab = await openTab(ABOUT_NEWTAB_URL);
await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
await BrowserTestUtils.synthesizeMouseAtCenter(OVERLAY_ICON_ID, {}, tab.linkedBrowser);
await promiseOnboardingOverlayOpened(tab.linkedBrowser);
info("Make sure the first tour is selected when all tours are completed");
- let doc = content && content.document;
- let dom = doc.querySelector(PRIVATE_BROWSING_TOUR_ID);
- ok(dom.classList.contains(CLASS_ACTIVE), "should be selected when all tours are completed");
- let dom2 = doc.querySelector(ADDONS_TOUR_ID);
- ok(!dom2.classList.contains(CLASS_ACTIVE), "other tour should not be selected");
- let dom3 = doc.querySelector(CUSTOMIZE_TOUR_ID);
- ok(!dom3.classList.contains(CLASS_ACTIVE), "other tour should not be selected");
+ let { activeNavItemId, activePageId } = await getCurrentActiveTour(tab.linkedBrowser);
+ is(`#${activeNavItemId}`, PRIVATE_BROWSING_TOUR_ID, "default tour is active");
+ is(activePageId, "onboarding-tour-private-browsing-page", "default tour page is shown");
await BrowserTestUtils.removeTab(tab);
});
--- a/browser/extensions/onboarding/test/browser/head.js
+++ b/browser/extensions/onboarding/test/browser/head.js
@@ -175,26 +175,32 @@ function getCurrentNotificationTargetTou
function getCurrentActiveTour(browser) {
return ContentTask.spawn(browser, {}, function() {
let list = content.document.querySelector("#onboarding-tour-list");
let items = list.querySelectorAll(".onboarding-tour-item");
let activeNavItemId = null;
for (let item of items) {
if (item.classList.contains("onboarding-active")) {
- activeNavItemId = item.id;
- break;
+ if (!activeNavItemId) {
+ activeNavItemId = item.id;
+ } else {
+ ok(false, "There are more than one item marked as active.");
+ }
}
}
let activePageId = null;
let pages = content.document.querySelectorAll(".onboarding-tour-page");
for (let page of pages) {
if (page.style.display != "none") {
- activePageId = page.id;
- break;
+ if (!activePageId) {
+ activePageId = page.id;
+ } else {
+ ok(false, "Thre are more than one tour page visible.");
+ }
}
}
return { activeNavItemId, activePageId };
});
}
function waitUntilWindowIdle(browser) {
return ContentTask.spawn(browser, {}, function() {