| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test-pre.js"></script> |
| <form> |
| Required text input: <input type="text" required><input id="required_text_input_submit" type="submit"> |
| </form> |
| <form> |
| Required checkbox input: <input type="checkbox" required><input id="required_checkbox_submit" type="submit"> |
| </form> |
| <form> |
| Required radio input: <input type="radio" name="myradiogroup1" required><br> |
| Required radio input: <input type="radio" name="myradiogroup1"> |
| <input id="required_radio_submit" type="submit"> |
| </form> |
| <form> |
| Required file input: <input type="file" required><input id="required_file_submit" type="submit"> |
| </form> |
| <form> |
| Required email input: <input type="email" value="invalid" required><input id="required_email_submit" type="submit"> |
| </form> |
| <form> |
| Required url input: <input type="url" value="invalid" required><input id="required_url_submit" type="submit"> |
| </form> |
| <form> |
| Required input with pattern: <input type="text" value="1" pattern="[a-z]" required><input id="input_with_pattern_submit" type="submit"> |
| </form> |
| <form> |
| Required input with minlength=100: <input type="text" minlength=100 id="field_with_minlength" required><input id="input_with_minlength_submit" type="submit"> |
| </form> |
| <form> |
| Required range with min=5: <input type="number" value="1" min=5 required><input id="range_with_min_submit" type="submit"> |
| </form> |
| <form> |
| Required range with max=5: <input type="number" value="10" max=5 required><input id="range_with_max_submit" type="submit"> |
| </form> |
| <form> |
| Required range with step=3 / min=0: <input type="number" value="10" min=0 step=3 required><input id="range_with_step_submit" type="submit"> |
| </form> |
| <div id="description"></div> |
| <div id="console"></div> |
| <script> |
| description("Tests the HTML form validation messages being shown on UI side."); |
| jsTestIsAsync = true; |
| |
| function getValidationBubbleContents() |
| { |
| return ` |
| (function() { |
| uiController.uiScriptComplete(JSON.stringify(uiController.contentsOfUserInterfaceItem('validationBubble'))); |
| })();` |
| } |
| |
| var tests = [ |
| ['required_text_input_submit', 'Fill out this field'], |
| ['required_checkbox_submit', 'Select this checkbox'], |
| ['required_radio_submit', 'Select one of these options'], |
| ['required_file_submit', 'Select a file'], |
| ['required_email_submit', 'Enter an email address'], |
| ['required_url_submit', 'Enter a URL'], |
| ['input_with_pattern_submit', 'Match the requested format'], |
| ['input_with_minlength_submit', 'Use at least 100 characters'], |
| ['range_with_min_submit', 'Value must be greater than or equal to 5'], |
| ['range_with_max_submit', 'Value must be less than or equal to 5'], |
| ['range_with_step_submit', 'Enter a valid value'], |
| ]; |
| var currentTestIndex = -1; |
| |
| function runNextTest() |
| { |
| ++currentTestIndex; |
| if (currentTestIndex >= tests.length) { |
| finishJSTest(); |
| return; |
| } |
| |
| var currentTest = tests[currentTestIndex]; |
| var submitButton = document.getElementById(currentTest[0]); |
| expectedMessage = currentTest[1]; |
| |
| submitButton.click(); |
| testRunner.runUIScript(getValidationBubbleContents(), function(result) { |
| validationBubbleContents = JSON.parse(result).validationBubble; |
| shouldBeEqualToString("validationBubbleContents.message", "" + expectedMessage); |
| runNextTest(); |
| }); |
| } |
| |
| function setup() |
| { |
| var field = document.getElementById("field_with_minlength"); |
| field.focus(); |
| eventSender.keyDown("Z"); |
| } |
| |
| onload = function() { |
| setup(); |
| setTimeout(function() { |
| runNextTest(); |
| }, 0); |
| } |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| <html> |