Вот что я в итоге сделал:
- Перейти на страницу авторизации: аутентификация
На данный момент у нас есть данные, которые мы хотим сохранить между тестами в localStorage, но нам не разрешен белый список localStorage.
Тем не менее, нам разрешено белый список файлов cookie
У меня есть такой код внутри моего support/commands.js
, который действует как помощник
const sessionKeys = {
authTokens: 'auth.tokens',
sessionConfig: 'session.config',
};
// The concatenation of username and cid will be the key to set the session
Cypress.Commands.add('persistSession', (key) => {
const authTokens = localStorage.getItem(key);
cy.setCookie(key, authTokens);
});
Cypress.Commands.add('restoreSession', (key) => {
cy.getCookie(key).then(authTokens => {
localStorage.setItem(key, authTokens.value);
});
});
- Таким образом, мы вызываем
cy.persistSession(key)
после входа в систему, что означает, что у нас есть вся аутентификация, сохраненная в виде файлов cookie, которые внесены в белый список внутри support/index.js
с кодом.
Как это:
Cypress.Cookies.defaults({
whitelist: function(cookie){
// Persist auth stuff
const reAuthTokens = new RegExp('.*auth\.tokens');
if(reAuthTokens.test(cookie.name)){
return true;
}
return false;
}
});
- Теперь в любое время нам нужны наши токены аутентификации в других наших тестах, прежде чем их запускать, мы
cy.restoreSession(key)
, и мы должны быть хорошими!