如何排除少数文件/文件夹使用保留的柏树cookie



我正在尝试在index.js文件中保留cookie:

Cypress.Cookies.defaults({
preserve: ['session_id', 'remember_token'],
})

但我想从使用保留的cookie中排除一些文件,如登录/身份验证文件,因为我想在这里测试真正的登录。

我看到柏树提供了类似的东西:

Cypress.Cookies.defaults({
preserve: (cookie) => {
// implement your own logic here
// if the function returns truthy
// then the cookie will not be cleared
// before each test runs
},
})

但我不知道如何排除其中的文件夹/文件。如果有人有想法,请帮忙。或者,如果有其他更好的选择来排除使用保留cookie的文件,请告诉我

我不认为有任何方法可以根据运行的规范文件来排除Cookie。相反,您可以在等级库中清除不需要值的值,并创建一个辅助对象来检查它们是否在等级库内设置。

// support/index.js
...
Cypress.Cookies.defaults({
preserve: ['session_id', 'remember_token'],
})
Cypress.Commands.add('setDefaultCookies', () => {
const defaults = { 'session_id': 'foo', 'rememberToken': 'bar' }
cy.getCookies().then((cookies) => {
for (const [key, value] of Object.entries(defaults) {
// use `find` to check if we have the specified cookie
const found = cookies.find(x => x.name === key);
if (!found) {
cy.setCookie(key, value);
}
};
});  
});
...
// auth.spec.js (doesn't want cookies)
...
before(() => {
cy.clearCookies();
});
...
// foo.spec.js (wants cookies)
...
before(() => {
cy.setDefaultCookies();
});
...

Cypress.Cookies.defaultspreserve函数中,您可以根据cookie属性和当前规范属性返回true或false。

Cypress.Cookies.defaults({
preserve: (cookie) => {
const isLogin  = Cypress.spec.name.contains('login') ||  // e.g login.spec.js
Cypress.spec.relative.contains('login');               // e.g /login-tests/...
if (cookie.name === 'token' && isLogin {
return false
} else {
return true
}
},
})

相关内容

最新更新