Skip to main content

submit

Submit a form.

It is unsafe to chain further commands that rely on the subject after .submit().

caution

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().

OptionDefaultDescription
logtrueDisplays the command in the Command log
timeoutdefaultCommandTimeoutTime to wait for .submit() to resolve before timing out

Yields ​

  • .submit() yields the same subject it was given.
  • It is unsafe to chain further commands that rely on the subject after .submit().

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 a form.

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:

Command Log submit

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

Console Log submit

History​

VersionChanges
< 0.3.3.submit() command added

See also​