CucumberJS JSON रिपोर्टर
wdio-cucumberjs-json-reporter एक तृतीय पक्ष पैकेज है, अधिक जानकारी के लिए कृपया देखें GitHub | npm
WebdriverIO v8 और उससे ऊपर के लिए CucumberJS JSON फाइलें बनाने वाला एक WDIO रिपोर्टर।
यह क्या करता है
यह रिपोर्टर प्रत्येक फीचर के लिए एक Cucumber JSON फाइल जेनरेट करेगा जिसका परीक्षण किया जा रहा है। JSON फाइल का उपयोग आप जिस भी रिपोर्ट के साथ करना चाहते हैं उसके साथ किया जा सकता है, जैसे multiple-cucumber-html-reporter।
यह फीचर फाइल में चल रहे इंस्टेंस के बारे में मेटाडेटा भी जोड़ेगा और अंत में, यह आपको JSON आउटपुट में अटैचमेंट्स जोड़ने का अवसर देगा।
इंस्टालेशन
सबसे आसान तरीका है wdio-cucumberjs-json-reporter
को अपने package.json
में devDependency के रूप में रखना।
{
"devDependencies": {
"wdio-cucumberjs-json-reporter": "^5.0.0"
}
}
आप इसे आसानी से कर सकते हैं:
npm install wdio-cucumberjs-json-reporter --save-dev
इस प्रकार यह स्वचालित रूप से आपके package.json
में जोड़ दिया जाएगा
WebdriverIO
को इंस्टॉल करने के निर्देश यहां पाए जा सकते हैं।
कॉन्फिगरेशन
अपनी wdio.conf.js फाइल में आउटपुट डायरेक्टरी और भाषा को कॉन्फिगर करें:
export const config = {
// ...
reporters: [
// इस तरह से डिफॉल्ट विकल्पों के साथ, नीचे दिए गए विकल्पों को देखें
'cucumberjs-json',
// या इस तरह से अगर आप फोल्डर और भाषा सेट करना चाहते हैं
[ 'cucumberjs-json', {
jsonFolder: '.tmp/new/',
language: 'en',
},
],
],
// ...
}
रिपोर्टर को जोड़ने के दोनों तरीकों का उपयोग न करें, यह सिर्फ एक उदाहरण है!
विकल्प
jsonFolder
- प्रकार:
String
- अनिवार्य: नहीं
- डिफॉल्ट:
.tmp/json/
वह डायरेक्टरी जहां इस रिपोर्ट द्वारा जेनरेट की गई JSON फाइलें संग्रहीत की जाएंगी, स्क्रिप्ट शुरू होने के स्थान से सापेक्ष।
ध्यान दें: यदि आप कमांड लाइन से npm स्क्रिप्ट का उपयोग करते हैं, जैसे कि npm run test
, तो jsonFolder
उस पथ से सापेक्ष होगा
जहां से स्क्रिप्ट निष्पादित की जाती है। अपने प्रोजेक्ट के रूट से इसे निष्पादित करने पर आपके प्रोजेक्ट के रूट में भी jsonFolder
बनाया जाएगा।
language
- प्रकार:
String
- अनिवार्य: नहीं
- डिफॉल्ट:
en
वह भाषा जिसमें Gherkin परिदृश्य लिखे गए हैं (डिफॉल्ट अंग्रेजी है)। भाषा कोड और उनके कीवर्ड्स की सूची यहां पाई जा सकती है।
disableHooks
- प्रकार:
boolean
- अनिवार्य: नहीं
- डिफॉल्ट:
false
यदि यह प्रॉपर्टी true
पर सेट है तो हुक विवरण जेनरेशन का हिस्सा नहीं होंगे।
reportFilePerRetry
- प्रकार:
boolean
- अनिवार्य: नहीं
- डिफॉल्ट:
true
जब किसी स्पेक को री-ट्राई किया जाता है, तो रिपोर्ट पिछले प्रयासों से मौजूदा रिपोर्ट फाइल में जोड़ी जाएगी यदि यह प्रॉपर्टी false
पर सेट है।
उदाहरण:
['cucumberjs-json', { jsonFolder: '.tmp/new/', language: 'en', disableHooks:true}]
मेटाडेटा
नोट:
यह वर्तमान में WebdriverIO V6 के साथ समर्थित नहीं है, WebdriverIO V5 अभी भी इसका समर्थन करता है और WebdriverIO V7 फिर से इसका समर्थन करता है
जैसा कि कहा गया है, यह रिपोर्ट वर्तमान मशीन/डिवाइस का मेटाडेटा स्वचालित रूप से स्टोर कर सकती है जिस पर फीचर निष्पादित किया गया है।
इसे कस्टमाइज़ करने के लिए आप अपने capabilities
में निम्नलिखित ऑब्जेक्ट जोड़ सकते हैं
// Example wdio.conf.js
export const config = {
//..
capabilities: [
{
browserName: 'chrome',
// Add this
'cjson:metadata': {
// For a browser
browser: {
name: 'chrome',
version: '58',
},
// for an app
app: {
name: 'name.of.app.ipa',
version: '1.2.3',
},
device: 'MacBook Pro 15',
platform: {
name: 'OSX',
version: '10.12.6'
}
},
},
],
};
मेटाडेटा ऑब्जेक्ट में
cjson
प्रीफिक्स होना चाहिए, अन्यथा यह काम नहीं करेगा!
मेटाडेटा मान
metadata.app.name
- प्रकार:
string
उदाहरण: ऐप का नाम।
metadata.app.version
- प्रकार:
string
उदाहरण: ऐप का वर्शन।
metadata.browser.name
- प्रकार:
string
- संभावित मान:
internet explorer | edge | chrome | firefox | safari
metadata.browser.version
- प्रकार:
string
उदाहरण: ब्राउज़र का वर्शन, इसे मैन्युअल रूप से जोड़ा जा सकता है या परीक्षणों के निष्पादन के दौरान सटीक वर्शन नंबर प्राप्त करने के लिए प्राप्त किया जा सकता है।
metadata.device
- प्रकार:
string
उदाहरण: एक नाम जो डिवाइस के प्रकार का प्रतिनिधित्व करता है। उदाहरण के लिए, यदि आप इसे वर्चुअल मशीन पर चलाते हैं, तो आप इसे Virtual Machine
में रख सकते हैं,
या मोबाइल का नाम, जैसे iPhone 7 Plus
।
metadata.platform.name
- प्रकार:
string
- संभावित मान:
windows | osx | linux | ubuntu | android | ios
metadata.platform.version
- प्रकार:
string
उदाहरण: प्लेटफॉर्म का वर्शन
यदि आप मेटाडेटा में
browser
-ऑब्जेक्ट प्रदान नहीं करते हैं, तो यह मॉड्यूल स्वचालित रूप से इसे आपके लिए निर्धारित करेगा। यह हमेशा इसे सबसे हाल ही के मान से ओवरराइड करेगा जिसे यह निर्धारित कर सकता है।
यदि आप
device
और/याplatform
-ऑब्जेक्ट प्रदान नहीं करते हैं तो इसे आपके लिए डिफॉल्ट रूप सेnot known
सेट किया जाएगा
यदि आप
browser.name
याbrowser.version
प्रदान नहीं करते हैं तो मॉड्यूल इसे स्वचालित रूप से निर्धारित करने का प्रयास करेगा।
अटैचमेंट
आपके पास इन सभी हुक्स/स्टेप्स में JSON फाइल से डेटा अटैच करने का विकल्प है:
- Before(All)
- After(All)
- Given
- When
- Then
- And
आपको अपनी स्टेप फाइलों में बस निम्नलिखित कोड प्रदान करने की आवश्यकता है।
ES मॉड्यूल्स (ESM) के लिए
import cucumberJson from 'wdio-cucumberjs-json-reporter';
// स्ट्रिंग अटैच करें (यदि कोई प्रकार प्रदान नहीं किया गया है तो यह स्वचालित रूप से `text/plain` को डिफॉल्ट करेगा)
cucumberJson.attach('just a string');
cucumberJson.attach('just a second string', 'text/plain');
// JSON अटैच करें
cucumberJson.attach({"json-string": true}, 'application/json');
// before हुक में स्क्रीनशॉट अटैच करें
cucumberJson.attach(await browser.takeScreenshot(), 'image/png');
CommonJS (CJS) के लिए
const { attach } = require("wdio-cucumberjs-json-reporter");
// स्ट्रिंग अटैच करें (यदि कोई प्रकार प्रदान नहीं किया गया है तो यह स्वचालित रूप से `text/plain` को डिफॉल्ट करेगा)
attach('just a string');
attach('just a second string', 'text/plain');
// JSON अटैच करें
attach({"json-string": true}, 'application/json');
// before हुक में स्क्रीनशॉट अटैच करें
attach(await browser.takeScreenshot(), 'image/png');
multiple-cucumber-html-reporter के साथ उपयोग करें
WebdriverIO V4 के लिए पिछला मॉड्यूल, wdio-multiple-cucumber-html-reporter,
में multiple-cucumber-html-reporter-मॉड्यूल के साथ एक बिल्ट-इन कनेक्शन था। यह इस रिपोर्टर के लिए लागू नहीं है क्योंकि WebdriverIO V5 का नया सेटअप एक इंस्टेंस पर आधारित है जो मुझे onPrepare
और onComplete
हुक का उपयोग करने की अनुमति नहीं देता है।
यदि आप अभी भी multiple-cucumber-html-reporter-मॉड्यूल का उपयोग करना चाहते हैं, तो आप अपनी कॉन्फिग फाइल में निम्नलिखित जोड़ सकते हैं।
-
मॉड्यूल को इंस्टॉल करें
npm install multiple-cucumber-html-reporter --save-dev
-
अपनी कॉन्फिगरेशन फाइल में यह जोड़ें
import fs from 'node:fs/promises'
// मॉड्यूल को इम्पोर्ट करें
import { generate } from 'multiple-cucumber-html-reporter'
// Example wdio.conf.js
export const config = {
//..
// =====
// Hooks
// =====
/**
* All workers के लॉन्च होने से पहले एक बार एक्जिक्यूट होता है।
*/
onPrepare: () => {
// `.tmp/` फोल्डर को हटाएं जो json और रिपोर्ट फाइलों को रखता है
return fs.rm('.tmp/', { recursive: true });
},
/**
* सभी workers के बंद होने के बाद और प्रोसेस के बाहर निकलने से पहले एक्जिक्यूट होता है।
*/
onComplete: () => {
// सभी टेस्ट पूरे हो जाने पर रिपोर्ट जेनरेट करें
generate({
// आवश्यक
// यह भाग उसी पथ के समान होना चाहिए जहां आप JSON फाइलें स्टोर करते हैं
// default = '.tmp/json/'
jsonDir: '.tmp/json/',
reportPath: '.tmp/report/',
// अधिक विकल्पों के लिए देखें https://github.com/wswebcreation/multiple-cucumber-html-reporter#options
});
}
}
पुराने WebdriverIO वर्शन
यह मॉड्यूल केवल WebdriverIO V8+ के साथ काम कर सकता है!
V6 के लिए कृपया यहां दस्तावेज़ देखें और वर्शन 2.0.4 का उपयोग करें
V5 के लिए कृपया यहां दस्तावेज़ देखें और वर्शन 1.3.0 का उपयोग करें
यह मॉड्यूल wdio-multiple-cucumber-html-reporter का विकल्प नहीं है। वह मॉड्यूल केवल WEBDRIVERIO V4 का समर्थन करता है और एक रिपोर्ट भी बनाता है। यह मॉड्यूल केवल एक JSON बनाता है, कोई रिपोर्ट नहीं!!