Ginkgo

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

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

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

Вызовите Register() один раз в файле suite:

import tracera_ginkgo "github.com/tracera-dev/tracera-go/ginkgo"

var _ = tracera_ginkgo.Register()

Привязка testCaseId и autotestName

Предпочтительны метки Ginkgo (Labels) — привязка сработает, даже если тест сразу уйдёт в skip:

It("checks out", Label("tracera.id:42"), func() {
    // …
})

It("checks out", Label("tracera.id:42", "tracera.name:e2e/checkout"), func() {
    // …
})

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

Пропуск

Используйте стандартный skip Ginkgo (Skip("…")). Причина skip добавляется в результат как comment.

Шаги

Используйте tracera.Step("…", func() { … }). Шаги внутри BeforeEach / AfterEach попадают в секции результата Предусловие / Постусловие; шаги внутри спецификации — в Тест. Хуки уровня suite (BeforeSuite / AfterSuite) в отчёт не попадают.

BeforeEach(func() {
    tracera.Step("open shop", func() {})
})

It("pays", Label("tracera.id:10"), func() {
    tracera.Step("add item", func() {
        tracera.Step("nested leaf", func() {})
    })
})

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

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

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

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

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

Параллельные запуски (ginkgo -p, --procs=N) используют один прогон на все процессы — дополнительная настройка не требуется.

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

Используйте Ginkgo DescribeTable / Entry. Укажите фиксированный tracera.id: в Label (на таблице или записи). Если имя не указано, то autotestName принимает значение имени теста в Ginkgo — задайте каждой Entry свой заголовок (например "one item" / "two items" ниже). Или передайте имя в tracera.TestCase:

DescribeTable("checkout", Label("tracera.id:101"),
    func(qty int) { /* ... */ },
    Entry("one item", 1),
    Entry("two items", 2),
)