Check if :valid/:invalid CSS pseudo selectors are lively applied

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


Removing a checked radio button from a required radio button group by a DOM tree mutation:
PASS backgroundOf($("radio1")) is validColor
PASS parent.removeChild($("radio2")); backgroundOf($("radio1")) is invalidColor
PASS $("radio1").remove(); radio2.webkitMatchesSelector(":valid") is false
PASS radio2.remove(); radio2.webkitMatchesSelector(":valid") is true

Removing a checked radio button from a required radio button group by name attribute change:
PASS $("radio2").name = "group2"; backgroundOf($("radio1")) is invalidColor

Removing a checked radio button from a required radio button group by type change:
PASS $("radio2").type = "text"; backgroundOf($("radio1")) is invalidColor

Make a radio button group required by required attribute change:
PASS backgroundOf($("radio1")) is validColor
PASS backgroundOf($("radio2")) is validColor
PASS $("radio1").required = true; backgroundOf($("radio1")) is invalidColor
PASS backgroundOf($("radio2")) is invalidColor

Make a radio button group not required by required attribute change:
PASS backgroundOf($("radio1")) is invalidColor
PASS backgroundOf($("radio2")) is invalidColor
PASS $("radio1").required = false; backgroundOf($("radio1")) is validColor
PASS backgroundOf($("radio2")) is validColor

Removing one of multiple required attributes:
PASS backgroundOf($("radio1")) is invalidColor
PASS backgroundOf($("radio2")) is invalidColor
PASS $("radio1").required = false; backgroundOf($("radio1")) is invalidColor
PASS backgroundOf($("radio2")) is invalidColor

Adding a radio button with the required attribute to a radio button group:
PASS backgroundOf($("radio1")) is validColor
PASS parent.appendChild(requiredRadioButton); backgroundOf($("radio1")) is invalidColor
PASS backgroundOf(requiredRadioButton) is invalidColor

Removing a radio button with the required attribute from a radio button group:
PASS parent.removeChild(requiredRadioButton); backgroundOf($("radio1")) is validColor

PASS successfullyParsed is true

TEST COMPLETE

