Возможно ли в CucumberJS и Cypress сделать контексты независимыми и разрешить шаги с одинаковым описанием?

#cucumber #cypress #definition #cucumberjs #cypress-cucumber-preprocessor

Вопрос:

У меня есть настройка Cypress и CucumberJS на основе машинописного текста для сквозных тестов в проекте, над которым я работаю.

Так получилось, что у него есть два разных файла функций bus.feature и car.feature с их файлами определения шагов bus.spec.ts и car.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 и правильное.

Я понимаю, почему, обнаруживается первый, и все. Вопрос в том, есть ли способ разделить контексты разных файлов, чтобы иметь возможность иметь одно и то же имя определения с разной реализацией?

Заранее спасибо

Ответ №1:

Почему нет

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

или это нарушает соответствие между функцией и шагом?

Комментарии:

1. Ах, это могло бы сработать. Но это крючок. Может быть, концептуально я пытаюсь добиться чего-то неправильного. Но мне было интересно, существуют ли другие подходы, более ориентированные на конфигурацию.