Get a browser cookie by its name.
Syntax
cy.getCookie(name) cy.getCookie(name, options)
Usage
Correct Usage
cy.getCookie('auth_key') // Get cookie with name 'auth_key'
Arguments
name (String)
The name of the cookie to get. Required.
options (Object)
Pass in an options object to change the default behavior of cy.getCookie()
.
Option | Default | Description |
---|---|---|
log | true | Displays the command in the Command log |
timeout | responseTimeout | Time to wait for cy.getCookie() to resolve before timing out
|
Yields
cy.getCookie()
yields a cookie object with the following properties:
name
value
path
domain
httpOnly
secure
expiry
When a cookie matching the name could not be found:
cy.getCookie()
yields null
.
Examples
Session id
Get session_id
cookie after logging in
In this example, on first login, our server sends us back a session cookie.
// assume we just logged in cy.contains('Login').click() cy.url().should('include', 'profile') // retries until cookie with value=189jd09su // is found or default command timeout ends cy.getCookie('session_id') .should('have.property', 'value', '189jd09su') .then((cookie) => { // cookie is an object with "domain", "name" and other properties })
You can check the cookie existence without comparing any of its properties
cy.getCookie('my-session-cookie').should('exist')
If you need the cookie value, for example to use in a subsequent call
let cookie cy.getCookie('session_id') .should('exist') .then((c) => { // save cookie until we need it cookie = c }) // some time later, force the "cy.request" // to run ONLY after the cookie has been set // by placing it inside ".then" cy.get('#submit') .click() .then(() => { cy.request({ url: '/api/admin', headers: { 'my-token-x': cookie.value } }) })
Using cy.getCookie()
to test logging in
Check out our example recipes using
cy.getCookie()
to test logging in using HTML web forms, logging in using XHR web forms and logging in with single sign on
Rules
Requirements
cy.getCookie()
requires being chained off ofcy
.
Assertions
cy.getCookie()
will only run assertions you've chained once, and will not retry.
Timeouts
cy.getCookie()
should never time out.
Because
cy.getCookie()
is asynchronous it is technically possible for there to be a timeout while talking to the internal Cypress automation APIs. But for practical purposes it should never happen.
Command Log
cy.getCookie('fakeCookie1').should('have.property', 'value', '123ABC')
The commands above will display in the Command Log as:
When clicking on getCookie
within the command log, the console outputs the following: