சோதனை தொகுப்பை ஒழுங்கமைத்தல்
திட்டங்கள் வளர்ச்சியடையும்போது, தவிர்க்க முடியாத வகையில் அதிகமான ஒருங்கிணைப்பு சோதனைகள் சேர்க்கப்படுகின்றன. இது கட்டிய நேரத்தை அதிகரித்து, உற்பத்தித்திறனை குறைக்கிறது.
இதைத் தடுக்க, நீங்கள் உங்கள் சோதனைகளை இணையாக இயக்க வேண்டும். WebdriverIO ஏற்கனவே ஒவ்வொரு spec (அல்லது Cucumber இல் feature file) ஐ ஒரு தனி அமர்வில் இணையாக சோதிக்கிறது. பொதுவாக, ஒரு spec கோப்பில் ஒரு அம்சத்தை மட்டுமே சோதிக்க முயற்சிக்கவும். ஒரு கோப்பில் மிக அதிகமான அல்லது மிகக் குறைவான சோதனைகளைக் கொண்டிருக்க முயற்சிக்காதீர்கள். (இருப்பினும், இங்கு பொன்னான விதி எதுவும் இல்லை.)
உங்கள் சோதனைகளுக்கு பல spec கோப்புகள் இருக்கும்போது, உங்கள் சோதனைகளை ஒரே நேரத்தில் இயக்கத் தொடங்க வேண்டும். அவ்வாறு செய்ய, உங்கள் கட்டமைப்பு கோப்பில் maxInstances
பண்புக்கூறை சரிசெய்யவும். WebdriverIO உங்கள் சோதனைகளை அதிகபட்ச ஒத்திசைவுடன் இயக்க அனுமதிக்கிறது - அதாவது எத்தனை கோப்புகள் மற்றும் சோதனைகள் இருந்தாலும், அவை அனைத்தும் இணையாக இயங்கலாம். (இது இன்னும் உங்கள் கணினியின் CPU, ஒத்திசைவு கட்டுப்பாடுகள் போன்ற சில வரம்புகளுக்கு உட்பட்டது.)
உங்களிடம் 3 வெவ்வேறு capabilities (Chrome, Firefox, மற்றும் Safari) இருந்து,
maxInstances
ஐ1
என அமைத்திருந்தால், WDIO சோதனை இயக்கி 3 செயல்முறைகளைத் தொடங்கும். எனவே, உங்களிடம் 10 spec கோப்புகள் இருந்துmaxInstances
ஐ10
என அமைத்தால், அனைத்து spec கோப்புகளும் ஒரே நேரத்தில் சோதிக்கப்படும், மற்றும் 30 செயல்முறைகள் தொடங்கப்படும்.
அனைத்து உலாவிகளுக்கும் பண்புக்கூறை அமைக்க maxInstances
பண்புக்கூறை உலகளாவிய அளவில் வரையறுக்கலாம்.
உங்கள் சொந்த WebDriver கட்டமைப்பை இயக்கினால், (எடுத்துக்காட்டாக) ஒரு உலாவிக்கு மற்றொன்றை விட அதிக திறன் இருக்கலாம். அந்த சந்தர்ப்பத்தில், உங்கள் capability பொருளில் maxInstances
வரம்பைக் குறிப்பிடலாம்:
// wdio.conf.js
export const config = {
// ...
// set maxInstance for all browser
maxInstances: 10,
// ...
capabilities: [{
browserName: 'firefox'
}, {
// maxInstances can get overwritten per capability. So if you have an in-house WebDriver
// grid with only 5 firefox instance available you can make sure that not more than
// 5 instance gets started at a time.
browserName: 'chrome'
}],
// ...
}
முக்கிய கட்டமைப்பு கோப்பில் இருந்து மரபுரிமை
நீங்கள் உங்கள் சோதனைத் தொகுப்பை பல சூழல்களில் (எ.கா., dev மற்றும் integration) இயக்கினால், விஷயங்களை நிர்வகிக்க பல கட்டமைப்பு கோப்புகளைப் பயன்படுத்துவது உதவியாக இருக்கும்.
பக்க பொருள் கருத்து போலவே, முதலில் ஒரு முக்கிய கட்டமைப்பு கோப்பு தேவைப்படும். இது நீங்கள் சூழல்களில் பகிரும் அனைத்து கட்டமைப்புகளையும் கொண்டுள்ளது.
பின்னர் ஒவ்வொரு சூழலுக்கும் மற்றொரு கட்டமைப்பு கோப்பை உருவாக்கி, முக்கிய கட்டமைப்பை சூழல்-குறிப்பிட்ட கட்டமைப்புகளுடன் நிரப்பவும்:
// wdio.dev.config.js
import { deepmerge } from 'deepmerge-ts'
import wdioConf from './wdio.conf.js'
// have main config file as default but overwrite environment specific information
export const config = deepmerge(wdioConf.config, {
capabilities: [
// more caps defined here
// ...
],
// run tests on sauce instead locally
user: process.env.SAUCE_USERNAME,
key: process.env.SAUCE_ACCESS_KEY,
services: ['sauce']
}, { clone: false })
// add an additional reporter
config.reporters.push('allure')
சோதனை Specs களை தொகுப்புகளில் குழுமித்தல்
நீங்கள் சோதனை specs களை தொகுப்புகளில் குழுமித்து, அனைத்தையும் இயக்குவதற்குப் பதிலாக குறிப்பிட்ட தொகுப்புகளை இயக்கலாம்.
முதலில், உங்கள் WDIO கட்டமைப்பில் உங்கள் தொகுப்புகளை வரையறுக்கவும்:
// wdio.conf.js
export const config = {
// define all tests
specs: ['./test/specs/**/*.spec.js'],
// ...
// define specific suites
suites: {
login: [
'./test/specs/login.success.spec.js',
'./test/specs/login.failure.spec.js'
],
otherFeature: [
// ...
]
},
// ...
}
இப்போது, நீங்கள் ஒரு தொகுப்பை மட்டும் இயக்க விரும்பினால், தொகுப்பு பெயரை CLI வாதமாக அனுப்பலாம்:
wdio wdio.conf.js --suite login
அல்லது, ஒரே நேரத்தில் பல தொகுப்புகளை இயக்கலாம்:
wdio wdio.conf.js --suite login --suite otherFeature
சோதனை Specs களை தொடர்ச்சியாக இயக்க குழுமித்தல்
மேலே விவரிக்கப்பட்டுள்ளபடி, சோதனைகளை ஒரே நேரத்தில் இயக்குவதில் நன்மைகள் உள்ளன. இருப்பினும், சோதனைகளை ஒன்றாக குழுமித்து ஒரு தனிப்பட்ட நிகழ்வில் தொடர்ச்சியாக இயக்குவது பயனுள்ளதாக இருக்கும் சந்தர்ப்பங்கள் உள்ளன. இதற்கான எடுத்துக்காட்டுகள் பெரும்பாலும் பெரிய அமைப்பு செலவுகள் உள்ள இடங்களில் உள்ளன, எ.கா. குறியீட்டை மாற்றுதல் அல்லது cloud instances ஐ வழங்குதல், ஆனால் இந்த திறனில் பயனடையும் மேம்பட்ட பயன்பாட்டு மாதிரிகளும் உள்ளன.
சோதனைகளை ஒரு தனி நிகழ்வில் இயக்க குழுமிக்க, specs வரையறையில் அவற்றை ஒரு array ஆக வரையறுக்கவும்.
"specs": [
[
"./test/specs/test_login.js",
"./test/specs/test_product_order.js",
"./test/specs/test_checkout.js"
],
"./test/specs/test_b*.js",
],
மேலே உள்ள எடுத்துக்காட்டில், 'test_login.js', 'test_product_order.js' மற்றும் 'test_checkout.js' சோதனைகள் ஒரு தனி நிகழ்வில் தொடர்ச்சியாக இயக்கப்படும், மற்றும் "test_b*" சோதனைகள் ஒவ்வொன்றும் தனிப்பட்ட நிகழ்வுகளில் ஒரே நேரத்தில் இயக்கப்படும்.
தொகுப்புகளில் வரையறுக்கப்பட்ட specs களை குழுமிப்பதும் சாத்தியமாகும், எனவே இப்போது நீங்கள் தொகுப்புகளை இவ்வாறு வரையறுக்கலாம்:
"suites": {
end2end: [
[
"./test/specs/test_login.js",
"./test/specs/test_product_order.js",
"./test/specs/test_checkout.js"
]
],
allb: ["./test/specs/test_b*.js"]
},
இந்த வழக்கில் "end2end" தொகுப்பின் அனைத்து சோதனைகளும் ஒரு தனி நிகழ்வில் இயக்கப்படும்.
ஒரு pattern பயன்படுத்தி தொடர்ச்சியாக சோதனைகளை இயக்கும்போது, அது spec கோப்புகளை அகரவரிசை வரிசையில் இயக்கும்
"suites": {
end2end: ["./test/specs/test_*.js"]
},
இது மேலே உள்ள pattern உடன் பொருந்தும் கோப்புகளை பின்வரும் வரிசையில் இயக்கும்:
[
"./test/specs/test_checkout.js",
"./test/specs/test_login.js",
"./test/specs/test_product_order.js"
]
தேர்ந்தெடுக்கப்பட்ட சோதனைகளை இயக்குதல்
சில சந்தர்ப்பங்களில், உங்கள் தொகுப்புகளில் ஒரு தனி சோதனையை (அல்லது சோதனைகளின் துணைத்தொகுப்பை) மட்டும் செயல்படுத்த விரும்பலாம்.
--spec
அளவுருவுடன், எந்த suite (Mocha, Jasmine) அல்லது feature (Cucumber) இயக்கப்பட வேண்டும் என்பதைக் குறிப்பிடலாம். பாதை உங்கள் தற்போதைய பணி அடைவிலிருந்து தீர்மானிக்கப்படுகிறது.
எடுத்துக்காட்டாக, உங்கள் உள்நுழைவு சோதனையை மட்டும் இயக்க:
wdio wdio.conf.js --spec ./test/specs/e2e/login.js
அல்லது ஒரே நேரத்தில் பல specs களை இயக்க:
wdio wdio.conf.js --spec ./test/specs/signup.js --spec ./test/specs/forgot-password.js
--spec
மதிப்பு ஒரு குறிப்பிட்ட spec கோப்பைக் குறிக்கவில்லை என்றால், அது உங்கள் கட்டமைப்பில் வரையறுக்கப்பட்ட spec கோப்பு பெயர்களை வடிகட்ட பயன்படுத்தப்படுகிறது.
spec கோப்பு பெயர்களில் "dialog" என்ற வார்த்தை உள்ள அனைத்து specs களையும் இயக்க, நீங்கள் பயன்படுத்தலாம்:
wdio wdio.conf.js --spec dialog
ஒவ்வொரு சோதனை கோப்பும் ஒரு தனி சோதனை இயக்கி செயல்முறையில் இயங்குகிறது என்பதை கவனிக்கவும். நாங்கள் கோப்புகளை முன்கூட்டியே ஸ்கேன் செய்யாததால் (wdio
க்கு கோப்பு பெயர்களை pipe செய்வது பற்றிய தகவலுக்கு அடுத்த பிரிவைப் பார்க்கவும்), நீங்கள் (எடுத்துக்காட்டாக) உங்கள் spec கோப்பின் மேல் describe.only
ஐப் பயன்படுத்தி முடியாது, அந்த suite மட்டும் இயக்க Mocha க்கு அறிவுறுத்த.
இந்த அம்சம் அதே இலக்கை அடைய உங்களுக்கு உதவும்.
--spec
விருப்பம் வழங்கப்படும்போது, இது கட்டமைப்பு அல்லது capability நிலையின் specs
அளவுருவால் வரையறுக்கப்பட்ட எந்த pattern களையும் மேலெழுதும்.
தேர்ந்தெடுக்கப்பட்ட சோதனைகளை விலக்குதல்
தேவைப்படும்போது, ஒரு ஓட்டத்திலிருந்து குறிப்பிட்ட spec கோப்பு(களை) விலக்க வேண்டுமென்றால், நீங்கள் --exclude
அளவுருவைப் (Mocha, Jasmine) அல்லது feature (Cucumber) ஐப் பயன்படுத்தலாம்.
எடுத்துக்காட்டாக, உங்கள் சோதனை ஓட்டத்திலிருந்து உங்கள் உள்நுழைவு சோதனையை விலக்க:
wdio wdio.conf.js --exclude ./test/specs/e2e/login.js
அல்லது, பல spec கோப்புகளை விலக்கவும்:
wdio wdio.conf.js --exclude ./test/specs/signup.js --exclude ./test/specs/forgot-password.js
அல்லது, ஒரு தொகுப்பைப் பயன்படுத்தி வடிகட்டும்போது ஒரு spec கோப்பை விலக்கவும்:
wdio wdio.conf.js --suite login --exclude ./test/specs/e2e/login.js
--exclude
மதிப்பு ஒரு குறிப்பிட்ட spec கோப்பைக் குறிக்கவில்லை என்றால், அது உங்கள் கட்டமைப்பில் வரையறுக்கப்பட்ட spec கோப்பு பெயர்களை வடிகட்ட பயன்படுத்தப்படுகிறது.
spec கோப்பு பெயர்களில் "dialog" என்ற வார்த்தை உள்ள அனைத்து specs களையும் விலக்க, நீங்கள் பயன்படுத்தலாம்:
wdio wdio.conf.js --exclude dialog
--exclude
விருப்பம் வழங்கப்படும்போது, இது கட்டமைப்பு அல்லது capability நிலையின் exclude
அளவுருவால் வரையறுக்கப்பட்ட எந்த pattern களையும் மேலெழுதும்.
தொகுப்புகளையும் சோதனை Specs களையும் இயக்குதல்
தனிப்பட்ட specs களுடன் முழு தொகுப்பையும் இயக்கவும்.
wdio wdio.conf.js --suite login --spec ./test/specs/signup.js
பல, குறிப்பிட்ட சோதனை Specs களை இயக்குதல்
தொடர்ச்சியான ஒருங்கிணைப்பு மற்றும் வேறு சந்தர்ப்பங்களில், பல தொகுப்புகளின் specs களை குறிப்பிட வேண்டியது அவசியமாகிறது. WebdriverIO வின் wdio
கட்டளை வரி பயன்பாடு pipe செய்யப்பட்ட கோப்பு பெயர்களை (find
, grep
, அல்லது மற்றவற்றிலிருந்து) ஏற்றுக்கொள்கிறது.
Pipe செய்யப்பட்ட கோப்பு பெயர்கள் கட்டமைப்பின் spec
பட்டியலில் குறிப்பிடப்பட்ட globs அல்லது கோப்பு பெயர்களின் பட்டியலை மேலெழுதுகின்றன.
grep -r -l --include "*.js" "myText" | wdio wdio.conf.js
குறிப்பு: இது ஒரு தனி spec ஐ இயக்குவதற்கான --spec
கொடியை மேலெழுதாது.
MochaOpts உடன் குறிப்பிட்ட சோதனைகளை இயக்குதல்
mocha குறிப்பிட்ட வாதத்தை அனுப்புவதன் மூலம் எந்த குறிப்பிட்ட suite|describe
மற்றும்/அல்லது it|test
இயக்க வேண்டும் என்பதையும் வடிகட்டலாம்: wdio CLI க்கு --mochaOpts.grep
.
wdio wdio.conf.js --mochaOpts.grep myText
wdio wdio.conf.js --mochaOpts.grep "Text with spaces"
குறிப்பு: WDIO சோதனை இயக்கி நிகழ்வுகளை உருவாக்கிய பிறகு Mocha சோதனைகளை வடிகட்டும், எனவே பல நிகழ்வுகள் தொடங்கப்படுவதைக் காணலாம், ஆனால் உண்மையில் செயல்படுத்தப்படவில்லை.
MochaOpts உடன் குறிப்பிட்ட சோதனைகளை விலக்குதல்
mocha குறிப்பிட்ட வாதத்தை அனுப்புவதன் மூலம் எந்த குறிப்பிட்ட suite|describe
மற்றும்/அல்லது it|test
விலக்க வேண்டும் என்பதையும் வடிகட்டலாம்: wdio CLI க்கு --mochaOpts.invert
. --mochaOpts.invert
என்பது --mochaOpts.grep
இன் எதிர்மறையாக செயல்படுகிறது
wdio wdio.conf.js --mochaOpts.grep "string|regex" --mochaOpts.invert
wdio wdio.conf.js --spec ./test/specs/e2e/login.js --mochaOpts.grep "string|regex" --mochaOpts.invert
குறிப்பு: WDIO சோதனை இயக்கி நிகழ்வுகளை உருவாக்கிய பிறகு Mocha சோதனைகளை வடிகட்டும், எனவே பல நிகழ்வுகள் தொடங்கப்படுவதைக் காணலாம், ஆனால் உண்மையில் செயல்படுத்தப்படவில்லை.
தோல்வி பிறகு சோதனையை நிறுத்து
bail
விருப்பத்துடன், எந்த சோதனை தோல்வியுற்ற பிறகு சோதனையை நிறுத்த WebdriverIO க்கு சொல்லலாம்.
இது பெரிய சோதனை தொகுப்புகளுடன் பயனுள்ளதாக இருக்கும், ஏற்கனவே உங்கள் கட்டமைப்பு முறியும் என்பது தெரியும், ஆனால் முழு சோதனை ஓட்டத்தின் நீண்ட காத்திருப்பை தவிர்க்க விரும்புகிறீர்கள்.
bail
விருப்பம் ஒரு எண்ணை எதிர்பார்க்கிறது, இது WebDriver முழு சோதனை ஓட்டத்தை நிறுத்துவதற்கு முன் எத்தனை சோதனை தோல்விகள் ஏற்படலாம் என்பதைக் குறிப்பிடுகிறது. இயல்புநிலை 0
, அதாவது அது எப்போதும் அனைத்து சோதனை specs களையும் இயக்கும்.
bail கட்டமைப்பு பற்றிய கூடுதல் தகவலுக்கு Options Page ஐப் பார்க்கவும்.
இயக்க விருப்பங்கள் படிநிலை
எந்த specs இயக்க வேண்டும் என்பதை அறிவிக்கும்போது, எந்த pattern முன்னுரிமை பெறும் என்பதை வரையறுக்கும் ஒரு குறிப்பிட்ட படிநிலை உள்ளது. தற்போது, இது எப்படி செயல்படுகிறது, அதிக முன்னுரிமையிலிருந்து குறைந்த:
CLI
--spec
வாதம் > capabilityspecs
pattern > configspecs
pattern CLI--exclude
வாதம் > configexclude
pattern > capabilityexclude
pattern
config அளவுரு மட்டுமே கொடுக்கப்பட்டால், அது அனைத்து capabilities களுக்கும் பயன்படுத்தப்படும். இருப்பினும், capability நிலையில் pattern ஐ வரையறுக்கும்போது, அது config pattern க்கு பதிலாக பயன்படுத்தப்படும். இறுதியாக, கட்டளை வரியில் வரையறுக்கப்பட்ட எந்த spec pattern ஆனாலும் மற்ற அனைத்து patterns களையும் மேலெழுதும்.
capability-வரையறுக்கப்பட்ட spec patterns பயன்படுத்துதல்
capability நிலையில் ஒரு spec pattern ஐ வரையறுக்கும்போது, அது config நிலையில் வரையறுக்கப்பட்ட எந்த patterns களையும் மேலெழுதும். சாதன திறன்களை வேறுபடுத்தும் அடிப்படையில் சோதனைகளைப் பிரிக்க வேண்டியிருக்கும்போது இது பயனுள்ளதாக இருக்கும். இது போன்ற சந்தர்ப்பங்களில், config நிலையில் ஒரு பொதுவான spec pattern ஐப் பயன்படுத்துவது, மற்றும் capability நிலையில் அதிக குறிப்பிட்ட patterns ஐப் பயன்படுத்துவது மிகவும் பயனுள்ளதாக இருக்கும்.
எடுத்துக்காட்டாக, உங்களிடம் இரண்டு கோப்பகங்கள் இருந்தால், ஒன்று Android சோதனைகளுக்கும், மற்றொன்று iOS சோதனைகளுக்கும்.
உங்கள் config கோப்பு குறிப்பிட்ட சாதனம் இல்லாத சோதனைகளுக்கு pattern ஐ இவ்வாறு வரையறுக்கலாம்:
{
specs: ['tests/general/**/*.js']
}
ஆனால் பின்னர், உங்கள் Android மற்றும் iOS சாதனங்களுக்கு வெவ்வேறு capabilities இருக்கும், அங்கு patterns இவ்வாறு இருக்கலாம்:
{
"platformName": "Android",
"specs": [
"tests/android/**/*.js"
]
}
{
"platformName": "iOS",
"specs": [
"tests/ios/**/*.js"
]
}
உங்கள் config கோப்பில் இந்த இரண்டு capabilities களும் தேவைப்பட்டால், Android சாதனம் "android" namespace இன் கீழ் உள்ள சோதனைகளை மட்டுமே இயக்கும், மற்றும் iOS சோதனைகள் "ios" namespace இன் கீழ் உள்ள சோதனைகளை மட்டுமே இயக்கும்!
//wdio.conf.js
export const config = {
"specs": [
"tests/general/**/*.js"
],
"capabilities": [
{
platformName: "Android",
specs: ["tests/android/**/*.js"],
//...
},
{
platformName: "iOS",
specs: ["tests/ios/**/*.js"],
//...
},
{
platformName: "Chrome",
//config level specs will be used
}
]
}