Jest

npm install @tracera/jest

Node.js ≥ 22.19 चाहिए (देखें ऑटोटेस्ट एडेप्टर)। @tracera/jest npm पर.

jest.config.cjs में (या अपने Jest कॉन्फ़िग में):

module.exports = {
  testEnvironment: 'node',
  setupFilesAfterEnv: ['@tracera/jest/setup'],
  reporters: ['default', '@tracera/jest/reporter'],
};

रीट्राई चालू हो तो केवल अंतिम Jest प्रयास रिपोर्ट होता है। अगर वह रीट्राई है (retry > 0), परिणाम Env टैब में JEST_RETRY आता है (1 दूसरा रन है)।

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

testCaseId और autotestName बाँधना

test / expect / hooks @jest/globals से इम्पोर्ट करें (या Jest-injected globals इस्तेमाल करें), और tracera / annotations / skip @tracera/jest से। @tracera/jest/setup रनर को इंस्ट्रूमेंट करता है ताकि स्टेप्स और बाइंड स्टॉक Jest APIs के साथ काम करें। अगर autotestName न दें, तो एडेप्टर Jest टेस्ट का नाम लेता है।

घोषणा पर (पसंदीदा — बॉडी जल्दी छोड़ दे तो भी बाइंड चलता है):

import { test, expect } from '@jest/globals';
import { annotations } from '@tracera/jest';

test(
  'login',
  annotations(42, 'e2e/login', async () => {
    expect(true).toBe(true);
  }),
);

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

import { test, expect } from '@jest/globals';
import { tracera } from '@tracera/jest';

test('login', async () => {
  tracera.testCase(42, 'e2e/login');
  expect(true).toBe(true);
});

छोड़ना

जब पहले से पता हो तो बॉडी में न जाएँ (test.skip, या सूट से पहले छोड़ें)। Jest में mid-body test.skip(reason) नहीं — इस पैकेज का skip इस्तेमाल करें:

import { test } from '@jest/globals';
import { annotations, skip } from '@tracera/jest';

test(
  'login',
  annotations(42, 'e2e/login', () => {
    if (!process.env.READY) skip('env not ready');
    // …
  }),
);

स्टेप्स

tracera.step इस्तेमाल करें। @jest/globals के स्टॉक beforeEach / afterEach इंस्ट्रूमेंटेड हैं: उनके अंदर स्टेप्स सेटअप / टीयरडाउन में जाते हैं।

import { test, beforeEach, afterEach } from '@jest/globals';
import { tracera } from '@tracera/jest';

beforeEach(async () => {
  await tracera.step('open shop', async () => {
    // …
  });
});

test('checkout', async () => {
  tracera.testCase(10, 'e2e/checkout');
  await tracera.step('add to cart', async () => {
    // …
  });
});

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

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

स्टेप के अंदर उस स्टेप के फ़ील्ड। स्टेप के बाहर रिजल्ट के फ़ील्ड। फ़ाइलों के लिए tracera.attachment इस्तेमाल करें (परिणाम पर अधिकतम 10 अटैचमेंट और हर चरण पर 10)।

import { test } from '@jest/globals';
import { tracera } from '@tracera/jest';

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

  await tracera.step('open login', async () => {
    tracera.comment('landed on login');
    tracera.attachment({
      fileName: 'suite-log.txt',
      mimeType: 'text/plain',
      data: new TextEncoder().encode('finished login flow'),
    });
  });
});