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.matches(":valid") is false
PASS radio2.remove(); radio2.matches(":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

