டெல்டா ரிப்போர்ட்டர் ரிப்போர்ட்டர்
wdio-delta-reporter-service என்பது ஒரு மூன்றாம் தரப்பு தொகுப்பு, மேலும் தகவலுக்கு GitHub | npm ஐப் பார்க்கவும்
Delta reports உருவாக்க WebdriverIO ரிப்போர்ட்டர் செருகுநிரல்

நிறுவல்
எளிதான வழி @delta-reporter/wdio-delta-reporter-service ஐ உங்கள் package.json இல் devDependency ஆக வைத்திருப்பது.
{
"devDependencies": {
"@delta-reporter/wdio-delta-reporter-service": "^1.1.9",
}
}
நீங்கள் எளிதாக இதை செய்யலாம்:
npm i @delta-reporter/wdio-delta-reporter-service
கட்டமைப்பு
டெல்டா ரிப்போர்ட்டர் WebdriverIO செருகுநிரல் ஒரு WebdriverIO சேவை மற்றும் ரிப்போர்ட்டர் இடையே கலவையாக உள்ளது, எனவே இது கட்டமைப்பு கோப்பில் ஒரு ரிப்போர்ட்டர் மற்றும் சேவையாக அறிவிக்கப்பட வேண்டும்.
const DeltaReporter = require('@delta-reporter/wdio-delta-reporter-service/lib/src/reporter');
const DeltaService = require("@delta-reporter/wdio-delta-reporter-service");
let delta_config = {
enabled: true,
host: 'delta_host',
project: 'Project Name',
testType: 'Test Type'
};
exports.config = {
// ...
reporters: [
[DeltaReporter, delta_config]
],
// ...
services: [new DeltaService(delta_config)],
// ...
}
ஸ்கிரீன்ஷாட்கள் மற்றும் வீடியோக்களைச் சேர்க்கவும்
ஸ்கிரீன்ஷாட்கள் wdio கட்டமைப்பு கோப்பில் afterTest ஹூக்கில் sendFileToTest கட்டளையைப் பயன்படுத்தி அறிக்கைக்கு இணைக்கப்படலாம். அளவுருக்கள் type, file மற்றும் description:
type:imgஅல்லதுvideoஆக இருக்கலாம்file: பதிவேற்ற வேண்டிய கோப்பின் பாதைdescription: டெல்டா ரிப்போர்ட்டரில் மீடியா கொள்கலனில் காட்டப்படும் விருப்ப மதிப்பு
மேலே காட்டப்பட்டுள்ளபடி, இந்த செயல்பாட்டை அழைக்கும்போது, மற்றும் சோதனை தோல்வியடையும்போது, ஒரு ஸ்கிரீன்ஷாட் படம் டெல்டா அறிக்கைக்கு இணைக்கப்படும்.
afterTest(test) {
if (test.passed === false) {
const file_name = 'screenshot.png';
const outputFile = path.join(__dirname, file_name);
browser.saveScreenshot(outputFile);
browser.sendFileToTest('img', outputFile);
}
}
கீழே உள்ளது இந்த செருகுநிரலை Video Reporter உடன் இணைத்து பயன்படுத்த wdio கட்டமைப்பு கோப்பில் தேவையான அனைத்து பகுதிகளின் எடுத்துக்காட்டு, இதனால் டெல்டா ரிப்போர்ட்டர் தோல்வியடைந்த சோதனைகளின் ஸ்கிரீன்ஷாட்கள் மற்றும் வீடியோக்களைக் காட்டுகிறது:
var path = require('path');
const fs = require('fs');
const video = require('wdio-video-reporter');
const DeltaReporter = require('@delta-reporter/wdio-delta-reporter-service/lib/src/reporter');
const DeltaService = require("@delta-reporter/wdio-delta-reporter-service");
// ...
function getLatestFile({ directory, extension }, callback) {
fs.readdir(directory, (_, dirlist) => {
const latest = dirlist
.map(_path => ({ stat: fs.lstatSync(path.join(directory, _path)), dir: _path }))
.filter(_path => _path.stat.isFile())
.filter(_path => (extension ? _path.dir.endsWith(`.${extension}`) : 1))
.sort((a, b) => b.stat.mtime - a.stat.mtime)
.map(_path => _path.dir);
callback(directory + '/' + latest[0]);
});
}
let delta_config = {
enabled: true,
host: 'delta_host', // put your Delta Core url here
project: 'Project Name', // Name of your project
testType: 'Test Type' // eg., End to End, E2E, Frontend Acceptance Tests
};
// ...
exports.config = {
// ...
reporters: [
[DeltaReporter, delta_config]
],
// ...
services: [new DeltaService(delta_config)],
// ...
afterTest(test) {
if (test.passed === false) {
const file_name = 'screenshot.png';
const outputFile = path.join(__dirname, file_name);
browser.saveScreenshot(outputFile);
browser.sendFileToTest('img', outputFile);
getLatestFile({ directory: browser.options.outputDir + '/_results_', extension: 'mp4' }, (filename = null) => {
browser.sendFileToTest('video', filename, 'Video captured during test execution');
});
}
}
// ...
}
பயன்பாடு
ஒவ்வொரு சோதனை இயக்கத்திற்கும், டெல்டா செருகுநிரல் DELTA_LAUNCH_ID ஐக் கேட்டுக்கொண்டிருக்கிறது. இரண்டு முக்கிய சந்தர்ப்பங்கள் உள்ளன:
-
உள்ளூர் இயக்கம்: எதுவும் செய்ய தேவையில்லை, நீங்கள் உங்கள் wdio கட்டளையை இயக்கலாம் (
./node_modules/.bin/wdio ./wdio.conf.js) மற்றும் DELTA_LAUNCH_ID தானாகவே உங்களுக்காக உருவாக்கப்ப டும், எனவே உங்கள் சோதனை முடிவுகள் டெல்டா ரிப்போர்ட்டரில் நிகழ்நேரத்தில் தோன்றும். -
CI இயக்கம்: இது உங்கள் சோதனைகள் வேலையாக இருந்தால், DELTA_LAUNCH_ID ஐ ஒரு அளவுருவாக வரையறுக்க வேண்டும். பின்னர் உங்கள் நிலையின் உள்ளே
/api/v1/launchமுனைப்பை அழைப்பதன் மூலம் அதை துவக்க வேண்டும், பின்னர் உங்கள் சோதனைகளைDELTA_LAUNCH_ID=${DELTA_LAUNCH_ID}முன்கூட்டியே இணைத்து இயக்க வேண்டும். இந்த துவக்கம் ஒரு முறை மட்டுமே செய்யப்படுகிறது, எனவே நீங்கள் ஒரே கட்டுமானத்தில் பல சோதனை வகைகளை இயக்கும்போது (எ.கா. UI சோதனைகள், API சோதனைகள், யூனிட் சோதனைகள்), அந்த சோதனைகள் டெல்டா ரிப்போர்ட்டரில் ஒரு "Launch" இன் கீழ் சேகரிக்கப்படுகின்றன.
கீழே Jenkins வேலைக்கான கட்டமைப்பு கோப்புக்கான குறியீட்டின் எடுத்துக்காட்டு உள்ளது:
// ...
parameters {
string defaultValue: '', description: 'Launch ID sent by a pipeline, leave it blank', name: 'DELTA_LAUNCH_ID', trim: false
}
// ...
stage('Run WDIO tests') {
environment {
DELTA_LAUNCH_ID = ""
}
steps {
container('jenkins-node-worker') {
script {
try {
DELTA_LAUNCH_ID=sh(script: "curl -s --header \"Content-Type: application/json\" --request POST --data '{\"name\": \"${JOB_NAME} | ${BUILD_NUMBER} | Wdio Tests\", \"project\": \"Your project\"}' https://delta-core-url/api/v1/launch | python -c 'import sys, json; print(json.load(sys.stdin)[\"id\"])';", returnStdout: true)
} catch (Exception e) {
echo 'Couldn\'t start launch on Delta Reporter: ' + e
}
sh "DELTA_LAUNCH_ID=${DELTA_LAUNCH_ID} TEST_TYPE='Frontend Acceptance Tests' ./node_modules/.bin/wdio ./wdio.conf.js"
}
}
}
}