பிடிவாதமான சோதனைகளை மறுசோதனை செய்தல்
WebdriverIO டெஸ்ட்ரன்னர் மூலம் சில குறிப்பிட்ட சோதனைகளை மீண்டும் இயக்கலாம், குறிப்பாக பிடிவாதமான நெட்வொர்க் அல்லது ரேஸ் நிலைகள் போன்ற காரணங்களால் அவை நிலையற்றதாக மாறினால். (இருப்பினும், சோதனைகள் நிலையற்றதாக மாறும்போது வெறுமனே மறுசோதனை விகிதத்தை அதிகரிப்பது பரிந்துரைக்கப்படவில்லை!)
Mocha இல் சோதனை தொகுப்புகளை மறுசோதனை செய்தல்
Mocha இன் பதிப்பு 3 முதல ், முழு சோதனை தொகுப்புகளை மீண்டும் இயக்கலாம் (ஒரு describe பிளாக்கிற்குள் உள்ள எல்லாம்). Mocha பயன்படுத்துகிறீர்கள் எனில், குறிப்பிட்ட சோதனை பிளாக்குகளை மட்டுமே மீண்டும் இயக்க அனுமதிக்கும் WebdriverIO செயல்முறைக்கு பதிலாக இந்த மறுசோதனை நுட்பத்தை முன்னுரிமைப்படுத்த வேண்டும் (ஒரு it பிளாக்கிற்குள் உள்ள எல்லாம்). this.retries() முறையைப் பயன்படுத்த, சோதனை தொகுப்பு பிளாக் describe ஆனது Mocha ஆவணங்களில் விவரிக்கப்பட்டுள்ளபடி, arrow function () => {} க்கு பதிலாக unbound function function(){} ஐப் பயன்படுத்த வேண்டும். Mocha பயன்படுத்தி, உங்கள் wdio.conf.js இல் mochaOpts.retries பயன்படுத்தி அனைத்து specs க்கும் மறுசோதனை எண்ணிக்கையை அமைக்கலாம்.
இதோ ஒரு உதாரணம்:
describe('retries', function () {
// Retry all tests in this suite up to 4 times
this.retries(4)
beforeEach(async () => {
await browser.url('http://www.yahoo.com')
})
it('should succeed on the 3rd try', async function () {
// Specify this test to only retry up to 2 times
this.retries(2)
console.log('run')
await expect($('.foo')).toBeDisplayed()
})
})
Jasmine அல்லது Mocha இல் தனிப்பட்ட சோதனைகளை மறுசோதனை செய்தல்
ஒரு குறிப்பிட்ட சோதனை பிளாக்கை மீண்டும் இயக்க, சோதனை பிளாக் செயல்பாட்டிற்குப் பிறகு கடைசி அளவுருவாக மறுசோதனைகளின் எண்ணிக்கையைப் பயன்படுத்தலாம்:
- Mocha
- Jasmine
describe('my flaky app', () => {
/**
* spec that runs max 4 times (1 actual run + 3 reruns)
*/
it('should rerun a test at least 3 times', async function () {
console.log(this.wdioRetries) // returns number of retries
// ...
}, 3)
})
இது hooks க்கும் செயல்படுகிறது:
describe('my flaky app', () => {
/**
* hook that runs max 2 times (1 actual run + 1 rerun)
*/
beforeEach(async () => {
// ...
}, 1)
// ...
})
describe('my flaky app', () => {
/**
* spec that runs max 4 times (1 actual run + 3 reruns)
*/
it('should rerun a test at least 3 times', async function () {
console.log(this.wdioRetries) // returns number of retries
// ...
}, jasmine.DEFAULT_TIMEOUT_INTERVAL, 3)
})
இது hooks க்கும் செயல்படுகிறது:
describe('my flaky app', () => {
/**
* hook that runs max 2 times (1 actual run + 1 rerun)
*/
beforeEach(async () => {
// ...
}, jasmine.DEFAULT_TIMEOUT_INTERVAL, 1)
// ...
})
நீங்கள் Jasmine ஐப் பயன்படுத்தினால், இரண்டாவது அளவுரு timeout க்காக ஒதுக்கப்பட்டுள்ளது. மறுசோதனை அளவுருவைப் பயன்படுத்த, timeout ஐ அதன் இயல்புநிலை மதிப்பு jasmine.DEFAULT_TIMEOUT_INTERVAL க்கு அமைத்து, பின்னர் உங்கள் மறுசோதனை எண்ணிக்கையைப் பயன்படுத்த வேண்டும்.
இந்த மறுசோதனை நுட்பம் தனிப்பட்ட hooks அல்லது சோதனை பிளாக்குகளை மட்டுமே மீண்டும் இயக்க அனுமதிக்கிறது. உங்கள் சோதனையுடன் உங்கள் பயன்பாட்டை அமைக்க ஒரு hook இருந்தால், இந்த hook இயக்கப்படவில்லை. Mocha வழங்குகிறது இந்த நடத்தையை வழங்கும் native சோதனை மறுசோதனைகள், ஆனால் Jasmine வழங்கவில்லை. afterTest hook இல் செயல்படுத்தப்பட்ட மறுசோதனைகளின் எண்ணிக்கையை அணுகலாம்.
Cucumber இல் மறுசோதனை செய்தல்
Cucumber இல் முழு சோதனை தொகுப்புகளை மறுசோதனை செய்தல்
Cucumber >=6 க்கு, நீங்கள் தோல்வியடையும் அனைத்து அல்லது சில scenarios களை வெற்றி பெறும் வரை கூடுதல் மறுசோதனைகள் பெற retry கட்டமைப்பு விருப்பத்தை retryTagFilter விருப்ப அளவுருவுடன் வழங்கலாம். இந்த அம்சம் செயல்பட, நீங்கள் scenarioLevelReporter ஐ true க்கு அமைக்க வேண்டும்.
Cucumber இல் Step Definitions மறுசோதனை செய்தல்
ஒரு குறிப்பிட்ட step definition க்கான மறுசோதனை விகிதத்தை வரையறுக்க, அதற்கு retry விருப்பத்தைப் பயன்படுத்தவும், போன்ற:
export default function () {
/**
* step definition that runs max 3 times (1 actual run + 2 reruns)
*/
this.Given(/^some step definition$/, { wrapperOptions: { retry: 2 } }, async () => {
// ...
})
// ...
})
மறுசோதனைகளை உங்கள் step definitions கோப்பில் மட்டுமே வரையறுக்க முடியும், உங்கள் feature கோப்பில் இல்லை.