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) कॉल करें।