forked from mirrors/gecko-dev
Bug 1558468 - Split InactivePropertyHelper test cases in multiple files. r=rcaliman.
This should make the test more managable as we add properties validators in InactivePropertyHelper. eslint doesn't support dynamic import yet, so we have to ignore the test file. Differential Revision: https://phabricator.services.mozilla.com/D34677 --HG-- rename : devtools/server/tests/mochitest/test_inspector-inactive-property-helper.html => devtools/server/tests/mochitest/inactive-property-helper/gap.js rename : devtools/server/tests/mochitest/test_inspector-inactive-property-helper.html => devtools/server/tests/mochitest/inactive-property-helper/max-min-width-height.js rename : devtools/server/tests/mochitest/test_inspector-inactive-property-helper.html => devtools/server/tests/mochitest/inactive-property-helper/vertical-align.js extra : moz-landing-system : lando
This commit is contained in:
parent
5adb6b1a6d
commit
9129865b0e
7 changed files with 393 additions and 350 deletions
|
|
@ -125,6 +125,7 @@ devtools/shared/qrcode/tests/mochitest/test_decode.html
|
|||
devtools/shared/tests/mochitest/*.html
|
||||
devtools/shared/webconsole/test/test_*.html
|
||||
devtools/client/webreplay/mochitest/examples/*.html
|
||||
devtools/server/tests/mochitest/test_inspector-inactive-property-helper.html
|
||||
|
||||
# Ignore devtools debugger files
|
||||
# Keep in sync with devtools/client/debugger/.eslintignore
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ support-files =
|
|||
test_suspendTimeouts.js
|
||||
webconsole-helpers.js
|
||||
webextension-helpers.js
|
||||
inactive-property-helper/*.js
|
||||
[test_animation-type-longhand.html]
|
||||
[test_connection-manager.html]
|
||||
skip-if = (verify && debug && (os == 'win'))
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
parserOptions: {
|
||||
sourceType: "module",
|
||||
},
|
||||
};
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
/* 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 `gap` test cases.
|
||||
export default [{
|
||||
info: "column-gap is inactive on non-grid and non-flex container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; display: block; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "column-gap is active on grid container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; display: grid; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "column-gap is active on flex container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; display: flex; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "column-gap is inactive on non-multi-col container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; column-count: auto; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "column-gap is active on multi-column container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; column-count: 2; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "row-gap is inactive on non-grid and non-flex container",
|
||||
property: "row-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { row-gap: 10px; display: block; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "row-gap is active on grid container",
|
||||
property: "row-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { row-gap: 10px; display: grid; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "row-gap is active on flex container",
|
||||
property: "row-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { row-gap: 10px; display: flex; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "gap is inactive on non-grid and non-flex container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; display: block; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "gap is active on flex container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; display: flex; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "gap is active on grid container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; display: grid; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "gap is inactive on non-multi-col container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; column-count: auto; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "gap is active on multi-col container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; column-count: 2; }"],
|
||||
isActive: true,
|
||||
}];
|
||||
|
|
@ -0,0 +1,205 @@
|
|||
/* 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 `width`, `min-width`, `max-width`, `height`, `min-height`,
|
||||
// `max-height` test cases.
|
||||
export default [{
|
||||
info: "width is inactive on a non-replaced inline element",
|
||||
property: "width",
|
||||
tagName: "span",
|
||||
rules: ["span { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on a non-replaced inline element",
|
||||
property: "min-width",
|
||||
tagName: "span",
|
||||
rules: ["span { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on a non-replaced inline element",
|
||||
property: "max-width",
|
||||
tagName: "span",
|
||||
rules: ["span { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is inactive on an tr element",
|
||||
property: "width",
|
||||
tagName: "tr",
|
||||
rules: ["tr { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on an tr element",
|
||||
property: "min-width",
|
||||
tagName: "tr",
|
||||
rules: ["tr { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on an tr element",
|
||||
property: "max-width",
|
||||
tagName: "tr",
|
||||
rules: ["tr { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is inactive on an thead element",
|
||||
property: "width",
|
||||
tagName: "thead",
|
||||
rules: ["thead { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on an thead element",
|
||||
property: "min-width",
|
||||
tagName: "thead",
|
||||
rules: ["thead { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on an thead element",
|
||||
property: "max-width",
|
||||
tagName: "thead",
|
||||
rules: ["thead { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is inactive on an tfoot element",
|
||||
property: "width",
|
||||
tagName: "tfoot",
|
||||
rules: ["tfoot { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on an tfoot element",
|
||||
property: "min-width",
|
||||
tagName: "tfoot",
|
||||
rules: ["tfoot { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on an tfoot element",
|
||||
property: "max-width",
|
||||
tagName: "tfoot",
|
||||
rules: ["tfoot { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is active on a replaced inline element",
|
||||
property: "width",
|
||||
tagName: "img",
|
||||
rules: ["img { width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-width is active on a replaced inline element",
|
||||
property: "min-width",
|
||||
tagName: "img",
|
||||
rules: ["img { min-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-width is active on a replaced inline element",
|
||||
property: "max-width",
|
||||
tagName: "img",
|
||||
rules: ["img { max-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "width is active on a block element",
|
||||
property: "width",
|
||||
tagName: "div",
|
||||
rules: ["div { width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-width is active on a block element",
|
||||
property: "min-width",
|
||||
tagName: "div",
|
||||
rules: ["div { min-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-width is active on a block element",
|
||||
property: "max-width",
|
||||
tagName: "div",
|
||||
rules: ["div { max-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "height is inactive on a non-replaced inline element",
|
||||
property: "height",
|
||||
tagName: "span",
|
||||
rules: ["span { height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-height is inactive on a non-replaced inline element",
|
||||
property: "min-height",
|
||||
tagName: "span",
|
||||
rules: ["span { min-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-height is inactive on a non-replaced inline element",
|
||||
property: "max-height",
|
||||
tagName: "span",
|
||||
rules: ["span { max-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "height is inactive on colgroup element",
|
||||
property: "height",
|
||||
tagName: "colgroup",
|
||||
rules: ["colgroup { height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-height is inactive on colgroup element",
|
||||
property: "min-height",
|
||||
tagName: "colgroup",
|
||||
rules: ["colgroup { min-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-height is inactive on colgroup element",
|
||||
property: "max-height",
|
||||
tagName: "colgroup",
|
||||
rules: ["colgroup { max-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "height is inactive on col element",
|
||||
property: "height",
|
||||
tagName: "col",
|
||||
rules: ["col { height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-height is inactive on col element",
|
||||
property: "min-height",
|
||||
tagName: "col",
|
||||
rules: ["col { min-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-height is inactive on col element",
|
||||
property: "max-height",
|
||||
tagName: "col",
|
||||
rules: ["col { max-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "height is active on a replaced inline element",
|
||||
property: "height",
|
||||
tagName: "img",
|
||||
rules: ["img { height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-height is active on a replaced inline element",
|
||||
property: "min-height",
|
||||
tagName: "img",
|
||||
rules: ["img { min-height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-height is active on a replaced inline element",
|
||||
property: "max-height",
|
||||
tagName: "img",
|
||||
rules: ["img { max-height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "height is active on a block element",
|
||||
property: "height",
|
||||
tagName: "div",
|
||||
rules: ["div { height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-height is active on a block element",
|
||||
property: "min-height",
|
||||
tagName: "div",
|
||||
rules: ["div { min-height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-height is active on a block element",
|
||||
property: "max-height",
|
||||
tagName: "div",
|
||||
rules: ["div { max-height: 500px; }"],
|
||||
isActive: true,
|
||||
}];
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/* 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 `vertical-align` test cases.
|
||||
export default [{
|
||||
info: "vertical-align is inactive on a block element",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div { vertical-align: top; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "vertical-align is inactive on a span with display block",
|
||||
property: "vertical-align",
|
||||
tagName: "span",
|
||||
rules: ["span { vertical-align: top; display: block;}"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "vertical-align is active on a div with display inline-block",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div { vertical-align: top; display: inline-block;}"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on a table-cell",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div { vertical-align: top; display: table-cell;}"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on a block element ::first-letter",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div::first-letter { vertical-align: top; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on a block element ::first-line",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div::first-line { vertical-align: top; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on an inline element",
|
||||
property: "vertical-align",
|
||||
tagName: "span",
|
||||
rules: ["span { vertical-align: top; }"],
|
||||
isActive: true,
|
||||
}];
|
||||
|
|
@ -7,363 +7,60 @@
|
|||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
|
||||
<script type="application/javascript">
|
||||
"use strict";
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
const { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm");
|
||||
const { inactivePropertyHelper } = require("devtools/server/actors/utils/inactive-property-helper");
|
||||
let { isPropertyUsed } = inactivePropertyHelper;
|
||||
isPropertyUsed = isPropertyUsed.bind(inactivePropertyHelper);
|
||||
(async function() {
|
||||
const { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm");
|
||||
const { inactivePropertyHelper } = require("devtools/server/actors/utils/inactive-property-helper");
|
||||
let { isPropertyUsed } = inactivePropertyHelper;
|
||||
isPropertyUsed = isPropertyUsed.bind(inactivePropertyHelper);
|
||||
|
||||
// A single test case is an object of the following shape:
|
||||
// - {String} info: a summary of the test case
|
||||
// - {String} property: the CSS property that should be tested
|
||||
// - {String} tagName: the tagName of the element we're going to test
|
||||
// - {Array<String>} rules: An array of the rules that will be applied on the element.
|
||||
// This can't be empty as isPropertyUsed need a rule.
|
||||
// - {Integer} ruleIndex (optional): If there are multiples rules in `rules`, the index
|
||||
// of the one that should be tested in isPropertyUsed.
|
||||
// - {Boolean} isActive: should the property be active (isPropertyUsed `used` result).
|
||||
const tests = [{
|
||||
info: "vertical-align is inactive on a block element",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div { vertical-align: top; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "vertical-align is inactive on a span with display block",
|
||||
property: "vertical-align",
|
||||
tagName: "span",
|
||||
rules: ["span { vertical-align: top; display: block;}"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "vertical-align is active on a div with display inline-block",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div { vertical-align: top; display: inline-block;}"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on a table-cell",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div { vertical-align: top; display: table-cell;}"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on a block element ::first-letter",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div::first-letter { vertical-align: top; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on a block element ::first-line",
|
||||
property: "vertical-align",
|
||||
tagName: "div",
|
||||
rules: ["div::first-line { vertical-align: top; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "vertical-align is active on an inline element",
|
||||
property: "vertical-align",
|
||||
tagName: "span",
|
||||
rules: ["span { vertical-align: top; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "width is inactive on a non-replaced inline element",
|
||||
property: "width",
|
||||
tagName: "span",
|
||||
rules: ["span { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on a non-replaced inline element",
|
||||
property: "min-width",
|
||||
tagName: "span",
|
||||
rules: ["span { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on a non-replaced inline element",
|
||||
property: "max-width",
|
||||
tagName: "span",
|
||||
rules: ["span { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is inactive on an tr element",
|
||||
property: "width",
|
||||
tagName: "tr",
|
||||
rules: ["tr { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on an tr element",
|
||||
property: "min-width",
|
||||
tagName: "tr",
|
||||
rules: ["tr { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on an tr element",
|
||||
property: "max-width",
|
||||
tagName: "tr",
|
||||
rules: ["tr { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is inactive on an thead element",
|
||||
property: "width",
|
||||
tagName: "thead",
|
||||
rules: ["thead { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on an thead element",
|
||||
property: "min-width",
|
||||
tagName: "thead",
|
||||
rules: ["thead { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on an thead element",
|
||||
property: "max-width",
|
||||
tagName: "thead",
|
||||
rules: ["thead { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is inactive on an tfoot element",
|
||||
property: "width",
|
||||
tagName: "tfoot",
|
||||
rules: ["tfoot { width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-width is inactive on an tfoot element",
|
||||
property: "min-width",
|
||||
tagName: "tfoot",
|
||||
rules: ["tfoot { min-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-width is inactive on an tfoot element",
|
||||
property: "max-width",
|
||||
tagName: "tfoot",
|
||||
rules: ["tfoot { max-width: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "width is active on a replaced inline element",
|
||||
property: "width",
|
||||
tagName: "img",
|
||||
rules: ["img { width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-width is active on a replaced inline element",
|
||||
property: "min-width",
|
||||
tagName: "img",
|
||||
rules: ["img { min-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-width is active on a replaced inline element",
|
||||
property: "max-width",
|
||||
tagName: "img",
|
||||
rules: ["img { max-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "width is active on a block element",
|
||||
property: "width",
|
||||
tagName: "div",
|
||||
rules: ["div { width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-width is active on a block element",
|
||||
property: "min-width",
|
||||
tagName: "div",
|
||||
rules: ["div { min-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-width is active on a block element",
|
||||
property: "max-width",
|
||||
tagName: "div",
|
||||
rules: ["div { max-width: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "height is inactive on a non-replaced inline element",
|
||||
property: "height",
|
||||
tagName: "span",
|
||||
rules: ["span { height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-height is inactive on a non-replaced inline element",
|
||||
property: "min-height",
|
||||
tagName: "span",
|
||||
rules: ["span { min-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-height is inactive on a non-replaced inline element",
|
||||
property: "max-height",
|
||||
tagName: "span",
|
||||
rules: ["span { max-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "height is inactive on colgroup element",
|
||||
property: "height",
|
||||
tagName: "colgroup",
|
||||
rules: ["colgroup { height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-height is inactive on colgroup element",
|
||||
property: "min-height",
|
||||
tagName: "colgroup",
|
||||
rules: ["colgroup { min-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-height is inactive on colgroup element",
|
||||
property: "max-height",
|
||||
tagName: "colgroup",
|
||||
rules: ["colgroup { max-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "height is inactive on col element",
|
||||
property: "height",
|
||||
tagName: "col",
|
||||
rules: ["col { height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "min-height is inactive on col element",
|
||||
property: "min-height",
|
||||
tagName: "col",
|
||||
rules: ["col { min-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "max-height is inactive on col element",
|
||||
property: "max-height",
|
||||
tagName: "col",
|
||||
rules: ["col { max-height: 500px; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "height is active on a replaced inline element",
|
||||
property: "height",
|
||||
tagName: "img",
|
||||
rules: ["img { height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-height is active on a replaced inline element",
|
||||
property: "min-height",
|
||||
tagName: "img",
|
||||
rules: ["img { min-height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-height is active on a replaced inline element",
|
||||
property: "max-height",
|
||||
tagName: "img",
|
||||
rules: ["img { max-height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "height is active on a block element",
|
||||
property: "height",
|
||||
tagName: "div",
|
||||
rules: ["div { height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "min-height is active on a block element",
|
||||
property: "min-height",
|
||||
tagName: "div",
|
||||
rules: ["div { min-height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "max-height is active on a block element",
|
||||
property: "max-height",
|
||||
tagName: "div",
|
||||
rules: ["div { max-height: 500px; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "column-gap is inactive on non-grid and non-flex container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; display: block; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "column-gap is active on grid container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; display: grid; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "column-gap is active on flex container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; display: flex; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "column-gap is inactive on non-multi-col container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; column-count: auto; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "column-gap is active on multi-column container",
|
||||
property: "column-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { column-gap: 10px; column-count: 2; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "row-gap is inactive on non-grid and non-flex container",
|
||||
property: "row-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { row-gap: 10px; display: block; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "row-gap is active on grid container",
|
||||
property: "row-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { row-gap: 10px; display: grid; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "row-gap is active on flex container",
|
||||
property: "row-gap",
|
||||
tagName: "div",
|
||||
rules: ["div { row-gap: 10px; display: flex; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "gap is inactive on non-grid and non-flex container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; display: block; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "gap is active on flex container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; display: flex; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "gap is active on grid container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; display: grid; }"],
|
||||
isActive: true,
|
||||
}, {
|
||||
info: "gap is inactive on non-multi-col container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; column-count: auto; }"],
|
||||
isActive: false,
|
||||
}, {
|
||||
info: "gap is active on multi-col container",
|
||||
property: "gap",
|
||||
tagName: "div",
|
||||
rules: ["div { gap: 10px; column-count: 2; }"],
|
||||
isActive: true,
|
||||
}];
|
||||
const FOLDER = "./inactive-property-helper";
|
||||
|
||||
for (const { info: summary, property, tagName, rules, ruleIndex, isActive } of tests) {
|
||||
info(summary);
|
||||
// Each file should `export default` an array of objects, representing each test case.
|
||||
// A single test case is an object of the following shape:
|
||||
// - {String} info: a summary of the test case
|
||||
// - {String} property: the CSS property that should be tested
|
||||
// - {String} tagName: the tagName of the element we're going to test
|
||||
// - {Array<String>} rules: An array of the rules that will be applied on the element.
|
||||
// This can't be empty as isPropertyUsed need a rule.
|
||||
// - {Integer} ruleIndex (optional): If there are multiples rules in `rules`, the index
|
||||
// of the one that should be tested in isPropertyUsed.
|
||||
// - {Boolean} isActive: should the property be active (isPropertyUsed `used` result).
|
||||
const testFiles = [
|
||||
"gap.js",
|
||||
"max-min-width-height.js",
|
||||
"vertical-align.js",
|
||||
].map(file => `${FOLDER}/${file}`);
|
||||
|
||||
// Create an element which will contain the test elements.
|
||||
const main = document.createElement("main");
|
||||
document.firstElementChild.appendChild(main);
|
||||
// Import all the test cases
|
||||
const tests =
|
||||
(await Promise.all(testFiles.map(f => import(f).then(data => data.default)))).flat();
|
||||
|
||||
// Create the element and insert the rules
|
||||
const el = document.createElement(tagName);
|
||||
const style = document.createElement("style");
|
||||
main.append(style, el);
|
||||
for (const { info: summary, property, tagName, rules, ruleIndex, isActive } of tests) {
|
||||
info(summary);
|
||||
|
||||
for (const dataRule of rules) {
|
||||
style.sheet.insertRule(dataRule);
|
||||
// Create an element which will contain the test elements.
|
||||
const main = document.createElement("main");
|
||||
document.firstElementChild.appendChild(main);
|
||||
|
||||
// Create the element and insert the rules
|
||||
const el = document.createElement(tagName);
|
||||
const style = document.createElement("style");
|
||||
main.append(style, el);
|
||||
|
||||
for (const dataRule of rules) {
|
||||
style.sheet.insertRule(dataRule);
|
||||
}
|
||||
const rule = style.sheet.cssRules[ruleIndex || 0];
|
||||
|
||||
const { used } = isPropertyUsed(el, getComputedStyle(el), rule, property);
|
||||
ok(used === isActive, `"${property}" is ${isActive ? "active" : "inactive"}`);
|
||||
|
||||
main.remove();
|
||||
}
|
||||
const rule = style.sheet.cssRules[ruleIndex || 0];
|
||||
|
||||
const { used } = isPropertyUsed(el, getComputedStyle(el), rule, property);
|
||||
ok(used === isActive, `"${property}" is ${isActive ? "active" : "inactive"}`);
|
||||
|
||||
main.remove();
|
||||
}
|
||||
SimpleTest.finish();
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
|
|
|
|||
Loading…
Reference in a new issue