Test that we do not invalidate the style of <fieldset> excessively when matching :valid based on the descendants.

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


PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("with-renderer")) is false
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("without-renderer")) is false
PASS getComputedStyle(document.getElementById("with-renderer")).color is "rgb(0, 1, 2)"
PASS getComputedStyle(document.getElementById("without-renderer")).color is "rgb(0, 1, 2)"
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("with-renderer")) is true
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("without-renderer")) is true
PASS getComputedStyle(document.getElementById("with-renderer")).color is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("without-renderer")).color is "rgb(0, 0, 0)"
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("with-renderer")) is false
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("without-renderer")) is false
PASS getComputedStyle(document.getElementById("with-renderer")).color is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("without-renderer")).color is "rgb(0, 0, 0)"
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("with-renderer")) is false
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("without-renderer")) is false
PASS getComputedStyle(document.getElementById("with-renderer")).color is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("without-renderer")).color is "rgb(0, 0, 0)"
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("with-renderer")) is true
PASS window.internals.nodeNeedsStyleRecalc(document.getElementById("without-renderer")) is true
PASS getComputedStyle(document.getElementById("with-renderer")).color is "rgb(0, 1, 2)"
PASS getComputedStyle(document.getElementById("without-renderer")).color is "rgb(0, 1, 2)"
PASS successfullyParsed is true

TEST COMPLETE

