Bug 1375775 - test cases for reusable tourset;r=mossop

MozReview-Commit-ID: IlxgYRuFpCc

--HG--
extra : rebase_source : 5fb443a6181e909e6e7dad276e0e5b60ba983936
This commit is contained in:
gasolin 2017-07-07 11:52:33 +08:00
Родитель 6a631df7f2
Коммит 345a2f81da
5 изменённых файлов: 111 добавлений и 9 удалений

Просмотреть файл

@ -4,3 +4,4 @@ support-files =
[browser_onboarding_notification.js]
[browser_onboarding_tours.js]
[browser_onboarding_tourset.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

Просмотреть файл

@ -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);

Просмотреть файл

@ -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);
}
});

Просмотреть файл

@ -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", "");