Cucumber JVM

dependencies {
    testImplementation("dev.tracera:tracera-cucumber:<version>")
}

Требуются JDK ≥ 17 и Cucumber ≥ 7 (см. Адаптеры автотестов). tracera-cucumber на Maven Central.

Переменные окружения и режим прогона: Адаптеры автотестов.

У Cucumber-JVM нет стандартного API повторов — ключа Env CUCUMBER_RETRY нет.

Зарегистрируйте плагин:

cucumber.plugin=dev.tracera.TraceraCucumberPlugin

Или через @CucumberOptions(plugin = ["dev.tracera.TraceraCucumberPlugin"]).

Привязка testCaseId и autotestName

Укажите теги на Scenario (предпочтительно):

@tracera.id:42
@tracera.name:e2e%2Flogin
Scenario: Login
  Given the user opens login

Необязательный @tracera.name: — URL-encoded. Если тег имени не указан, то autotestName принимает значение имени сценария.

Внутри шага или хука:

import dev.tracera.Tracera

Tracera.testCase(42, "e2e/login")

Пропуск

Используйте стандартный skip / pending Cucumber. Skip reason добавляется в результат как comment.

Шаги

Gherkin-шаги попадают в секцию Тест результата. Вложенность — через Tracera.step("…") { … }, Tracera.suspendStep("…") { … } для корутин или @Tracera.Step("…") на glue-методах (sync и suspend). Если у @Tracera.Step заголовок пустой или не указан, в отчёт идёт имя метода; плейсхолдеры {0} / {name} в заголовке заполняются из аргументов метода. Хуки Before / After сценария попадают в Предусловие / Постусловие. Хуки Feature / suite в отчёт не попадают.

import dev.tracera.Tracera
import io.cucumber.java.en.When

class CheckoutSteps {
    @Tracera.Step("add {sku}")
    fun addSku(sku: String) {
    }

    @When("the user checks out with {string}")
    fun checkout(sku: String) {
        addSku(sku)
        Tracera.step("pay") { }
    }
}

Комментарии, ошибки и вложения

Комментарии, ошибки и вложения: Адаптеры автотестов.

Tracera.comment("result-level note")
Tracera.error("result-level error text")
Tracera.step("open login") {
    Tracera.comment("landed on login")
}

Параметризованные тесты

Для каждой строки Examples Cucumber сам подставляет <…> в имя сценария. Укажите фиксированный @tracera.id: на Outline или Scenario, или вызывайте Tracera.testCase, если id разный по строкам.

@tracera.id:42
Scenario Outline: Login as <login>
  Given the user signs in as "<login>"
  Examples:
    | login |
    | ok    |
    | sso   |