Pretty simple set up:
<input id="Input" type="text" minlength="8" required />
<script>
const input = window.document.getElementById('Input');
input.value = "foobar"
console.log(input.checkValidity());
</script>
The following returns true when it should be false. See https://jsbin.com/huqowesewu/edit?html,output
Why in the world is this? The input has a length of 6, which is less than 8, ergo, it should be invalid. But it's not. Is this attribute broken? Or is checkValidity() broken? I'm baffled to say the least.