summaryrefslogtreecommitdiffstats
path: root/toolkit/components/printing/tests/browser_print_simplified_mode.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/printing/tests/browser_print_simplified_mode.js')
-rw-r--r--toolkit/components/printing/tests/browser_print_simplified_mode.js262
1 files changed, 262 insertions, 0 deletions
diff --git a/toolkit/components/printing/tests/browser_print_simplified_mode.js b/toolkit/components/printing/tests/browser_print_simplified_mode.js
new file mode 100644
index 0000000000..dc9c05d9b4
--- /dev/null
+++ b/toolkit/components/printing/tests/browser_print_simplified_mode.js
@@ -0,0 +1,262 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(async function switch_print_preview_browsers() {
+ await PrintHelper.withTestPage(async helper => {
+ // Wait for the article state to be determined.
+ await helper.waitForReaderModeReady();
+
+ // Start print preview.
+ await helper.startPrint();
+ let sourcePreviewBrowser = helper.currentPrintPreviewBrowser;
+
+ {
+ // Assert that we are showing the initial content on default print preview browser
+ let [headerText, headingText] = await SpecialPowers.spawn(
+ sourcePreviewBrowser,
+ [],
+ async function () {
+ return [
+ content.document.querySelector("header").textContent,
+ content.document.querySelector("h1").textContent,
+ ];
+ }
+ );
+ is(headerText, "Site header", "Should have initial content.");
+ is(headingText, "Article title", "Should have initial title.");
+ }
+
+ // Here we call simplified mode
+ await helper.openMoreSettings();
+ let simplifyRadio = helper.get("source-version-simplified-radio");
+ ok(!simplifyRadio.checked, "Simplify page is not checked");
+ ok(BrowserTestUtils.isVisible(simplifyRadio), "Simplify is shown");
+
+ await helper.waitForPreview(() => helper.click(simplifyRadio));
+ let simplifiedPreviewBrowser = helper.currentPrintPreviewBrowser;
+ is(
+ simplifiedPreviewBrowser.getAttribute("previewtype"),
+ "simplified",
+ "Simplified browser was rendered"
+ );
+ is(
+ simplifiedPreviewBrowser.closest("stack").getAttribute("previewtype"),
+ "simplified",
+ "Simplified browser is selected"
+ );
+ ok(
+ BrowserTestUtils.isVisible(simplifiedPreviewBrowser),
+ "Simplified browser is visible"
+ );
+ ok(simplifyRadio.checked, "Simplify page is checked");
+
+ {
+ // Assert that we are showing custom content on simplified print preview browser
+ let [hasHeader, headingText] = await SpecialPowers.spawn(
+ simplifiedPreviewBrowser,
+ [],
+ async function () {
+ return [
+ !!content.document.querySelector("header"),
+ content.document.querySelector("h1").textContent,
+ ];
+ }
+ );
+ ok(!hasHeader, "The header was simplified out");
+ is(headingText, "Article title", "The heading is still there");
+ }
+
+ // Switch back to default print preview content
+ let sourceRadio = helper.get("source-version-source-radio");
+ ok(!sourceRadio.checked, "Source is not checked");
+ await helper.waitForPreview(() => helper.click(sourceRadio));
+ is(
+ helper.currentPrintPreviewBrowser,
+ sourcePreviewBrowser,
+ "Source browser was rendered"
+ );
+ is(
+ sourcePreviewBrowser.getAttribute("previewtype"),
+ "source",
+ "Source browser was rendered"
+ );
+ is(
+ sourcePreviewBrowser.closest("stack").getAttribute("previewtype"),
+ "source",
+ "Source browser is selected"
+ );
+ ok(
+ BrowserTestUtils.isVisible(sourcePreviewBrowser),
+ "Source browser is visible"
+ );
+ ok(sourceRadio.checked, "Source version is checked");
+
+ {
+ // Assert that we are showing the initial content on default print preview browser
+ let headerText = await SpecialPowers.spawn(
+ sourcePreviewBrowser,
+ [],
+ async function () {
+ return content.document.querySelector("header").textContent;
+ }
+ );
+ is(headerText, "Site header", "Should have initial content.");
+ }
+
+ await helper.closeDialog();
+ }, "simplifyArticleSample.html");
+});
+
+add_task(async function testPrintBackgroundsDisabledSimplified() {
+ await PrintHelper.withTestPage(async helper => {
+ // Wait for the article state to be determined.
+ await helper.waitForReaderModeReady();
+ await helper.startPrint();
+
+ helper.assertPreviewedWithSettings({
+ printBGImages: false,
+ printBGColors: false,
+ });
+
+ await helper.openMoreSettings();
+
+ let printBackgrounds = helper.get("backgrounds-enabled");
+ ok(!printBackgrounds.checked, "Print backgrounds is not checked");
+ ok(!printBackgrounds.disabled, "Print backgrounds in not disabled");
+
+ await helper.assertSettingsChanged(
+ { printBGImages: false, printBGColors: false },
+ { printBGImages: true, printBGColors: true },
+ async () => {
+ await helper.waitForPreview(() => helper.click(printBackgrounds));
+ }
+ );
+
+ // Print backgrounds was enabled for preview.
+ ok(printBackgrounds.checked, "Print backgrounds is checked");
+ ok(!printBackgrounds.disabled, "Print backgrounds is not disabled");
+ helper.assertPreviewedWithSettings({
+ printBGImages: true,
+ printBGColors: true,
+ });
+
+ let simplifyRadio = helper.get("source-version-simplified-radio");
+ ok(!simplifyRadio.checked, "Simplify page is not checked");
+ ok(BrowserTestUtils.isVisible(simplifyRadio), "Simplify is shown");
+
+ // Switch to simplified mode.
+ await helper.waitForPreview(() => helper.click(simplifyRadio));
+
+ // Print backgrounds should be disabled, it's incompatible with simplified.
+ ok(!printBackgrounds.checked, "Print backgrounds is now unchecked");
+ ok(printBackgrounds.disabled, "Print backgrounds has been disabled");
+ helper.assertPreviewedWithSettings({
+ printBGImages: false,
+ printBGColors: false,
+ });
+
+ // Switch back to source, printBackgrounds is remembered.
+ let sourceRadio = helper.get("source-version-source-radio");
+ ok(!sourceRadio.checked, "Source is not checked");
+ ok(BrowserTestUtils.isVisible(sourceRadio), "Source is shown");
+
+ await helper.waitForPreview(() => helper.click(sourceRadio));
+
+ ok(printBackgrounds.checked, "Print backgrounds setting was remembered");
+ ok(!printBackgrounds.disabled, "Print backgrounds can be changed again");
+ helper.assertPreviewedWithSettings({
+ printBGImages: true,
+ printBGColors: true,
+ });
+
+ await helper.closeDialog();
+ }, "simplifyArticleSample.html");
+});
+
+add_task(async function testSimplifyHiddenNonArticle() {
+ await PrintHelper.withTestPage(async helper => {
+ await helper.startPrint();
+ await helper.openMoreSettings();
+ let sourceVersionSection = helper.get("source-version-section");
+ ok(
+ BrowserTestUtils.isHidden(sourceVersionSection),
+ "Source version is hidden"
+ );
+ await helper.closeDialog();
+ }, "simplifyNonArticleSample.html");
+});
+
+add_task(async function testSimplifyNonArticleTabModal() {
+ await PrintHelper.withTestPage(async helper => {
+ let tab = gBrowser.selectedTab;
+
+ // Trick browser to think loaded tab has isArticle property set as true
+ tab.linkedBrowser.isArticle = true;
+
+ // Enter print preview
+ await helper.startPrint();
+
+ // Assert that we are showing the initial content on default print preview browser
+ await SpecialPowers.spawn(
+ helper.currentPrintPreviewBrowser,
+ [],
+ async () => {
+ is(
+ content.document.title,
+ "Non article title",
+ "Should have initial content."
+ );
+ }
+ );
+
+ await helper.openMoreSettings();
+
+ // Simplify the page.
+ let simplifyRadio = helper.get("source-version-simplified-radio");
+ ok(!simplifyRadio.checked, "Simplify is off");
+ await helper.waitForPreview(() => helper.click(simplifyRadio));
+ let simplifiedPreviewBrowser = helper.currentPrintPreviewBrowser;
+ is(
+ simplifiedPreviewBrowser.getAttribute("previewtype"),
+ "simplified",
+ "The simplified browser is shown"
+ );
+
+ // Assert that simplify page option is checked
+ ok(simplifyRadio.checked, "Should have simplify page option checked");
+
+ // Assert that we are showing recovery content on simplified print preview browser
+ await SpecialPowers.spawn(simplifiedPreviewBrowser, [], async () => {
+ await ContentTaskUtils.waitForCondition(
+ () => content.document.title === "Failed to load article from page",
+ "Simplified document title should be updated with recovery title."
+ );
+ });
+
+ await helper.closeDialog();
+ }, "simplifyNonArticleSample.html");
+});
+
+add_task(async function testSimplifyHiddenReaderMode() {
+ await PrintHelper.withTestPage(async helper => {
+ let tab = gBrowser.selectedTab;
+
+ // Trigger reader mode for the tab
+ let readerButton = document.getElementById("reader-mode-button");
+ await TestUtils.waitForCondition(() => !readerButton.hidden);
+ readerButton.click();
+ await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
+
+ // Print from reader mode
+ await helper.startPrint();
+ await helper.openMoreSettings();
+ let sourceVersionSection = helper.get("source-version-section");
+ ok(
+ BrowserTestUtils.isHidden(sourceVersionSection),
+ "Source version is hidden in reader mode"
+ );
+ await helper.closeDialog();
+ }, "simplifyArticleSample.html");
+});