This test verify that invalid case-insenstivie attribute value matching (e.g. [foo=bar i]) do not affect surrounding rules.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS getComputedStyle(document.getElementById('target')).color is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById('target')).backgroundColor is "rgb(255, 0, 0)"
PASS document.getElementById('style-container').sheet.cssRules.length is 2
PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(#notthere div, #target)"
PASS document.getElementById('style-container').sheet.cssRules[0].cssText is ":matches(#notthere div, #target) { background-color: red; }"
PASS document.getElementById('style-container').sheet.cssRules[1].selectorText is ":matches(#notthere foobar, #target)"
PASS document.getElementById('style-container').sheet.cssRules[1].cssText is ":matches(#notthere foobar, #target) { color: lime; }"
PASS successfullyParsed is true

TEST COMPLETE

