WebdriverIO

npm install @tracera/webdriverio

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

wdio.conf.ts में (Mocha):

export const config = {
  reporters: ['spec', ['@tracera/webdriverio/reporter', {}]],
  services: [['@tracera/webdriverio/service', {}]],
  mochaOpts: {
    require: ['@tracera/webdriverio/setup'],
  },
};

Cucumber के लिए वही reporter और service रजिस्टर करें। Scenario पर टैग @tracera.id:‹id› लगाना बेहतर है (वैकल्पिक @tracera.name:…), या Before hook या step से tracera.testCase कॉल करें।

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

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

testCaseId और autotestName बाँधना

mochaOpts.require के ज़रिए @tracera/webdriverio/setup लोड करें और tracera और annotations इम्पोर्ट करें। Mocha annotations नाम शाब्दिक होते हैं ({param} नहीं)।

Mocha — घोषणा पर (पसंदीदा):

import { annotations } from '@tracera/webdriverio';

it(
  'login',
  annotations(42, 'e2e/login', async () => {
    await browser.url('https://example.com');
  }),
);

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

import { tracera } from '@tracera/webdriverio';

it('login', async () => {
  tracera.testCase(42, 'e2e/login');
  await browser.url('https://example.com');
});

Cucumber — Scenario टैग (पसंदीदा):

@tracera.id:42
@tracera.name:e2e%2Flogin
Scenario: login
  Given I open the login page

Scenario टैग के बिना बाँधने के लिए Before hook या step से tracera.testCase कॉल करें।

Skip

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

import { annotations, tracera } from '@tracera/webdriverio';

it(
  'login',
  annotations(42, 'e2e/login', async function () {
    if (!process.env.READY) {
      tracera.comment('env not ready');
      this.skip();
    }
    await browser.url('https://example.com/login');
  }),
);

स्टेप्स

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

import { tracera } from '@tracera/webdriverio';

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

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

afterEach(async () => {
  await tracera.step('cleanup', async () => {
    await browser.url('/cart/clear');
  });
});

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

import { tracera } from '@tracera/webdriverio';

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

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

टिप्पणी, त्रुटियाँ और अटैचमेंट: ऑटोटेस्ट एडेप्टर।

import { tracera } from '@tracera/webdriverio';

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

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

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

import { annotations } from '@tracera/webdriverio';

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, async () => {
      await browser.url(`https://example.com${row.path}`);
    }),
  );
}

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