Files
sousa-gecko/testing/web-platform/tests/css/css-values/random-item-valid.html
T
Joanne Pan 8a3761c07b Bug 2054053 [wpt PR 61200] - WebKit export of https://bugs.webkit.org/show_bug.cgi?id=317675, a=testonly
Automatic update from web-platform-tests
WebKit export: [css-values-5 random-item()] parse-time support for the argument grammar (#61200)

https://bugs.webkit.org/show_bug.cgi?id=317675
--

wpt-commits: f4c29cc2cae5e21b14a0d48a843d5bc1304f35f9
wpt-pr: 61200
2026-07-13 14:37:50 +00:00

46 lines
2.7 KiB
HTML

<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-values-5/#funcdef-random-item">
<link rel="author" title="Joanne Pan" href="https://github.com/J0pan">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
<script>
// random-item() is an arbitrary substitution function, so only its argument grammar is
// validated at parse time:
// <random-item-args> = random-item( <declaration-value>, [ <declaration-value>? ]# )
// The first argument is parsed as a <random-key> and an item is selected at computed-value
// time, not here. See https://drafts.csswg.org/css-values-5/#funcdef-random-item
// A non-empty first argument followed by a comma-separated list of items is valid.
test_valid_value('font-family', 'random-item(auto, serif)');
test_valid_value('font-family', 'random-item(auto, serif, sans-serif, monospace)');
test_valid_value('font-family', 'random-item(auto ,serif ,sans-serif)');
test_valid_value('font-family', 'random-item(auto , serif , sans-serif)');
// Items may be empty: [ <declaration-value>? ]#.
test_valid_value('font-family', 'random-item(auto, )');
test_valid_value('font-family', 'random-item(auto, serif,)');
test_valid_value('font-family', 'random-item(auto, , serif)');
test_valid_value('font-family', 'random-item(auto, ,)');
// Comma-containing items are grouped with {}, including with whitespace around the braces.
// https://drafts.csswg.org/css-values-5/#component-function-commas
test_valid_value('font-family', 'random-item(auto, {Times, serif}, {Arial, sans-serif})');
test_valid_value('font-family', 'random-item(auto, {Times, serif}, sans-serif, {monospace})');
test_valid_value('font-family', 'random-item(auto, {Times, serif})');
test_valid_value('font-family', 'random-item(auto, { Times, serif }, { Arial, sans-serif })');
test_valid_value('font-family', 'random-item(auto, {Times, serif}, { Arial, sans-serif })');
test_valid_value('font-family', 'random-item(auto, { monospace })');
// The first argument is NOT parsed as <random-key> at parse time, so any non-empty
// <declaration-value> is accepted here. These resolve (or become invalid) at computed-value time.
test_valid_value('font-family', 'random-item(--x, serif, sans-serif)');
test_valid_value('font-family', 'random-item(fixed 0.5, serif, sans-serif)');
test_valid_value('font-family', 'random-item(serif, sans-serif)');
test_valid_value('font-family', 'random-item(foo, serif, sans-serif)');
test_valid_value('font-family', 'random-item(fixed -0.5, serif, sans-serif)');
test_valid_value('font-family', 'random-item(property-scoped, serif, sans-serif)');
test_valid_value('font-family', 'random-item(var(--key), serif, sans-serif)');
</script>