submit

Improve this doc

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

  • .submit() yields the same subject it was given from the previous command.

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

Actionability

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 just a helpful command which is a simple 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 it’s much simpler and conveys what you’re trying to test by just using .submit() directly.

If you want the other guarantees of waiting for an element to become actionable, you should use a different command like .click() or .type().

Rules

Requirements

  • .submit() requires being chained off a command that yields DOM element(s).

  • .submit() requires the element to be a form.

Assertions

  • .submit() will automatically wait for assertions you've chained to pass.

Timeouts

  • .submit() can time out waiting for assertions you've added to pass.

Command Log

Submit a form

cy.route('POST', '/users', 'fixture:user').as('userSuccess')
cy.get('form').submit()

The commands above will display in the Command Log as:

Command Log

When clicking on submit within the command log, the console outputs the following:

cy.submit console log

See also