Summarized test results:
Selectors, selector normalization

Intended audience: users, XHTML/HTML coders (using editors or scripting), script developers (PHP, JSP, etc.), CSS coders, Web project managers, and anyone who wants to know how selectors work with regards to Unicode normalization.

Updated

These tests user agents normalize away the differences between selector names and class names, and multiple selector names in the same CSS file when there are differences in Unicode normalization.

Note that although normalization makes sense, current CSS specifications do NOT require selectors and class names to be normalized prior to matching.

Normalization is important for many languages, where users using different tools can produce the same text but with different mixtures of precomposed, decomposed and partially composed characters. It is particularly an issue if different people author the CSS and the document content. For example, some Vietnamese input methods produce NFC output, but Microsoft keyboards under XP produce unnormalized output where tone marks are separate combining characters but diacritics that differentiate letters are composed with their base character.

To see the test, click on the link in the left-most column. To see detailed results for a single test, click on a row and look just above the table. The detailed results show the date(s) the test result was recorded, and the version of the browser tested.

Any dependencies are shown in notes above the table, and notes below the table will usually provide any additional useful information, including an explanation of why a result was marked as 'partially successful'.

Key:

pass fail partially successful

Control tests

Links to run testsAssertionsGecko FirefoxBlink ChromeBlink OperaWebkit SafariLegacy Edge
markup precomposed, CSS precomposed
selectors-normalization-001.html
[Exploratory test] A fully precomposed class name will match a fully precomposed CSS selector name. passpasspasspasspass
markup decomposed, CSS decomposed
selectors-normalization-002.html
[Exploratory test] A fully decomposed class name will match a fully decomposed CSS selector name. passpasspasspasspass

Notes

  1. These tests are just control tests. They are expected to always match, because the bytes sequences are identical in selector and class names. The real tests begin with test 3.

Matching selector to class name

Links to run testsAssertionsGecko FirefoxBlink ChromeBlink OperaWebkit SafariLegacy Edge
markup decomposed, CSS precomposed
selectors-normalization-003.html
[Exploratory test] A fully decomposed class name will NOT match a fully precomposed CSS selector name. passpasspasspasspass
markup precomposed, CSS decomposed
selectors-normalization-004.html
[Exploratory test] A fully precomposed class name will NOT match a fully decomposed CSS selector name. passpasspasspasspass
markup partially decomposed, CSS precomposed
selectors-normalization-005.html
[Exploratory test] A partially decomposed class name will NOT match a fully precomposed CSS selector name. passpasspasspasspass
markup partially decomposed, CSS decomposed
selectors-normalization-006.html
[Exploratory test] A partially decomposed class name will NOT match a fully decomposed CSS selector name. passpasspasspasspass
markup precomposed, CSS partially decomposed
selectors-normalization-007.html
[Exploratory test] A partially decomposed CSS selector name will NOT match a fully precomposed class name. passpasspasspasspass
markup decomposed, CSS partially decomposed
selectors-normalization-008.html
[Exploratory test] A partially decomposed CSS selector name will NOT match a fully decomposed class name. passpasspasspasspass