pseudo-elements-invalid.html (2940B)
1 <!doctype html> 2 <meta charset="utf-8"> 3 <title>Test pseudo elements parsing of invalid selectors</title> 4 <link rel="author" title="Tim Nguyen" href="https://github.com/nt1m"> 5 <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/css/support/parsing-testcommon.js"></script> 9 <script> 10 const functionPseudoElements = [ 11 "::view-transition-group", 12 "::view-transition-image-pair", 13 "::view-transition-old", 14 "::view-transition-new", 15 ]; 16 17 function test_invalid_selector_combinations(pseudo) { 18 test_invalid_selector(`${pseudo}.a`); 19 test_invalid_selector(`${pseudo} div`); 20 test_invalid_selector(`${pseudo}:hover`); 21 test_invalid_selector(`${pseudo}:active`); 22 test_invalid_selector(`${pseudo}:first-child`); 23 test_invalid_selector(`${pseudo}:last-child`); 24 test_invalid_selector(`${pseudo}:empty`); 25 test_invalid_selector(`${pseudo}:visited`); 26 test_invalid_selector(`${pseudo}:enabled`); 27 test_invalid_selector(`:not(${pseudo})`); 28 test_invalid_selector(`:has(${pseudo})`); 29 } 30 31 test_invalid_selector_combinations("::view-transition"); 32 test_invalid_selector("::view-transition:only-child"); 33 test_invalid_selector("::view-transition(*)"); 34 test_invalid_selector("::view-transition(valid)"); 35 test_invalid_selector("::view-transition(root)"); 36 37 for (const fn of functionPseudoElements) { 38 for (const validArgument of ["*", "valid", "root"]) { 39 test_invalid_selector_combinations(`${fn}(${validArgument})`); 40 } 41 42 // Test function without argument. 43 test_invalid_selector(fn); 44 test_invalid_selector_combinations(fn); 45 46 // Test function with empty argument. 47 test_invalid_selector(`${fn}()`); 48 test_invalid_selector_combinations(`${fn}()`); 49 50 // Test function with keywords excluded from <custom-ident>. 51 test_invalid_selector(`${fn}(default)`); 52 test_invalid_selector_combinations(`${fn}(default)`); 53 test_invalid_selector(`${fn}(unset)`); 54 test_invalid_selector_combinations(`${fn}(unset)`); 55 test_invalid_selector(`${fn}(initial)`); 56 test_invalid_selector_combinations(`${fn}(initial)`); 57 test_invalid_selector(`${fn}(inherit)`); 58 test_invalid_selector_combinations(`${fn}(inherit)`); 59 test_invalid_selector(`${fn}(revert)`); 60 test_invalid_selector_combinations(`${fn}(revert)`); 61 test_invalid_selector(`${fn}(revert-layer)`); 62 test_invalid_selector_combinations(`${fn}(revert-layer)`); 63 64 // Test function with multiple arguments. 65 test_invalid_selector(`${fn}(foo, bar)`); 66 test_invalid_selector_combinations(`${fn}(foo, bar)`); 67 test_invalid_selector(`${fn}(foo bar)`); 68 test_invalid_selector_combinations(`${fn}(foo bar)`); 69 70 // Test function with selector arguments. 71 test_invalid_selector(`${fn}(#bar)`); 72 test_invalid_selector_combinations(`${fn}(#bar)`); 73 } 74 </script>