முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்

ஜூனிட் அறிக்கையிடுபவர்

A WebdriverIO reporter that creates Jenkins compatible XML based JUnit reports

நிறுவல்​

எளிதான வழி @wdio/junit-reporter ஐ உங்கள் package.json இல் devDependency ஆக வைத்திருப்பது:

npm install @wdio/junit-reporter --save-dev

WebdriverIO எவ்வாறு நிறுவுவது என்பதற்கான வழிமுறைகள் இங்கே காணலாம்.

வெளியீடு​

இந்த அறிக்கையாளர் ஒவ்வொரு ரன்னருக்கும் ஒரு அறிக்கையை வெளியிடும், எனவே நீங்கள் ஒவ்வொரு spec கோப்புக்கும் ஒரு xml அறிக்கையைப் பெறுவீர்கள். கீழே spec கோப்பில் வெவ்வேறு சூழ்நிலைகளில் XML வெளியீட்டின் எடுத்துக்காட்டுகள் உள்ளன.

ஒற்றை describe பிளாக்​

describe('a test suite', () => {
it('a test case', function () {
// do something
// assert something
});
});

இவ்வாறு மாறுகிறது

<testsuites>
<testsuite name="a test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
<testcase classname="chrome.a_test_case" name="a_test_suite_a_test_case" time="11.706"/>
</testsuite>
</testsuites>

உட்புகுத்தப்பட்ட describe பிளாக்​

describe('a test suite', () => {
describe('a nested test suite', function() {
it('a test case', function () {
// do something
// assert something
});
});
});

இவ்வாறு மாறுகிறது

<testsuites>
<testsuite name="a test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
</testsuite>
<testsuite name="a nested test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a nested test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
<testcase classname="chrome.a_test_case" name="a nested test suite a test case" time="11.706"/>
</testsuite>
</testsuites>

பல describe பிளாக்​

describe('a test suite', () => {
it('a test case', function () {
// do something
// assert something
});
});
describe('a second test suite', () => {
it('a second test case', function () {
// do something
// assert something
});
});

இவ்வாறு மாறுகிறது

<testsuites>
<testsuite name="a test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
<testcase classname="chrome.a_test_case" name="a nested test suite a test case" time="11.706"/>
</properties>
</testsuite>
<testsuite name="a second test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a second test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
<testcase classname="chrome.a_second_test_case" name="a_second_test_suite_a_second_test_case" time="11.706"/>
</testsuite>
</testsuites>

தோல்விகள் மற்றும் பிழைகள்​

அனைத்து சோதனை வழக்கு தோல்விகளும் JUnit சோதனை வழக்கு பிழைகளாக வரைபடமாக்கப்படுகின்றன. உறுதிப்படுத்தல் தோல்வி அல்லது பிழை காரணமாக தோல்வியுற்ற சோதனை வழக்கு இப்படி இருக்கும்:

<testcase classname="chrome.a_test_case" name="a_test_suite_a_test_case" time="0.372">
<failure message="Error: some error"/>
<system-err>
<![CDATA[
Error: some assertion failure
at UserContext.<anonymous> (C:\repo\webdriver-example\test\specs/a_test_suite.spec.js:22:17)
]]>
</system-err>
</testcase>

கட்டமைப்பு​

கீழே உள்ள குறியீடு இயல்புநிலை wdio சோதனை இயக்கி கட்டமைப்பைக் காட்டுகிறது. வெறுமனே 'junit' ஐ அறிக்கையாளராக அணிக்கு சேர்க்கவும். சோதனையின் போது சில வெளியீட்டைப் பெற நீங்கள் WDIO Dot Reporter மற்றும் WDIO JUnit Reporter ஐ ஒரே நேரத்தில் இயக்கலாம்:

// wdio.conf.js
module.exports = {
// ...
reporters: [
'dot',
['junit', {
outputDir: './',
outputFileFormat: function(options) { // optional
return `results-${options.cid}.${options.capabilities}.xml`
}
}]
],
// ...
};

பின்வரும் விருப்பங்கள் ஆதரிக்கப்படுகின்றன:

outputDir​

உங்கள் xml கோப்புகள் சேமிக்கப்பட வேண்டிய கோப்பகத்தை வரையறுக்கவும்.

வகை: String
தேவையானது

outputFileFormat​

சோதனைச் செயல்படுத்தப்பட்ட பின்னர் உருவாக்கப்பட்ட xml கோப்புகளை வரையறுக்கவும்.

வகை: Object
இயல்புநிலை: function (opts) { return `wdio-${this.cid}-${name}-reporter.log` }

outputFileFormat: function (options) {
return 'mycustomfilename.xml';
}

குறிப்பு: options.capabilities என்பது அந்த ரன்னருக்கான உங்கள் திறன்கள் பொருள், எனவே ${options.capabilities} என்பதை உங்கள் சரத்தில் குறிப்பிடுவது [Object object] ஐத் திருப்பித் தரும். உங்கள் கோப்புப் பெயரில் நீங்கள் விரும்பும் திறன்களின் எந்த பண்புகளைக் குறிப்பிட வேண்டும்.

suiteNameFormat​

சோதனைத் தொகுப்பு பெயரை வடிவமைப்பதற்கான தனிப்பயன் ரெகெக்ஸை வழங்கும் திறன் (எ.கா. வெளியீட்டு xml இல்).

வகை: Regex,
இயல்புநிலை: /[^a-zA-Z0-9@]+/

