/* Any copyright is dedicated to the Public Domain.
 http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

const TEST_URL = `about:preferences`;

// Test that the "Screenshot Node" feature works in about:preferences (See Bug 1691349).

function hexToCSS(hex) {
  if (!hex) {
    return null;
  }
  const rgba = InspectorUtils.colorToRGBA(hex);
  info(`rgba: '${JSON.stringify(rgba)}'`);
  // Drop off the 'a' component since the color will be opaque
  return `rgb(${rgba.r}, ${rgba.g}, ${rgba.b})`;
}

add_task(async function () {
  const { inspector, toolbox } = await openInspectorForURL(TEST_URL);

  info("Select the main content node");
  await selectNode(".main-content", inspector);

  let inContentPageBackgroundColor = await getComputedStyleProperty(
    ":root",
    null,
    "--in-content-page-background"
  );
  inContentPageBackgroundColor = inContentPageBackgroundColor.trim();

  info("Take a screenshot of the element and verify it looks as expected");
  const image = await takeNodeScreenshot(inspector);
  // We only check that we have the right background color, since it would be difficult
  // to assert the look of any other area in the page.
  await checkImageColorAt({
    image,
    x: 0,
    y: 0,
    expectedColor: hexToCSS(inContentPageBackgroundColor),
    label: "The screenshot was taken",
  });

  await toolbox.destroy();
});
