Cypress + Cucumber - 相同的步骤定义

Cypress + Cucumber - same steps definition

假设我有 Feature1.feature 和 Feature2.feature 文件。首先我有步骤:

Scenario: Test scenario1
Given   I Open the app
When    I Click on Tab1

在第二个文件中我有:

Scenario: Test scenario2
Given   I Open the app
When    I Click on Tab2

在 step1.js 文件中的 step_definitions 文件夹下:

Given("I open the app", () => {
  cy.visit("/home");
});

When("I Click on Tab1", () => {
  cy.get('[title="Tab1"]'.click();
});

在step_definitions文件夹下我们有多个js文件(每个测试用例分开)。那么对于第二种情况,在 step2.js 中是否需要再次定义 Open app 步骤? :

Given("I open the app", () => {
  cy.visit("/home");
});

或者它在 steps_definition 下的所有文件中全局查找?那么我只需要开始:

When("I Click on Tab2", () => {
  cy.get('[title="Tab2"]'.click();
});

但是如果多个用户正在处理测试用例并且他们不小心在不同的文件中定义了相同的步骤,例如

在一个文件中

Given("I open the app", () => {
  cy.visit("/home");
});

在其他文件中

Given("I open the app", () => {
  cy.visit("/news");
});

正如我所读,每个场景都应该是独立的。但是如果每个场景都有相同的步骤呢?我们只需要在一个文件中定义一次。但如果其他人正在处理该文件,它可能会破坏我的方案。

如果多个场景有两个步骤,您应该使用通用步骤:

可重复使用的步骤定义 我们还有一种方法可以创建可重用的步骤定义。将它们放在 cypress/integration/common/

示例:cypress/integration/common/i_see_string_in_the_title.js

import { Then } from "cypress-cucumber-preprocessor/steps";

Then(`I see {string} in the title`, (title) => {
  cy.title().should('include', title)
})

取自https://www.npmjs.com/package/cypress-cucumber-preprocessor