有没有办法创建一个 alias/variable/command 来在赛普拉斯测试中重复一个静态代码块?
Is there a way to create an alias/variable/command to repeat a static code block in Cypress Tests?
我正在测试一个非常长的表单页面,它有 12 个输入字段。我基本上是在测试表单页面的自动保存功能。所以测试逻辑是访问每个字段,键入一个值,然后检查 header 是否有 saving
和 saved
状态消息。然后重新加载页面并查看输入字段是否保留其值。例如
// Aliases for the input fields
cy.get('div[name="title"] input').as('Title');
cy.get('div[name="location"] input').as('Location');
cy.get('div[name="duration"] input').as('Duration');
....
cy.get('@Title').type(randomTitle);
// @Testing save status and reload -------------------
cy.get('.form-header').within(() => {
cy.contains('SAVING');
cy.contains('SAVED');
});
cy.reload();
//----------------------------------------------------
cy.get('@Title').then((elem) => {
expect(elem.val()).to.equal(randomTitle);
});
一切正常,但我希望能重构代码以使其更简洁。我看到的唯一问题是我基本上重复了 @Testing save status and reload
代码块 12 次。无论如何,在赛普拉斯中,我可以创建一个别名、变量或命令来 运行 使用一个衬里的特定块吗?可能吗?
我真是个白痴,这个问题的答案就在标题本身。
我所要做的就是在命令文件中创建一个这样的命令。
const checkSaveStatus = () => {
cy.get('.form-header').within(() => {
cy.contains('SAVING');
cy.contains('SAVED');
});
cy.reload();
};
Cypress.Commands.add('checkSaveStatus', checkSaveStatus);
并在我的测试中这样调用它
cy.checkSaveStatus();
我正在测试一个非常长的表单页面,它有 12 个输入字段。我基本上是在测试表单页面的自动保存功能。所以测试逻辑是访问每个字段,键入一个值,然后检查 header 是否有 saving
和 saved
状态消息。然后重新加载页面并查看输入字段是否保留其值。例如
// Aliases for the input fields
cy.get('div[name="title"] input').as('Title');
cy.get('div[name="location"] input').as('Location');
cy.get('div[name="duration"] input').as('Duration');
....
cy.get('@Title').type(randomTitle);
// @Testing save status and reload -------------------
cy.get('.form-header').within(() => {
cy.contains('SAVING');
cy.contains('SAVED');
});
cy.reload();
//----------------------------------------------------
cy.get('@Title').then((elem) => {
expect(elem.val()).to.equal(randomTitle);
});
一切正常,但我希望能重构代码以使其更简洁。我看到的唯一问题是我基本上重复了 @Testing save status and reload
代码块 12 次。无论如何,在赛普拉斯中,我可以创建一个别名、变量或命令来 运行 使用一个衬里的特定块吗?可能吗?
我真是个白痴,这个问题的答案就在标题本身。 我所要做的就是在命令文件中创建一个这样的命令。
const checkSaveStatus = () => {
cy.get('.form-header').within(() => {
cy.contains('SAVING');
cy.contains('SAVED');
});
cy.reload();
};
Cypress.Commands.add('checkSaveStatus', checkSaveStatus);
并在我的测试中这样调用它
cy.checkSaveStatus();