是否可以在不同的步骤文件中保留与 BDD 相同的会话 ID

Is it possible to retain same session id with BDD in different step files

我想用 Cypress 实现 BDD,并希望在不同的步骤文件中保留相同的会话 ID。

所以对于不同的功能文件我有不同的步骤文件。

我的功能文件看起来像

1.Login-登录应用程序

2.Add员工-登录后添加员工

我想在功能文件的步骤定义中使用相同的登录凭据。

但问题是赛普拉斯清除了不同测试中的所有 cookie。

那么如何实现这个依赖

有一个 Cypress 插件 cypress-localstorage-commands 可以用来保存变量的值,然后可以跨测试使用。 你可以这样使用它:

let SESSION_ID = '';
before(() => {
        cy.setLocalStorage('sessionId', '000'); // capture the id for example
        cy.saveLocalStorage()
});

beforeEach(() => {
        cy.restoreLocalStorage();
        cy.getLocalStorage('sessionId').as('id'); 
        SESSION_ID = id;
});

it('test 1', () => {
 cy.get(SESSION_ID).should('eq', '000');
});

it('test 2', () => {
 cy.log(SESSION_ID);
});

参考:https://www.npmjs.com/package/cypress-localstorage-commands

另一个选项可能是使用夹具文件和命令 cy.writeFilesession id 保存在 before 下,然后在您的下捕获它测试 it