зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1598026 - add OOP frame mutation tests. Re-enable oop tree expansion test. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D78596
This commit is contained in:
Родитель
7c46c9c1a3
Коммит
dbf76d8e3e
|
@ -35,6 +35,5 @@ skip-if = (os == 'linux' && debug && bits == 64) # Bug 1511247
|
|||
[browser_accessibility_tree_audit.js]
|
||||
[browser_accessibility_tree_contrast.js]
|
||||
[browser_accessibility_tree_nagivation_oop.js]
|
||||
skip-if = true # Bug 1632567
|
||||
[browser_accessibility_tree_nagivation.js]
|
||||
[browser_accessibility_tree.js]
|
||||
|
|
|
@ -14,29 +14,16 @@ const TEST_URI = `<html>
|
|||
</body>
|
||||
</html>`;
|
||||
|
||||
/**
|
||||
* Test data has the format of:
|
||||
* {
|
||||
* desc {String} description for better logging
|
||||
* setup {Function} An optional setup that needs to be performed before
|
||||
* the state of the tree and the sidebar can be checked.
|
||||
* expected {JSON} An expected states for the tree and the sidebar.
|
||||
* }
|
||||
*/
|
||||
const tests = [
|
||||
{
|
||||
desc: "Expand first and second rows, select third row.",
|
||||
setup: async ({ doc }) => {
|
||||
await toggleRow(doc, 0);
|
||||
await toggleRow(doc, 1);
|
||||
selectRow(doc, 3);
|
||||
},
|
||||
expected: {
|
||||
tree: [
|
||||
{
|
||||
const documentRow = {
|
||||
role: "document",
|
||||
name: `"Accessibility Panel Test"`,
|
||||
},
|
||||
};
|
||||
const documentRowOOP = {
|
||||
role: "document",
|
||||
name: `""text label`,
|
||||
badges: ["text label"],
|
||||
};
|
||||
const subtree = [
|
||||
{
|
||||
role: "heading",
|
||||
name: `"Top level header"`,
|
||||
|
@ -49,8 +36,26 @@ const tests = [
|
|||
role: "paragraph",
|
||||
name: `""`,
|
||||
},
|
||||
],
|
||||
sidebar: {
|
||||
];
|
||||
const frameSubtree = [
|
||||
{ role: "internal frame", name: `"Accessibility Panel Test (OOP)"` },
|
||||
{
|
||||
role: "document",
|
||||
name: `"Accessibility Panel Test (OOP)"`,
|
||||
},
|
||||
];
|
||||
const subtreeOOP = [...frameSubtree, ...subtree];
|
||||
const renamed = [
|
||||
{
|
||||
role: "heading",
|
||||
name: `"New Header"`,
|
||||
},
|
||||
{
|
||||
role: "text leaf",
|
||||
name: `"New Header"`,
|
||||
},
|
||||
];
|
||||
const paragraphSidebar = {
|
||||
name: null,
|
||||
role: "paragraph",
|
||||
actions: [],
|
||||
|
@ -60,82 +65,153 @@ const tests = [
|
|||
childCount: 1,
|
||||
indexInParent: 1,
|
||||
states: ["selectable text", "opaque", "enabled", "sensitive"],
|
||||
};
|
||||
const headerSidebar = {
|
||||
name: "Top level header",
|
||||
role: "text leaf",
|
||||
};
|
||||
const newHeaderSidebar = {
|
||||
name: "New Header",
|
||||
};
|
||||
|
||||
function removeRow(rowNumber) {
|
||||
return async ({ doc, browser }) => {
|
||||
is(
|
||||
doc.querySelectorAll(".treeRow").length,
|
||||
rowNumber,
|
||||
"Tree size is correct."
|
||||
);
|
||||
await SpecialPowers.spawn(browser, [], async () => {
|
||||
const iframe = content.document.getElementsByTagName("iframe")[0];
|
||||
if (iframe) {
|
||||
await SpecialPowers.spawn(iframe, [], () =>
|
||||
content.document.getElementById("p").remove()
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
content.document.getElementById("p").remove();
|
||||
});
|
||||
await BrowserTestUtils.waitForCondition(
|
||||
() => doc.querySelectorAll(".treeRow").length === rowNumber - 1,
|
||||
"Tree updated."
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
async function rename({ browser }) {
|
||||
await SpecialPowers.spawn(browser, [], async () => {
|
||||
const iframe = content.document.getElementsByTagName("iframe")[0];
|
||||
if (iframe) {
|
||||
await SpecialPowers.spawn(
|
||||
iframe,
|
||||
[],
|
||||
() => (content.document.getElementById("h1").textContent = "New Header")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
content.document.getElementById("h1").textContent = "New Header";
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Test data has the format of:
|
||||
* {
|
||||
* desc {String} description for better logging
|
||||
* setup {Function} An optional setup that needs to be performed before
|
||||
* the state of the tree and the sidebar can be checked.
|
||||
* expected {JSON} An expected states for the tree and the sidebar.
|
||||
* }
|
||||
*/
|
||||
const testsTopLevel = [
|
||||
{
|
||||
desc: "Expand first and second rows, select third row.",
|
||||
setup: async ({ doc }) => {
|
||||
await toggleRow(doc, 0);
|
||||
await toggleRow(doc, 1);
|
||||
selectRow(doc, 3);
|
||||
},
|
||||
expected: {
|
||||
tree: [documentRow, ...subtree],
|
||||
sidebar: paragraphSidebar,
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "Remove a child from a document.",
|
||||
setup: async ({ doc, browser }) => {
|
||||
is(doc.querySelectorAll(".treeRow").length, 4, "Tree size is correct.");
|
||||
await SpecialPowers.spawn(browser, [], () =>
|
||||
content.document.getElementById("p").remove()
|
||||
);
|
||||
await BrowserTestUtils.waitForCondition(
|
||||
() => doc.querySelectorAll(".treeRow").length === 3,
|
||||
"Tree updated."
|
||||
);
|
||||
},
|
||||
setup: removeRow(4),
|
||||
expected: {
|
||||
tree: [
|
||||
{
|
||||
role: "document",
|
||||
name: `"Accessibility Panel Test"`,
|
||||
},
|
||||
{
|
||||
role: "heading",
|
||||
name: `"Top level header"`,
|
||||
},
|
||||
{
|
||||
role: "text leaf",
|
||||
name: `"Top level header"`,
|
||||
},
|
||||
],
|
||||
sidebar: {
|
||||
name: "Top level header",
|
||||
role: "text leaf",
|
||||
},
|
||||
tree: [documentRow, ...subtree.slice(0, -1)],
|
||||
sidebar: headerSidebar,
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "Update child's text content.",
|
||||
setup: async ({ browser }) => {
|
||||
await SpecialPowers.spawn(browser, [], () => {
|
||||
content.document.getElementById("h1").textContent = "New Header";
|
||||
});
|
||||
},
|
||||
setup: rename,
|
||||
expected: {
|
||||
tree: [
|
||||
{
|
||||
role: "document",
|
||||
name: `"Accessibility Panel Test"`,
|
||||
},
|
||||
{
|
||||
role: "heading",
|
||||
name: `"New Header"`,
|
||||
},
|
||||
{
|
||||
role: "text leaf",
|
||||
name: `"New Header"`,
|
||||
},
|
||||
],
|
||||
tree: [documentRow, ...renamed],
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "Select third row in the tree.",
|
||||
setup: ({ doc }) => selectRow(doc, 1),
|
||||
expected: {
|
||||
sidebar: {
|
||||
name: "New Header",
|
||||
sidebar: newHeaderSidebar,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const testsOOP = [
|
||||
{
|
||||
desc: "Expand rows until we reach an internal OOP frame.",
|
||||
setup: async ({ doc }) => {
|
||||
await toggleRow(doc, 0);
|
||||
await toggleRow(doc, 1);
|
||||
await toggleRow(doc, 2);
|
||||
await toggleRow(doc, 3);
|
||||
selectRow(doc, 5);
|
||||
},
|
||||
expected: {
|
||||
tree: [documentRowOOP, ...subtreeOOP],
|
||||
sidebar: paragraphSidebar,
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "Remove a child from a document.",
|
||||
setup: removeRow(6),
|
||||
expected: {
|
||||
tree: [documentRowOOP, ...subtreeOOP.slice(0, -1)],
|
||||
sidebar: headerSidebar,
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "Update child's text content.",
|
||||
setup: rename,
|
||||
expected: {
|
||||
tree: [documentRowOOP, ...frameSubtree, ...renamed],
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "Select third row in the tree.",
|
||||
setup: ({ doc }) => selectRow(doc, 1),
|
||||
expected: {
|
||||
sidebar: newHeaderSidebar,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* Test that checks the Accessibility panel after DOM tree mutations.
|
||||
* Tests that checks the Accessibility panel after DOM tree mutations.
|
||||
*/
|
||||
addA11yPanelTestsTask(
|
||||
tests,
|
||||
testsTopLevel,
|
||||
TEST_URI,
|
||||
"Test Accessibility panel after DOM tree mutations."
|
||||
);
|
||||
|
||||
addA11yPanelTestsTask(
|
||||
testsOOP,
|
||||
TEST_URI,
|
||||
"Test Accessibility panel after DOM tree mutations in the OOP frame.",
|
||||
{ remoteIframe: true }
|
||||
);
|
||||
|
|
Загрузка…
Ссылка в новой задаче