Skip to content

Commit 202ae50

Browse files
committed
Bug 2005708 - [devtools] Handle SiblingCombinatorAfterScope selector warning in the Inspector. r=dshin,fluent-reviewers,devtools-reviewers,bolsson,ochameau
Differential Revision: https://phabricator.services.mozilla.com/D276181
1 parent 803edf7 commit 202ae50

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

devtools/client/inspector/rules/test/browser_rules_selector_warnings.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
const TEST_URI = `
88
<!DOCTYPE html>
99
<style>
10+
main, :scope ~ * {
11+
outline-color: tomato;
12+
}
13+
1014
main, :has(form) {
1115
/* /!\ space between & and : is important */
1216
& :has(input),
@@ -26,6 +30,8 @@ const TEST_URI = `
2630

2731
const UNCONSTRAINED_HAS_WARNING_MESSAGE =
2832
"This selector uses unconstrained :has(), which can be slow";
33+
const SIBLING_COMTINATOR_AFTER_SCOPE_WARNING_MESSAGE =
34+
"Sibling selectors after :scope will never match anything";
2935

3036
add_task(async function () {
3137
await addTab(
@@ -40,7 +46,7 @@ add_task(async function () {
4046
info(
4147
"Check that unconstrained :has() warnings are displayed for the rules selectors"
4248
);
43-
const ruleSelectors = Array.from(
49+
let ruleSelectors = Array.from(
4450
selectorText.querySelectorAll(".ruleview-selector")
4551
);
4652

@@ -82,6 +88,24 @@ add_task(async function () {
8288
selectorText: ":has(form)",
8389
expectedWarnings: [UNCONSTRAINED_HAS_WARNING_MESSAGE],
8490
});
91+
92+
const scopeSiblingRuleEditor = getRuleViewRuleEditor(view, 3);
93+
ruleSelectors = Array.from(
94+
scopeSiblingRuleEditor.selectorText.querySelectorAll(".ruleview-selector")
95+
);
96+
// Warning is not displayed when the selector does not have warnings
97+
await assertSelectorWarnings({
98+
view,
99+
selectorEl: ruleSelectors[0],
100+
selectorText: "main",
101+
expectedWarnings: [],
102+
});
103+
await assertSelectorWarnings({
104+
view,
105+
selectorEl: ruleSelectors[1],
106+
selectorText: ":scope ~ *",
107+
expectedWarnings: [SIBLING_COMTINATOR_AFTER_SCOPE_WARNING_MESSAGE],
108+
});
85109
});
86110

87111
async function assertSelectorWarnings({

devtools/client/locales/en-US/tooltips.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,3 +215,6 @@ css-compatibility-learn-more-message = <span data-l10n-name="link">Learn more</s
215215

216216
# :has() should not be translated
217217
css-selector-warning-unconstrained-has = This selector uses unconstrained <strong>:has()</strong>, which can be slow
218+
219+
# :scope should not be translated
220+
css-selector-warning-sibling-combinator-after-scope = Sibling selectors after <strong>:scope</strong> will never match anything

devtools/client/shared/widgets/tooltip/css-selector-warnings-tooltip-helper.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ const SELECTOR_WARNINGS = {
1212
// There could be a specific section on the MDN :has page for this: https://github.com/mdn/mdn/issues/469
1313
learnMoreUrl: null,
1414
},
15+
SiblingCombinatorAfterScope: {
16+
l10nId: "css-selector-warning-sibling-combinator-after-scope",
17+
// Add the link to MDN when https://github.com/mdn/content/issues/42364 is addressed
18+
learnMoreUrl: null,
19+
},
1520
};
1621

1722
class CssSelectorWarningsTooltipHelper {

0 commit comments

Comments
 (0)