Cypress 13 不随请求发送 cookie

问题描述 投票:0回答:1

我的测试单击一个链接,该链接会指向同一超级域上的页面。然后,在同一超级域内对此 url 的请求会重定向到不同的域进行响应。

问题是源页面的cookie没有随一起发送。因此请求失败并且不会发生重定向。

在 Cypress 11 中,我有以下工作解决方案:

cy.contains('ACTIVATE ACCOUNT').invoke('removeAttr', 'target').click();  

在 Cypress 13 中,我需要显式设置访问源的 cookie:

cy.contains('ACTIVATE ACCOUNT').invoke('attr', 'href').then(initialHref => {
        cy.getCookies().then(cookies => {
            const cookieString = cookies.map(cookie => `${cookie.name}=${cookie.value}`).join('; ');
            cy.visit(initialHref, {
                headers: {
                    'Cookie': cookieString,
                } 
            })
        });
    });

我的问题是为什么第一个解决方案停止工作?我在变更日志中没有找到任何内容https://docs.cypress.io/guides/references/changelog 起初我认为这可能与 cy.origin 有关,但该链接位于同一超域内。我想到了 cy.session 但这是为了在测试之间共享会话状态。此外,Cypress 现在将 cookie 域设置为主机域而不是超级域,但也不是这样。此次访问不再包含 cookie。

编辑:至于我为什么问。继续使用 click 会很酷,因为我想在我的 e2e 中模拟真实用户。

redirect cookies cypress cross-domain e2e-testing
1个回答
0
投票

Cypress 13 不像 Cypress 11 那样随请求发送 cookie 的问题可能源于 Cypress 内部处理 cookie 和跨域策略的变化,或者浏览器安全功能的更新,这些更新对跨域 cookie 处理变得更加严格。这些修改可能会影响自动化测试期间 cookie 的管理方式,因此需要采取变通办法,例如在导航上显式设置 cookie。

© www.soinside.com 2019 - 2024. All rights reserved.