// wdio.conf.js
module.exports = {
// ...
reporters: [
'dot',
['junit', {
outputDir: './',
suiteNameFormat: /[^a-zA-Z0-9@]+/
outputFileFormat: function(options) { // optional
return `results-${options.cid}.${options.capabilities}.xml`
}
}]
],
// ...
};

addFileAttribute​

ஒவ்வொரு சோதனை வழக்கிற்கும் ஒரு கோப்பு பண்புக்கூறைச் சேர்க்கிறது. இந்த கட்டமைப்பு முதன்மையாக CircleCI க்கானது. இந்த அமைப்பு சிறந்த விவரங்களை வழங்குகிறது ஆனால் மற்ற CI தளங்களில் சிதைவதற்கு வாய்ப்புள்ளது.

வகை: Boolean,
இயல்புநிலை: false

packageName​

'packageName' ஐ அமைப்பதன் மூலம் தொகுப்புகளை கூடுதல் நிலையில் பிரிக்கலாம். எடுத்துக்காட்டாக, வித்தியாசமான சுற்றுச்சூழல் மாறி அமைப்புடன் சோதனைத் தொகுப்பில் திரும்பத் திரும்ப பயன்படுத்த விரும்பினால்:

வகை: String
எடுத்துக்காட்டு:

// wdio.conf.js
module.exports = {
// ...
reporters: [
'dot',
['junit', {
outputDir: './',
packageName: process.env.USER_ROLE // chrome.41 - administrator
}]
]
// ...
};

errorOptions​

xml க்குள் பிழை அறிவிப்புகளின் பல்வேறு கலவைகளை அமைக்க அனுமதிக்கிறது.
expect(true).toBe(false, 'my custom message') போன்ற ஜாஸ்மின் சோதனையைக் கொடுத்தால், இந்த சோதனைப் பிழையைப் பெறுவீர்கள்:

{
matcherName: 'toBe',
message: 'Expected true to be false, \'my custom message\'.',
stack: 'Error: Expected true to be false, \'my custom message\'.\n at UserContext.it (/home/mcelotti/Workspace/WebstormProjects/forcebeatwio/test/marco/prova1.spec.js:3:22)',
passed: false,
expected: [ false, 'my custom message' ],
actual: true
}

எனவே நீங்கள் எந்த விசை எங்கே பயன்படுத்தப்படும் என்பதைத் தேர்வு செய்யலாம், கீழே உள்ள எடுத்துக்காட்டைப் பார்க்கவும்.

வகை: Object,
இயல்புநிலை: errorOptions: { error: "message" }
எடுத்துக்காட்டு:

// wdio.conf.js
module.exports = {
// ...
reporters: [
'dot',
['junit', {
outputDir: './',
errorOptions: {
error: 'message',
failure: 'message',
stacktrace: 'stack'
}
}]
],
// ...
};

addWorkerLogs​

விருப்ப அளவுரு, சோதனையில் இருந்து கன்சோல் பதிவுகளை அறிக்கையிடுபவரில் இணைக்க இந்த அளவுருவை true என அமைக்கவும்.

வகை: Boolean
இயல்புநிலை: false
எடுத்துக்காட்டு:

// wdio.conf.js
module.exports = {
// ...
reporters: [
'dot',
['junit', {
outputDir: './',
addWorkerLogs: true
}]
],
// ...
};

சோதனை வழக்குகளுக்கு தனிப்பயன் பண்புகளைச் சேர்த்தல்​

இந்த plugin ஒரு செயல்பாட்டை வழங்குகிறது addProperty(name, value). தற்போது இயங்கும் சோதனை படிக்கு கூடுதல் junit சோதனை வழக்கு பண்புகளைச் சேர்க்க இந்த செயல்பாட்டைப் பயன்படுத்தலாம். இந்த பண்புகள் விளைவு xml இல் <property name="${name}" value="${value}" /> என அறிக்கையிடப்படும்.

இதற்கான வழக்கமான பயன்பாடு என்னவென்றால் ஒரு சிக்கலுக்கோ அல்லது சோதனை வழக்குக்கோ ஒரு இணைப்பைச் சேர்ப்பதாகும்.

பயன்பாட்டு எடுத்துக்காட்டு​

Mocha க்கு ஒரு எடுத்துக்காட்டு:

import { addProperty } from '@wdio/junit-reporter'

describe('Suite', () => {
it('Case', () => {
addProperty('test_case', 'TC-1234')
})
})

Jenkins அமைப்பு​

இறுதியாக, உங்கள் CI ஜாப்பிற்கு (எ.கா. Jenkins) xml கோப்பை எங்கே காணலாம் என்பதை நீங்கள் கூற வேண்டும். அதைச் செய்ய, சோதனை ஓடிய பிறகு செயல்படுத்தப்படும் உங்கள் ஜாப்பிற்கு ஒரு post-build செயலை சேர்த்து, Jenkins (அல்லது உங்கள் விரும்பிய CI அமைப்பு) ஐ உங்கள் XML சோதனை முடிவுகளுக்கு சுட்டிக்காட்டவும்:

Point Jenkins to XML files

உங்கள் CI அமைப்பில் அத்தகைய post-build படி இல்லையெனில், இணையத்தில் எங்காவது அதற்கான plugin இருக்கலாம்.


WebdriverIO பற்றிய கூடுதல் தகவலுக்கு முகப்பு பக்கத்தைப் பார்க்கவும்.

Welcome! How can I help?

WebdriverIO AI Copilot