submit
Submit a form.
The subject
must be a <form>
.
Syntax
.submit()
.submit(options)
Usage
Correct Usage
cy.get('form').submit() // Submit a form
Incorrect Usage
cy.submit() // Errors, cannot be chained off 'cy'
cy.get('input').submit() // Errors, 'input' does not yield a form
Arguments
options (Object)
Pass in an options object to change the default behavior of .submit()
.
Option | Default | Description |
---|---|---|
log | true | Displays the command in the Command log |
timeout | defaultCommandTimeout | Time to wait for .submit() to resolve before timing out |
Yields
.sumbit()
yields the same subject it was given..submit()
is a command, and it is unsafe to chain further methods that rely on the subject.
Example
No Args
Submit can only be called on a single form
<form id="contact">
<input type="text" name="message" />
<button type="submit">Send</button>
</form>
cy.get('#contact').submit()
Notes
Submit is not an action command
.submit()
is not implemented like other action commands, and does not follow
the same rules of
waiting for actionability.
.submit()
is a helpful command used as a shortcut. Normally a user has to
perform a different "action" to submit a form. It could be clicking a submit
<button>
, or pressing enter
on a keyboard.
Oftentimes using .submit()
directly is more concise and conveys what you're
trying to test.
If you want the other guarantees of waiting for an element to become actionable,
you should use a different command like .click()
or
.type()
.
Submit will fail if there are form validation errors
If the form being submitted includes inputs with
client-side validation
and that validation fails, .submit()
will fail and list the validation
failures.
Rules
Requirements
-
.submit()
requires being chained off a command that yields DOM element(s). -
.submit()
requires the element to be aform
.
Assertions
-
.submit()
will automatically wait for assertions you have chained to pass
Timeouts
-
.submit()
can time out waiting for assertions you've added to pass.
Command Log
Submit a form
cy.intercept('POST', '/users', { fixture: 'user' }).as('userSuccess')
cy.get('form').submit()
The commands above will display in the Command Log as:
When clicking on submit
within the command log, the console outputs the
following:
History
Version | Changes |
---|---|
< 0.3.3 | .submit() command added |