chromium/third_party/blink/web_tests/fast/forms/number/number-commit-valid-only.html

<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<script>
description('Type=number field should not accept invalid numbers though a user can type such strings');

var parent = document.createElement('div');
document.body.appendChild(parent);
parent.innerHTML = '<input type=number id=number value=256>';

var input = document.getElementById('number');

function checkIt(what, sample, expected)
{
    input.focus();
    document.execCommand("SelectAll");
    document.execCommand("InsertText", false, sample);
    input.blur();
    debug('enter "' + sample + '" for ' + what);
    shouldBeEqualToString('input.value', expected);
}

debug("\nNo restriction");
checkIt('noRange', "512", "512");
checkIt('typeMismatch', "+++", "");
checkIt('empty', "", "");

debug("\nmin/max/step");
input.setAttribute("min", "0");
input.setAttribute("max", "100");
input.setAttribute("step", "1");
checkIt("randerUnderflow", "-1", "-1");
checkIt("minimum", "0", "0");
checkIt("inRange", "25", "25");
checkIt("inRange", "50", "50");
checkIt("stepMismatch", "10.5", "10.5");
checkIt("maximum", "100", "100");
checkIt("rangeOverflow", "200", "200");
checkIt("typeMismatch", "abc", "");
checkIt("empty", "", ""); // empty

</script>
</body>
</html>