Setting cookies before browser.get
addCookie
with newer Protractor versions (tested with 5.4.2) takes an object of type IWebDriverOptionsCookie
instead.
Note: to fetch the cookie use getCookies
Example:
browser.manage().addCookie({ name: 'foo', value: 'bar' });
IWebDriverOptionsCookie
documentation:
interface IWebDriverOptionsCookie {
/** The name of the cookie. */
name: string;
/** The cookie value. */
value: string;
/** The cookie path. Defaults to "/" when adding a cookie. */
path?: string;
/**
* The domain the cookie is visible to. Defaults to the current browsing
* context's document's URL when adding a cookie.
*/
domain?: string;
/**
* Whether the cookie is a secure cookie. Defaults to false when adding a new
* cookie.
*/
secure?: boolean;
/**
* Whether the cookie is an HTTP only cookie. Defaults to false when adding a
* new cookie.
*/
httpOnly?: boolean;
/**
* When the cookie expires.
*
* When adding a cookie, this may be specified in seconds since Unix epoch (January 1, 1970).
* The expiry will default to 20 years in the future if omitted.
*
* The expiry is always returned in seconds since epoch when
* retrieving cookies from the browser.
*
* @type {(!Date|number|undefined)}
*/
expiry?: number | Date;
}
I found the solution in the Protractor Getting Started doc:
browser.driver.get('http://' + domain + '/');
browser.manage().addCookie('foo', 'boo', '/', domain);
Note the browser.driver.get
instead of browser.get
. This will prevent Protractor looking for the Angular app and cookies can be set. I then use another browser.get
inside of it
statement.