Cypress

npm install @tracera/cypress

Node.js 22.19–26.12 और Cypress 14–16.2 पर परीक्षित (देखें ऑटोटेस्ट एडेप्टर)। @tracera/cypress npm पर.

cypress.config.ts में:

import { defineConfig } from 'cypress';
import { registerTraceraPlugin } from '@tracera/cypress';

export default defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      return registerTraceraPlugin(on, config);
    },
    supportFile: 'cypress/support/e2e.ts',
  },
});

सपोर्ट फ़ाइल में:

import '@tracera/cypress/support';

कंपोनेंट टेस्टिंग (Component Testing) के लिए component.setupNodeEvents से registerTraceraPlugin कॉल करें और कंपोनेंट टेस्टिंग सपोर्ट फ़ाइल से वही सपोर्ट एंट्री इम्पोर्ट करें।

एनवायरनमेंट, रन मोड और रीट्राई: ऑटोटेस्ट एडेप्टर।

रीट्राई Env कुंजी: CYPRESS_RETRY।

testCaseId और autotestName बाँधना

tracera और annotations को @tracera/cypress/runtime से इम्पोर्ट करें, या टेस्ट में cy.traceraTestCase इस्तेमाल करें (कमांड तब उपलब्ध है जब सपोर्ट फ़ाइल में import '@tracera/cypress/support' हो)। annotations नाम शाब्दिक होते हैं ({param} नहीं)।

घोषणा पर (पसंदीदा — जल्दी this.skip() करने पर भी बाइंड चलता है):

import { annotations } from '@tracera/cypress/runtime';

it('login', annotations(42, 'e2e/login'), () => {
  cy.visit('/login');
  cy.get('[data-testid=sign-in]').should('be.visible');
});

टेस्ट के अंदर (अगर annotations पहले से केस बाँध चुके हों तो वैकल्पिक):

import { tracera } from '@tracera/cypress/runtime';

it('login', () => {
  tracera.testCase(42, 'e2e/login');
  cy.visit('/login');
  cy.get('[data-testid=sign-in]').should('be.visible');
});

या: cy.traceraTestCase(42, "e2e/login")।

Skip

स्टॉक Cypress skip (this.skip())। वैकल्पिक: skip कॉल से पहले tracera.comment से result comment सेट करें।

import { tracera, annotations } from '@tracera/cypress/runtime';

it('login', annotations(42, 'e2e/login'), function () {
  if (!Cypress.env('READY')) {
    tracera.comment('env not ready');
    this.skip();
  }
  cy.visit('/login');
});

स्टेप्स

tracera.step या cy.traceraStep इस्तेमाल करें: कॉल tracera.step(title, fn) / cy.traceraStep(title, fn), क्लास मेथड पर डेकोरेटर @tracera.step("…"), या tracera.step("…")(fn)। डेकोरेटर शीर्षक में {name} / {0} मेथड आर्गुमेंट से भरते हैं; शीर्षक लौटाने वाला फ़ंक्शन भी दे सकते हैं। कॉल-फ़ॉर्म में {name} / {0} नहीं भरते — तैयार शीर्षक स्ट्रिंग दें (या खुद बनाएँ)। Async कोड Cypress कमांड कतार में चलता है। import "@tracera/cypress/support" के बाद मानक beforeEach / afterEach लपेटे गए हैं — उनके अंदर स्टेप्स परिणाम के सेटअप / टीयरडाउन में जाते हैं। सूट-स्तरीय हुक्स (before / after) रिपोर्ट नहीं होते।

import { tracera } from '@tracera/cypress/runtime';

beforeEach(() => {
  tracera.step('open shop', () => {
    return cy.visit('/shop');
  });
});

it('checkout', () => {
  tracera.testCase(10, 'e2e/checkout');
  tracera.step('add to cart', () => {
    return cy.get('[data-testid=add]').click();
  });
});

afterEach(() => {
  tracera.step('cleanup', () => {
    // …
  });
});

मेथड पर डेकोरेटर:

import { tracera } from '@tracera/cypress/runtime';

class Cart {
  @tracera.step('add {item}')
  async addToCart(item: string) {
    // …
  }
}

टिप्पणियाँ, त्रुटियाँ और अटैचमेंट

टिप्पणी, त्रुटियाँ और अटैचमेंट: ऑटोटेस्ट एडेप्टर। प्लगइन रजिस्टर होने पर फ़ेल स्क्रीनशॉट रिज़ल्ट में जुड़ते हैं।

import { tracera } from '@tracera/cypress/runtime';

it('login', () => {
  tracera.testCase(42, 'e2e/login');
  tracera.comment('result-level note');
  tracera.error('result-level error text');

  tracera.step('open login', () => {
    return cy.visit('/login').then(() => {
      tracera.comment('landed on login');
      tracera.attachment({
        fileName: 'suite-log.txt',
        mimeType: 'text/plain',
        data: 'finished login flow',
      });
    });
  });
});

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

import { annotations } from '@tracera/cypress/runtime';

const rows = [
  { id: 42, name: 'e2e/login-ok', path: '/login' },
  { id: 43, name: 'e2e/login-sso', path: '/login/sso' },
];

for (const row of rows) {
  it(row.name, annotations(row.id, row.name), () => {
    cy.visit(row.path);
  });
}

या टेस्ट में annotations की जगह tracera.testCase(row.id, row.name) कॉल करें।