在cypress headless模式下,测试无法获取index.js中提供的设置
点击我们测试站点上的某个按钮,系统应该导航到MYOB登录页面。但在无头模式下运行测试时,不会发生这种情况,并显示在页面下方(请参阅屏幕截图)。在testrunner模式下,最初我看到了这个错误,但是在index.js中添加了在cypress headless模式下,测试无法获取index.js中提供的设置,cypress,cypress-cucumber-preprocessor,Cypress,Cypress Cucumber Preprocessor,点击我们测试站点上的某个按钮,系统应该导航到MYOB登录页面。但在无头模式下运行测试时,不会发生这种情况,并显示在页面下方(请参阅屏幕截图)。在testrunner模式下,最初我看到了这个错误,但是在index.js中添加了--disable features=samesitebydfaultcookies之后,测试成功地导航到了MYOB站点,我可以继续。知道为什么上述设置不适用于无头模式吗 Cypress版本:6.6.0 GitBash:2.28.0 操作系统:Windows 10 64位操
--disable features=samesitebydfaultcookies
之后,测试成功地导航到了MYOB站点,我可以继续。知道为什么上述设置不适用于无头模式吗
Cypress版本:6.6.0
GitBash:2.28.0
操作系统:Windows 10 64位操作系统
柏树黄瓜预处理器“:2.5.5
从Git bash运行以下命令:
CYPRESS_baseUrl=https://some-test-url/book/ npx cypress-tags run -e TAGS='@experimental' --config experimentalSourceRewriting=true GLOB='tests/cypress/integration/book/test-booking.feature' --headless --browser chrome
const testStore = {};
module.exports = (on, config) => {
on('file:preprocessor', cucumber()),
on('before:browser:launch', (browser, launchOptions) => {
if (browser.name === 'chrome' && browser.isHeadless) {
launchOptions.args.push('--disable-gpu');
return launchOptions
}
if (browser.name === 'chrome' || browser.name === 'edge' || browser.isHeadless) {
launchOptions.args.push('--disable-features=SameSiteByDefaultCookies') // bypass 401 unauthorised access on chromium-based browsers
return launchOptions
}
if (browser.name === 'chrome') {
// launch chrome using incognito
launchOptions.args.push(' --incognito')
return launchOptions
}
});
on('task', {
copySomeData({ name, value }) {
console.log(name, value)
testStore[name] = value
return true
},
});
on('task', {
getSomeData(name) {
return testStore[name]
},
});
};
如果您在匿名模式下测试,请注意,匿名模式的默认设置是阻止第三方cookie。这可能会导致类似于由于缺少SameSite属性而阻止跨站点cookie的行为。此设置可以在匿名模式的新选项卡页上更改,或在chrome://settings/cookies. 资料来源: