Files
sousa-gecko/testing/web-platform/tests/css/css-conditional/container-queries/container-rule-cssom.html
T
moz-wptsync-bot 85aceb92ee Bug 2035362 [wpt PR 59489] - Implement CSSContainerRule.conditions, a=testonly
Automatic update from web-platform-tests
Implement CSSContainerRule.conditions

Currently, parsing only supports a single query, hence the API will
currently hold a single CSSContainerCondition.

The plan is to ship this API together with comma separated @container
queries behind the same runtime flag.

Bug: 41491726
Change-Id: Icb47b6077ad88d4869b8ed9d14908586057acef0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7796871
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1621103}

--

wpt-commits: 9f981dfa7f7c7636ebdcd29b7993b04498478176
wpt-pr: 59489
2026-05-08 08:34:15 +00:00

90 lines
3.2 KiB
HTML

<!DOCTYPE html>
<title>CSS Conditional Test: CSSContainerRule API</title>
<link rel="help" href="https://drafts.csswg.org/css-conditional-5/#the-csscontainerrule-interface">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style id="style_elm">
</style>
<script>
const sheet = style_elm.sheet;
function insertRule(source_text) {
try {
while (sheet.cssRules.length) {
sheet.deleteRule(0);
}
sheet.insertRule(source_text);
return sheet.cssRules[0];
} catch (e) {
return null;
}
}
test(() => {
const rule = insertRule("@container Name {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.containerName, "Name");
assert_equals(rule.containerQuery, "");
}, "containerName without query");
test(() => {
const rule = insertRule("@container (width > 300px) {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.containerName, "");
assert_equals(rule.containerQuery, "(width > 300px)");
}, "containerQuery without name");
test(() => {
const rule = insertRule("@container Name (width > 300px) {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.containerName, "Name");
assert_equals(rule.containerQuery, "(width > 300px)");
}, "containerName and containerQuery");
test(() => {
const rule = insertRule("@container Name (width > 300px) {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.conditions.length, 1);
assert_equals(rule.conditions[0].name, "Name");
assert_equals(rule.conditions[0].query, "(width > 300px)");
}, ".conditions");
test(() => {
const rule = insertRule("@container (width > 300px) {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.conditions.length, 1);
assert_equals(rule.conditions[0].name, "");
assert_equals(rule.conditions[0].query, "(width > 300px)");
}, ".conditions without name");
test(() => {
const rule = insertRule("@container style(--x > 0) {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.conditions.length, 1);
assert_equals(rule.conditions[0].name, "");
assert_equals(rule.conditions[0].query, "style(--x > 0)");
assert_equals(rule.containerName, "");
assert_equals(rule.containerQuery, "style(--x > 0)");
}, "style()");
test(() => {
const rule = insertRule("@container Name {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.conditions.length, 1);
assert_equals(rule.conditions[0].name, "Name");
assert_equals(rule.conditions[0].query, "");
}, ".conditions without query");
test(() => {
const rule = insertRule("@container (width > 300px), Name (width < 1000px) {}");
assert_true(!!rule, "Rule successfully parsed");
assert_equals(rule.conditions.length, 2);
assert_equals(rule.containerName, "");
assert_equals(rule.containerQuery, "");
assert_equals(rule.conditions[0].name, "");
assert_equals(rule.conditions[0].query, "(width > 300px)");
assert_equals(rule.conditions[1].name, "Name");
assert_equals(rule.conditions[1].query, "(width < 1000px)");
}, "multiple conditions");
</script>