Bug 1392167 - Have getCurrentActiveTour() check states of all DOM elements. r=fischer r=gasolin draft
authorTimothy Guan-tin Chien <timdream@gmail.com>
Mon, 21 Aug 2017 12:57:33 +0800
changeset 649673 7906746f8cf75321d80c972032d1c8b2e097108f
parent 649622 7dddbd85047c6dc73ddbe1e423cd643a217845b3
child 727133 3431c8a812a1b716604da755fd4145abded3c263
push id75092
push usertimdream@gmail.com
push dateMon, 21 Aug 2017 04:58:02 +0000
reviewersfischer, gasolin
bugs1392167
milestone57.0a1
Bug 1392167 - Have getCurrentActiveTour() check states of all DOM elements. r=fischer r=gasolin MozReview-Commit-ID: DHu4ZKGXdfD
browser/extensions/onboarding/test/browser/browser_onboarding_select_default_tour.js
browser/extensions/onboarding/test/browser/head.js
--- 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() {