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 4
PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":is(#notthere div, #target)"
PASS document.getElementById('style-container').sheet.cssRules[0].cssText is ":is(#notthere div, #target) { background-color: red; }"
PASS document.getElementById('style-container').sheet.cssRules[1].selectorText is ":is(#notthere foobar, #target)"
PASS document.getElementById('style-container').sheet.cssRules[1].cssText is ":is(#notthere foobar, #target) { color: lime; }"
PASS document.getElementById('style-container').sheet.cssRules[2].selectorText is ":matches(#notthere div, #target)"
PASS document.getElementById('style-container').sheet.cssRules[2].cssText is ":matches(#notthere div, #target) { background-color: red; }"
PASS document.getElementById('style-container').sheet.cssRules[3].selectorText is ":matches(#notthere foobar, #target)"
PASS document.getElementById('style-container').sheet.cssRules[3].cssText is ":matches(#notthere foobar, #target) { color: lime; }"
PASS successfullyParsed is true

TEST COMPLETE

