Ginkgo

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

Go ≥ 1.25 और Ginkgo v2 आवश्यक (ऑटोटेस्ट एडेप्टर देखें)। ginkgo pkg.go.dev पर।

एनवायरनमेंट वेरिएबल और रन मोड: ऑटोटेस्ट एडेप्टर।

सूट फ़ाइल में एक बार Register() कॉल करें:

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") से imperative रूप से बाइंड करें।

Skip

Ginkgo का मानक skip (Skip("…")) उपयोग करें। Skip कारण परिणाम में comment के रूप में जोड़ा जाता है।

स्टेप्स

tracera.Step("…", func() { … }) उपयोग करें। BeforeEach / AfterEach के अंदर के स्टेप परिणाम के सेटअप / टीयरडाउन में जाते हैं; स्पेक के अंदर के स्टेप टेस्ट में। सूट-स्तर हुक (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 कॉल करें — ये खुले स्टेप या परिणाम में जुड़ते हैं।

अगर आप नई गोरुटीन में Tracera API कॉल करते हैं (स्टेप्स, कमेंट, एरर, अटैचमेंट), तो पहले टेस्ट गोरुटीन पर कॉन्टेक्स्ट सेव करें और वर्कर को tracera.RunWithContext से चलाएँ — नहीं तो ये कॉल रिपोर्ट में नहीं जाएँगे:

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

पैरलल सूट (ginkgo -p, --procs=N) प्रक्रियाओं में एक ही टेस्ट रन साझा करते हैं — कोई अतिरिक्त सेटअप नहीं।

पैरामीटराइज़्ड टेस्ट

Ginkgo DescribeTable / Entry का उपयोग करें। Label (टेबल या एंट्री) पर स्थिर tracera.id: लगाएँ। यदि नाम न लिखा हो, तो 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),
)