fune/browser/components/uitour/test/browser_trackingProtection.js
Johann Hofmann 5584301845 Bug 1476218 - Part 3 - Update Tracking Protection tests to reflect Content Blocking changes. r=nhnt11
This commit also moves the remaining trackingUI_* tests out of b/b/c/test/general,
since I needed to touch them anyway

Differential Revision: https://phabricator.services.mozilla.com/D2935

--HG--
rename : browser/base/content/test/general/benignPage.html => browser/base/content/test/trackingUI/benignPage.html
rename : browser/base/content/test/general/browser_trackingUI_3.js => browser/base/content/test/trackingUI/browser_trackingUI_3.js
rename : browser/base/content/test/general/browser_trackingUI_4.js => browser/base/content/test/trackingUI/browser_trackingUI_animation_2.js
rename : browser/base/content/test/general/browser_trackingUI_6.js => browser/base/content/test/trackingUI/browser_trackingUI_fetch.js
rename : browser/base/content/test/general/browser_trackingUI_5.js => browser/base/content/test/trackingUI/browser_trackingUI_pbmode_exceptions.js
rename : browser/base/content/test/general/browser_trackingUI_telemetry.js => browser/base/content/test/trackingUI/browser_trackingUI_telemetry.js
rename : browser/base/content/test/general/file_trackingUI_6.html => browser/base/content/test/trackingUI/file_trackingUI_fetch.html
rename : browser/base/content/test/general/file_trackingUI_6.js => browser/base/content/test/trackingUI/file_trackingUI_fetch.js
rename : browser/base/content/test/general/file_trackingUI_6.js^headers^ => browser/base/content/test/trackingUI/file_trackingUI_fetch.js^headers^
rename : browser/base/content/test/general/trackingPage.html => browser/base/content/test/trackingUI/trackingPage.html
extra : rebase_source : 2a12463ab2ba39bdcf077580a2d6e565f80c879c
2018-08-08 14:31:34 +02:00

92 lines
3.9 KiB
JavaScript

"use strict";
const PREF_INTRO_COUNT = "privacy.trackingprotection.introCount";
const PREF_CB_ENABLED = "browser.contentblocking.enabled";
const PREF_TP_ENABLED = "privacy.trackingprotection.enabled";
const BENIGN_PAGE = "http://tracking.example.org/browser/browser/base/content/test/trackingUI/benignPage.html";
const TRACKING_PAGE = "http://tracking.example.org/browser/browser/base/content/test/trackingUI/trackingPage.html";
const TOOLTIP_PANEL = document.getElementById("UITourTooltip");
const TOOLTIP_ANCHOR = document.getElementById("tracking-protection-icon-animatable-box");
var {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
registerCleanupFunction(function() {
UrlClassifierTestUtils.cleanupTestTrackers();
Services.prefs.clearUserPref(PREF_CB_ENABLED);
Services.prefs.clearUserPref(PREF_TP_ENABLED);
Services.prefs.clearUserPref(PREF_INTRO_COUNT);
});
function allowOneIntro() {
Services.prefs.setIntPref(PREF_INTRO_COUNT, window.ContentBlocking.MAX_INTROS - 1);
}
add_task(async function setup_test() {
Services.prefs.setBoolPref(PREF_CB_ENABLED, true);
Services.prefs.setBoolPref(PREF_TP_ENABLED, true);
await UrlClassifierTestUtils.addTestTrackers();
});
add_task(async function test_benignPage() {
info("Load a test page not containing tracking elements");
allowOneIntro();
await BrowserTestUtils.withNewTab({gBrowser, url: BENIGN_PAGE}, async function() {
await waitForConditionPromise(() => {
return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
}, "Info panel shouldn't appear on a benign page").
then(() => ok(false, "Info panel shouldn't appear"),
() => {
ok(true, "Info panel didn't appear on a benign page");
});
});
});
add_task(async function test_trackingPages() {
info("Load a test page containing tracking elements");
allowOneIntro();
await BrowserTestUtils.withNewTab({gBrowser, url: TRACKING_PAGE}, async function() {
await new Promise((resolve, reject) => {
waitForPopupAtAnchor(TOOLTIP_PANEL, TOOLTIP_ANCHOR, resolve,
"Intro panel should appear");
});
is(Services.prefs.getIntPref(PREF_INTRO_COUNT), window.ContentBlocking.MAX_INTROS, "Check intro count increased");
let step2URL = Services.urlFormatter.formatURLPref("privacy.trackingprotection.introURL") +
"?step=2&newtab=true";
let buttons = document.getElementById("UITourTooltipButtons");
info("Click the step text and nothing should happen");
let tabCount = gBrowser.tabs.length;
await EventUtils.synthesizeMouseAtCenter(buttons.children[0], {});
is(gBrowser.tabs.length, tabCount, "Same number of tabs should be open");
info("Resetting count to test that viewing the tour prevents future panels");
allowOneIntro();
let panelHiddenPromise = promisePanelElementHidden(window, TOOLTIP_PANEL);
let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, step2URL);
info("Clicking the main button");
EventUtils.synthesizeMouseAtCenter(buttons.children[1], {});
let tab = await tabPromise;
is(Services.prefs.getIntPref(PREF_INTRO_COUNT), window.ContentBlocking.MAX_INTROS,
"Check intro count is at the max after opening step 2");
is(gBrowser.tabs.length, tabCount + 1, "Tour step 2 tab opened");
await panelHiddenPromise;
ok(true, "Panel hid when the button was clicked");
BrowserTestUtils.removeTab(tab);
});
info("Open another tracking page and make sure we don't show the panel again");
await BrowserTestUtils.withNewTab({gBrowser, url: TRACKING_PAGE}, async function() {
await waitForConditionPromise(() => {
return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
}, "Info panel shouldn't appear more than MAX_INTROS").
then(() => ok(false, "Info panel shouldn't appear again"),
() => {
ok(true, "Info panel didn't appear more than MAX_INTROS on tracking pages");
});
});
});