Cucumber JVM

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

يتطلب JDK ≥ 17 وCucumber ≥ 7 (انظر محوّلات الاختبار الآلي). tracera-cucumber على Maven Central.

متغيرات البيئة ووضع التشغيل: محوّلات الاختبار الآلي.

ليس لدى Cucumber-JVM واجهة إعادة محاولة قياسية — لا يوجد مفتاح 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. إذا لم يُحدَّد وسم الاسم، فإن autotestName يأخذ قيمة اسم السيناريو.

داخل خطوة أو خطاف:

import dev.tracera.Tracera

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

Skip

استخدم تخطّي / pending القياسي في Cucumber. يُضاف سبب التخطّي إلى النتيجة كـ 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 عندما يختلف المعرف لكل صف.

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