Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test is know to fail with pattern: a11y_checks
- Manifest: devtools/client/aboutdebugging/test/browser/browser_backward_compat.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
/* import-globals-from helper-backward-compat.js */
Services.scriptloader.loadSubScript(
CHROME_URL_ROOT + "helper-backward-compat.js",
this
);
// Check the Inspector against a remote target: the markup view is not blank and
// selecting another element updates the computed view. This mirrors the
// Inspector part of the "Inspect a remote target" step of the manual smoke
// test, see devtools/docs/contributor/release.md.
addCompatTask(async function (config) {
const setup = await openCompatToolbox(config, "debugger.html");
const { toolbox } = setup;
info("Select the inspector");
const inspector = await toolbox.selectTool("inspector");
info("Check that the markup view is not blank");
const markupDoc = inspector.markup.doc;
info("Wait until tags are rendered in the markup view");
await waitFor(
() => !!markupDoc.querySelector(".tag-line"),
"Tags should be rendered in the markup view"
);
ok(
markupDoc.body.textContent.includes("click-me"),
"The markup view displays the content of the remote page"
);
info("Select the computed view");
await inspector.sidebar.select("computedview");
const computedView = inspector.getPanel("computedview").computedView;
info("Include browser styles in the computed view");
const onBrowserStyles = inspector.once("computed-view-refreshed");
computedView.includeBrowserStylesCheckbox.click();
await onBrowserStyles;
await selectNodeOnRemoteTarget(inspector, "h1#title");
info("Check that the computed view is not blank");
const computedDoc = computedView.styleDocument;
info("Wait until computed values are rendered in the computed view");
await waitFor(
() =>
computedDoc.querySelector(
".computed-property-view .computed-property-value"
),
"Computed values should be rendered in the computed view"
);
const titleProperties = getComputedProperties(computedView);
is(titleProperties.get("display"), "block", "h1#title is displayed as block");
await selectNodeOnRemoteTarget(inspector, "button#click-me");
await waitFor(() => {
const properties = getComputedProperties(computedView);
return properties.get("display") === "inline-block";
}, "Selecting another element updated the computed view");
await closeCompatToolbox(config, setup);
});
/**
* Select the node matching the provided selector on the remote target, and wait
* until the computed view has been refreshed for it.
*/
async function selectNodeOnRemoteTarget(inspector, selector) {
info(`Select ${selector} in the markup view`);
const nodeFront = await inspector.walker.querySelector(
inspector.walker.rootNode,
selector
);
ok(nodeFront, `Found ${selector} on the remote target`);
const onRefreshed = inspector.once("computed-view-refreshed");
inspector.selection.setNodeFront(nodeFront, { reason: "test" });
await onRefreshed;
}
/**
* Map of property name to computed value, as held by the computed view for the
* currently selected node. Read from the property views rather than the DOM,
* because the computed view only renders the rows which are currently visible.
*/
function getComputedProperties(computedView) {
return new Map(
computedView.propertyViews.map(propertyView => [
propertyView.name,
propertyView.value,
])
);
}