Our previous checks only verified single-axis overflow definitions, ignoring anything that had both a x and y value. Using this layout function ensures all axis are verified. It also excludes things we don't care about like :visible and :clipped overflow. Differential Revision: https://phabricator.services.mozilla.com/D289364
213 lines
5.9 KiB
JavaScript
213 lines
5.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/* import-globals-from ../../mochitest/role.js */
|
|
loadScripts({ name: "role.js", dir: MOCHITESTS_DIR });
|
|
|
|
/**
|
|
* Verify adding `overflow:hidden;` styling to a div causes it to
|
|
* get an accessible.
|
|
*/
|
|
addAccessibleTask(`<p>hello world</p>`, async function (browser, docAcc) {
|
|
const originalTree = { DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }] };
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding div element");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ unexpected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
const d = content.document.createElement("div");
|
|
content.document.body.appendChild(d);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding overflow:hidden styling to div");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ expected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
content.document.body.lastElementChild.setAttribute(
|
|
"style",
|
|
"overflow:hidden;"
|
|
);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, {
|
|
DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, { TEXT_CONTAINER: [] }],
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Verify adding `overflow:scroll;` styling to a div causes
|
|
* it to get an accessible.
|
|
*/
|
|
addAccessibleTask(`<p>hello world</p>`, async function (browser, docAcc) {
|
|
const originalTree = { DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }] };
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding div element");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ unexpected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
const d = content.document.createElement("div");
|
|
content.document.body.appendChild(d);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding overflow:scroll styling to div");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ expected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
content.document.body.lastElementChild.setAttribute(
|
|
"style",
|
|
"overflow:scroll;"
|
|
);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, {
|
|
DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, { TEXT_CONTAINER: [] }],
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Verify adding `overflow:auto;` styling to a div causes
|
|
* it to get an accessible, but `overflow:visible` does not.
|
|
*/
|
|
addAccessibleTask(`<p>hello world</p>`, async function (browser, docAcc) {
|
|
const originalTree = { DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }] };
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding div element");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ unexpected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
const d = content.document.createElement("div");
|
|
content.document.body.appendChild(d);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding overflow:visible styling to div");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ unexpected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
content.document.body.lastElementChild.setAttribute(
|
|
"style",
|
|
"overflow:visible;"
|
|
);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding overflow:auto styling to div");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ expected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
content.document.body.lastElementChild.setAttribute(
|
|
"style",
|
|
"overflow:auto;"
|
|
);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, {
|
|
DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, { TEXT_CONTAINER: [] }],
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Verify multi-axis overflow creates accs for relevant overflow styles only. This test checks:
|
|
* 1. `overflow: visible clip` does not create a generic (because neither axis is scrollable),
|
|
* 2. `overflow: hidden auto` and `overflow: visible scroll` do get generics
|
|
*/
|
|
addAccessibleTask(`<p>hello world</p>`, async function (browser, docAcc) {
|
|
const originalTree = { DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }] };
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding first div element");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ unexpected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
const div = content.document.createElement("div");
|
|
div.setAttribute("role", "none");
|
|
content.document.body.appendChild(div);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding overflow:visible clip styling to first div");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ unexpected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
content.document.body.lastElementChild.setAttribute(
|
|
"style",
|
|
"overflow: visible clip;"
|
|
);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, originalTree);
|
|
info("Adding overflow:hidden auto styling to first div");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ expected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
content.document.body.lastElementChild.setAttribute(
|
|
"style",
|
|
"overflow: hidden auto;"
|
|
);
|
|
}
|
|
);
|
|
|
|
const treeWithOneContainer = {
|
|
DOCUMENT: [{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, { TEXT_CONTAINER: [] }],
|
|
};
|
|
testAccessibleTree(docAcc, treeWithOneContainer);
|
|
info("Adding second div element");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ unexpected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
const div = content.document.createElement("div");
|
|
div.setAttribute("role", "none");
|
|
content.document.body.appendChild(div);
|
|
}
|
|
);
|
|
|
|
testAccessibleTree(docAcc, treeWithOneContainer);
|
|
info("Adding overflow:visible scroll styling to second div");
|
|
await contentSpawnMutation(
|
|
browser,
|
|
{ expected: [[EVENT_REORDER, docAcc]] },
|
|
function () {
|
|
content.document.body.lastElementChild.setAttribute(
|
|
"style",
|
|
"overflow: visible scroll;"
|
|
);
|
|
}
|
|
);
|
|
|
|
// verify tree with two containers
|
|
testAccessibleTree(docAcc, {
|
|
DOCUMENT: [
|
|
{ PARAGRAPH: [{ TEXT_LEAF: [] }] },
|
|
{ TEXT_CONTAINER: [] },
|
|
{ TEXT_CONTAINER: [] },
|
|
],
|
|
});
|
|
});
|