# get browser cookies in all automation frameworks
## selenium
```javascript
driver.manage().getCookies();
```
## WDIO
### >= v5
```javascript
browser.getCookies(names?)
```
### <= v4
```javascript
browser.getCookie(name?);
browser.cookie([method][,args]);
```
## cypress
```javascript
cy.getCookies(options?)
```
## nightwatch
```javascript
browser.getCookies(callback)
```
## playwright
```javascript
const context = await browser.newContext();
await context.cookies([urls?])
```
## protractor
```javascript
await browser.manage().getCookies()
```
## puppeteer
```javascript
await page.cookies([...urls?])
```
## storybook
```javascript
await page.cookies([...urls?])
```
## testcafe
```javascript
import {ClientFunction} from 'testcafe';
const getCookies = ClientFunction(() => document.cookie);
```
# cookie restrictions
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
in order to get all CORS cookies, a cookie must have the following properties:
- `secure: true` (`Secure`)
- `sameSite: 'none'` (`SameSite: None`)
# behavior
## http
```javascript
{domain: 'localhost', path: '/images/', secure: true, sameSite: 'none'}
// no cookies when running driver.getCookies()
// browser shows cookie correctly and gets image
```
```javascript
{domain: 'localhost'}
// cookies available when driver.getCookies()
// browser shows cookies correctly and gets image
//cookie (not the cookie we are after - see path property):
{domain:'localhost', httpOnly:false, name:'token', path:'/', secure:false, value:'12345'}
```
## https
```javascript
// thelocalnetwork is mapped to localhost in /etc/hosts
// both local servers are served over https
// chrome is started with a flag to disable ssl cert checks
{ domain: 'thelocalnetwork', secure: true, sameSite: 'none', path: '/images/' }
await driver.manage().getCookies() // []
const client = await CDP({port: 9222})
await client.send('Network.getAllCookies') // [Array(1)]
```
## cdp commands
```javascript
// using cdp when available, can get all browser cookies when driver can't
{domain: 'localhost', path: '/images/', secure: true, sameSite: 'none'}
await driver.manage().getCookies() // []
const client = await CDP({port: 9222})
await client.send('Network.getAllCookies') // [Array(1)]
```
```
TODO:
- implement CDP get cookies in spec-driver selenium
- validate results
- move to vgc - implment logic for cookie filter and fetch reosource
```
| Framework | Cookies | CDP Cookies |
| -------- | -------- | -------- |
| eyes-nightwatch| Yes | No |
| eyes-protractor| Yes| Yes|
| eyes-playwright| Yes| Yes|
| eyes-selenium| Yes| Yes|
| eyes-selenium-3| Yes| Yes|
| eyes-webdriverio-4| Yes| Yes|
| eyes-webdriverio-5| Yes| Yes|