/* 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;