The following snippet:
<input type="checkbox" name="x" required/>
with
HtmlCheckBoxInput cb = page.querySelector("input[type=checkbox][required]");
assertFalse(cb.isValid());
cb.click();
assertTrue(cb.isValid()); // fails because isValid() still reports false
fails, perhaps because HtmlCheckBoxInput.isValueMissingValidityState() uses getCheckedAttribute() instead of looking at the isChecked()?