Godog

go get github.com/tracera-dev/tracera-go/godog

Требуются Go ≥ 1.25 и Godog ≥ 0.16 (см. Адаптеры автотестов). godog на pkg.go.dev.

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

Подключите набор и инициализатор сценариев, чтобы стандартные After-хуки попадали в Постусловие (Godog выполняет After-хуки в порядке регистрации):

import (
    "github.com/cucumber/godog"
    tracera_godog "github.com/tracera-dev/tracera-go/godog"
)

suite := godog.TestSuite{
    TestSuiteInitializer: tracera_godog.RegisterSuite,
    ScenarioInitializer: tracera_godog.Initialize(func(sc *godog.ScenarioContext) {
        sc.Before(setup)
        sc.After(teardown)
        // step definitions …
    }),
}

Привязка testCaseId и autotestName

Предпочтительны теги на Scenario:

@tracera.id:42
Scenario: Checkout
  Given the cart is open

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

Или привяжите тест императивно: tracera.TestCase(42).

Пропуск

Чтобы пропустить сценарий, верните godog.ErrSkip из step definition. Причину добавьте так — она попадёт в результат как comment:

return fmt.Errorf("needs a seeded account: %w", godog.ErrSkip)

Сценарии также можно исключить через --tags у Godog.

Если шаг pending (ещё не реализован) или undefined (нет step definition), в обычном режиме Godog не считает сценарий Failed — Tracera отправляет весь сценарий как Skipped. Такие шаги не появляются в Шагах, на результате ошибки нет.

Шаги

Шаги Gherkin попадают в секцию Тест результата. Вложенность — через tracera.Step("…", func() { … }). Before/After-хуки сценария попадают в Предусловие / Постусловие; хуки уровня suite в отчёт не попадают.

func addItem() error {
    tracera.Step("nested leaf", func() {})
    return nil
}

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

Лимиты и допустимые MIME-типы: Адаптеры автотестов.

Вызывайте tracera.Comment, tracera.Error, tracera.AttachmentFile и tracera.AttachmentBytes — они добавляются к открытому шагу Gherkin или к результату.

Если вы запускаете горутину и вызываете в ней API Tracera (шаги, комментарии, ошибки, вложения), сначала сохраните контекст в тестовой горутине и запустите воркер через tracera.RunWithContext — иначе эти вызовы не попадут в отчёт:

ctx := tracera.GetContext()
go tracera.RunWithContext(ctx, func() {
    tracera.Step("worker", func() { /* ... */ })
})

Параллельный запуск сценариев (godog.Options.Concurrency > 1) не требует дополнительной настройки Tracera.

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

Для каждой строки Examples Godog сам подставляет <…> в имя сценария. Укажите фиксированный @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   |