summaryrefslogtreecommitdiffstats
path: root/toolkit/components/printing/tests/browser_print_scaling.js
blob: 85b8a6844987cb7243d2b5e18efb123f14a9e094 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

add_task(async function testInvalidScaleResetAfterDestinationChange() {
  const mockPrinterName = "Fake Printer";
  await PrintHelper.withTestPage(async helper => {
    helper.addMockPrinter(mockPrinterName);
    await helper.startPrint();

    let destinationPicker = helper.get("printer-picker");

    await helper.openMoreSettings();
    let scaleRadio = helper.get("percent-scale-choice");
    await helper.assertSettingsChanged(
      { shrinkToFit: true },
      { shrinkToFit: false },
      async () => {
        await helper.waitForPreview(() => helper.click(scaleRadio));
      }
    );
    let percentScale = helper.get("percent-scale");

    let scaleError = helper.get("error-invalid-scale");

    await helper.assertSettingsNotChanged({ scaling: 1 }, async () => {
      ok(scaleError.hidden, "Scale error is hidden");
      await helper.text(percentScale, "9");
      await BrowserTestUtils.waitForAttributeRemoval("hidden", scaleError);
      ok(!scaleError.hidden, "Scale error is showing");
    });

    is(destinationPicker.disabled, false, "Destination picker is enabled");

    // Select a new printer
    await helper.dispatchSettingsChange({ printerName: mockPrinterName });
    await BrowserTestUtils.waitForCondition(
      () => scaleError.hidden,
      "Wait for scale error to be hidden"
    );
    is(percentScale.value, "100", "Scale has reset to 100");

    await helper.closeDialog();
  });
});