Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// InactivePropertyHelper positioned elements test cases.
// These are the properties we care about, those that are inactive when the element isn't
// positioned.
const PROPERTIES = [
{ property: "z-index", value: "2" },
{ property: "top", value: "20px" },
{ property: "right", value: "20px" },
{ property: "bottom", value: "20px" },
{ property: "left", value: "20px" },
];
// These are all of the different position values and whether the above properties are
// active or not for each.
const POSITIONS = [
{ position: "unset", isActive: false },
{ position: "initial", isActive: false },
{ position: "inherit", isActive: false },
{ position: "static", isActive: false },
{ position: "absolute", isActive: true },
{ position: "relative", isActive: true },
{ position: "fixed", isActive: true },
{ position: "sticky", isActive: true },
];
function makeTestCase(property, value, position, isActive) {
return {
info: `${property} is ${
isActive ? "" : "in"
}active when position is ${position}`,
property,
tagName: "div",
rules: [`div { ${property}: ${value}; position: ${position}; }`],
isActive,
};
}
// Make the test cases for all the combinations of PROPERTIES and POSITIONS
const mainTests = [];
for (const { property, value } of PROPERTIES) {
for (const { position, isActive } of POSITIONS) {
mainTests.push(makeTestCase(property, value, position, isActive));
}
}
// Add a few test cases to check that z-index actually works inside grids and flexboxes.
mainTests.push({
info: "z-index is active even on unpositioned elements if they are grid items",
property: "z-index",
createTestElement: rootNode => {
const container = document.createElement("div");
const element = document.createElement("span");
container.append(element);
rootNode.append(container);
return element;
},
rules: ["div { display: grid; }", "span { z-index: 3; }"],
ruleIndex: 1,
isActive: true,
});
mainTests.push({
info: "z-index is active even on unpositioned elements if they are flex items",
property: "z-index",
createTestElement: rootNode => {
const container = document.createElement("div");
const element = document.createElement("span");
container.append(element);
rootNode.append(container);
return element;
},
rules: ["div { display: flex; }", "span { z-index: 3; }"],
ruleIndex: 1,
isActive: true,
});
export default mainTests;