blob: 3256a9b0b556e60c24c760a573d81870fbe50d1b [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>enter_submit_test</title>
<script src="test_bootstrap.js"></script>
<script type="text/javascript">
goog.require('bot.Keyboard');
goog.require('bot.Keyboard.Key');
goog.require('bot.dom');
goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.testing.AsyncTestCase');
goog.require('goog.testing.jsunit');
</script>
<body>
<script type="text/javascript">
var asyncTestCase = null;
// In Opera 11.5+, synthetic keypresses currently exhibit flaky failures:
// http://code.google.com/p/selenium/issues/detail?id=3068
// Test methods below are skipped for these versions.
var BROKEN_KEYPRESS = goog.userAgent.OPERA &&
bot.userAgent.isEngineVersion(11.5);
var submitFired;
var wasSubmitted;
function submitted() {
wasSubmitted = true;
asyncTestCase.continueTesting();
}
function setUp() {
submitFired = false;
wasSubmitted = false;
}
function tearDown() {
goog.events.removeAll();
}
function submitForm(formName, opt_cancelSubmit) {
var target = document.getElementById(formName + 'text1');
var keyboard = new bot.Keyboard();
keyboard.moveCursor(target);
goog.events.listen(document.getElementById(formName),
goog.events.EventType.SUBMIT, function(e) {
submitFired = true;
if (opt_cancelSubmit) {
e.preventDefault();
}
});
keyboard.pressKey(bot.Keyboard.Keys.ENTER);
}
function testTwoTextboxesAndOneSubmitIsSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
asyncTestCase.waitForAsync('if this times out, the form did not submit');
submitForm('form1');
assertTrue(submitFired);
}
function testOneTextboxesAndOneSubmitIsSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
asyncTestCase.waitForAsync('if this times out, the form did not submit');
submitForm('form2');
assertTrue(submitFired);
}
function testTwoTextboxesAndNoSubmitIsNotSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
// Form is only submitted on Safari 4 or prior versions.
var submitExpected = goog.userAgent.WEBKIT &&
!bot.userAgent.isEngineVersion(534);
if (submitExpected) {
asyncTestCase.waitForAsync('if this times out, the form did not submit');
}
submitForm('form3');
assertEquals(submitExpected, submitFired);
if (!submitExpected) {
assertFalse(wasSubmitted);
}
}
function testOneTextboxesAndNoSubmitIsSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
asyncTestCase.waitForAsync('if this times out, the form did not submit');
submitForm('form4');
assertTrue(submitFired);
}
function testTwoTextboxesAndTwoSubmitsIsSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
asyncTestCase.waitForAsync('if this times out, the form did not submit');
submitForm('form5');
assertTrue(submitFired);
}
function testKeyDownCancelNotSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
submitForm('form6');
assertFalse(submitFired);
assertFalse(wasSubmitted);
}
function testKeyPressCancelNotSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
submitForm('form7');
assertFalse(submitFired);
assertFalse(wasSubmitted);
}
function testKeyUpCancelSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
asyncTestCase.waitForAsync('if this times out, the form did not submit');
submitForm('form8');
assertTrue(submitFired);
}
function testCancelSubmitFiredNotSubmitted() {
if (BROKEN_KEYPRESS) {
return;
}
submitForm('form9', true);
assertTrue(submitFired);
}
</script>
<form id="form1" action="javascript:submitted()">
<input type="text" id="form1text1"></input><br/>
<input type="text" id="form1text2"></input><br/>
<input type="submit" value="submit"></input><br/>
</form>
<form id="form2" action="javascript:submitted()">
<input type="text" id="form2text1"></input><br/>
<input type="submit" value="submit"></input><br/>
</form>
<form id="form3" action="javascript:submitted()">
<input type="text" id="form3text1"></input><br/>
<input type="text" id="form3text2"></input><br/>
</form>
<form id="form4" action="javascript:submitted()">
<input type="text" id="form4text1"></input><br/>
</form>
<form id="form5" action="javascript:submitted()">
<input type="text" id="form5text1"></input><br/>
<input type="text" id="form5text2"></input><br/>
<input type="submit" value="submit"></input><br/>
<input type="submit" value="submit"></input><br/>
</form>
<form id="form6" action="javascript:submitted()">
<input type="text" id="form6text1" onkeydown="return false"></input><br/>
<input type="submit" value="submit"></input><br/>
</form>
<form id="form7" action="javascript:submitted()">
<input type="text" id="form7text1" onkeypress="return false"></input><br/>
<input type="submit" value="submit"></input><br/>
</form>
<form id="form8" action="javascript:submitted()">
<input type="text" id="form8text1" onkeyup="return false"></input><br/>
<input type="submit" value="submit"></input><br/>
</form>
<form id="form9" action="javascript:submitted()">
<input type="text" id="form9text1"></input><br/>
<input type="submit" value="submit"></input><br/>
</form>
<script type="text/javascript">
asyncTestCase = goog.testing.AsyncTestCase.createAndInstall();
</script>
</body>
</html>