在 CucumberJs & Cypress 中是否可以使上下文独立并允许具有相同描述的步骤?

Is it possible in CucumberJs & Cypress to make contexts independent and allow steps with same description?

我有一个基于打字稿的 Cypress 和 CucumberJs 设置,用于我正在处理的项目中的端到端测试。

恰好有两个不同的特征文件bus.featurecar.feature及其步骤定义文件bus.spec.tscar.spec.ts

我有两个不同的步骤定义:

Then(
  'I {string} the Destination page', (operation: operation) => {
    cy.location().should(location => {
      switch (operation) {
        case 'visit':
          expect(location.pathname).to.eq('/e2e/destination')
          break

        case `can't visit`:
          expect(location.pathname).to.eq('/e2e/bus')
          break
      }
    })
  }
)

Then(
  'I {string} the Destination page', (operation: operation) => {
    cy.location().should(location => {
      switch (operation) {
        case 'visit':
          expect(location.pathname).to.eq('/e2e/destination')
          break

        case `can't visit`:
          expect(location.pathname).to.eq('/e2e/car')
          break
      }
    })
  }
)

它们的识别字符串相同 'I {string} the Destination page' 但在实现中略有不同(例如 can't visit 的情况)。

当我 运行 测试时,bus 完全完美执行。

car 有一个问题,因为两个测试的识别字符串相同,Cypress+CucumberJs 套件只检测第一个 bus 定义,忽略 car和正确的。

我明白为什么,第一个被检测到,就是这样。 问题是,有没有一种方法可以分离不同文件的上下文,从而能够在不同的实现中使用相同的定义名称?

提前致谢

为什么不

'I {string} the Destination page for {string}', (operation: operation, transportMode) => {
  ...
  expect(location.pathname).to.eq(`/e2e/car${transportMode}`)

或者这会扰乱特征和步骤之间的匹配吗?