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

சோதனை தொகுப்பை ஒழுங்கமைத்தல்

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

இதைத் தடுக்க, நீங்கள் உங்கள் சோதனைகளை இணையாக இயக்க வேண்டும். WebdriverIO ஏற்கனவே ஒவ்வொரு spec (அல்லது Cucumber இல் feature file) ஒரு அமர்வில் இணையாக சோதிக்கிறது. பொதுவாக, ஒரு spec கோப்பில் ஒரு அம்சத்தை மட்டுமே சோதிக்க முயற்சிக்கவும். ஒரு கோப்பில் மிக அதிகமாகவோ அல்லது மிகக் குறைவாகவோ சோதனைகள் இல்லாமல் இருக்க முயற்சிக்கவும். (இருப்பினும், இங்கு எந்த தங்க விதியும் இல்லை.)

உங்கள் சோதனைகளில் பல spec கோப்புகள் இருக்கும்போது, நீங்கள் உங்கள் சோதனைகளை ஒரே நேரத்தில் இயக்கத் தொடங்க வேண்டும். அவ்வாறு செய்ய, உங்கள் கான்ஃபிக் கோப்பில் maxInstances பண்புகளை சரிசெய்யவும். WebdriverIO உங்கள் சோதனைகளை அதிகபட்ச ஒத்தியக்கத்துடன் இயக்க அனுமதிக்கிறது - அதாவது எத்தனை கோப்புகளும் சோதனைகளும் இருந்தாலும், அவை அனைத்தும் இணையாக இயங்கலாம். (இது இன்னும் உங்கள் கணினியின் CPU, ஒத்தியக்க கட்டுப்பாடுகள் போன்ற சில வரம்புகளுக்கு உட்பட்டது.)

உங்களிடம் 3 வெவ்வேறு திறன்கள் (Chrome, Firefox மற்றும் Safari) இருந்து, நீங்கள் maxInstances-ஐ 1-ஆக அமைத்திருந்தால், WDIO சோதனை இயக்கி 3 செயல்முறைகளை உருவாக்கும். எனவே, உங்களிடம் 10 spec கோப்புகள் இருந்து maxInstances-ஐ 10-ஆக அமைத்திருந்தால், அனைத்து spec கோப்புகளும் ஒரே நேரத்தில் சோதிக்கப்படும், மேலும் 30 செயல்முறைகள் உருவாக்கப்படும்.

அனைத்து உலாவிகளுக்கும் பண்பைக்குறிப்பிட maxInstances பண்பை உலகளாவிய அளவில் நீங்கள் வரையறுக்கலாம்.

நீங்கள் உங்கள் சொந்த WebDriver கட்டமைப்பை இயக்கினால், உங்களிடம் ஒரு உலாவியில் மற்றொன்றை விட அதிக திறன் இருக்கலாம். அந்த நிலையில், நீங்கள் உங்கள் திறன் பொருளில் 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 ஐ குழுப்படுத்துதல்

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

சோதனைகளை ஒரு நிகழ்வில் வரிசையாக இயக்க குழுப்படுத்த, அவற்றை specs வரையறையில் ஒரு வரிசையாக வரையறுக்கவும்.

    "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" தொகுப்பின் அனைத்து சோதனைகளும் ஒரே நிகழ்வில் இயக்கப்படும்.

ஒரு முறையைப் பயன்படுத்தி வரிசையாக சோதனைகளை இயக்கும்போது, அது spec கோப்புகளை அகரவரிசை வரிசையில் இயக்கும்

  "suites": {
end2end: ["./test/specs/test_*.js"]
},

இது மேலே உள்ள முறையுடன் பொருந்தும் கோப்புகளை பின்வரும் வரிசையில் இயக்கும்:

  [
"./test/specs/test_checkout.js",
"./test/specs/test_login.js",
"./test/specs/test_product_order.js"
]

தேர்ந்தெடுக்கப்பட்ட சோதனைகளை இயக்கவும்

சில சந்தர்ப்பங்களில், உங்கள் தொகுப்புகளில் ஒரு சோதனையை (அல்லது சோதனைகளின் துணை தொகுப்பை) மட்டுமே இயக்க விரும்பலாம்.

--spec அளவுருவுடன், எந்த தொகுப்பு (Mocha, Jasmine) அல்லது அம்சம் (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 க்கு கோப்பு பெயர்களை குழாய் செய்வது குறித்த அடுத்த பிரிவில் தகவலுக்கு), நீங்கள் (எடுத்துக்காட்டாக) உங்கள் spec கோப்பின் மேலே describe.only ஐப் பயன்படுத்தி அந்த suite மட்டுமே இயக்குமாறு Mocha வுக்கு அறிவுறுத்த முடியாது.

இந்த அம்சம் அதே இலக்கை அடைய உங்களுக்கு உதவும்.

--spec விருப்பம் வழங்கப்படும் போது, கான்ஃபிக் அல்லது திறன் நிலையின் specs அளவுருவால் வரையறுக்கப்பட்ட எந்த முறைகளையும் அது மேலெழுதும்.

தேர்ந்தெடுக்கப்பட்ட சோதனைகளை விலக்குதல்

தேவைப்படும் போது, ஓட்டத்திலிருந்து குறிப்பிட்ட spec கோப்புகளை நீங்கள் விலக்க வேண்டுமானால், --exclude அளவுருவைப் (Mocha, Jasmine) அல்லது அம்சத்தைப் (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

முழு தொகுப்பை விலக்குதல்

நீங்கள் ஒரு முழு தொகுப்பை பெயரால் விலக்கலாம். விலக்கல் மதிப்பு உங்கள் கான்ஃபிகில் வரையறுக்கப்பட்ட தொகுப்பு பெயருடன் பொருந்தினால் மற்றும் கோப்பு பாதை போல் தோன்றவில்லை என்றால், முழு தொகுப்பு தவிர்க்கப்படும்:

wdio wdio.conf.js --suite login --suite checkout --exclude login

இது checkout தொகுப்பு மட்டுமே இயங்கும், login தொகுப்பை முழுவதுமாக தவிர்க்கும்.

கலப்பு விலக்கல்கள் (தொகுப்புகள் மற்றும் spec முறைகள்) எதிர்பார்த்தபடி செயல்படுகின்றன:

wdio wdio.conf.js --suite login --exclude dialog --exclude signup

இந்த எடுத்துக்காட்டில், signup என்பது வரையறுக்கப்பட்ட தொகுப்பு பெயராக இருந்தால், அந்த தொகுப்பு விலக்கப்படும். dialog முறை அதன் கோப்பு பெயரில் "dialog" கொண்ட எந்த spec கோப்புகளையும் வடிகட்டும்.

குறிப்பு

நீங்கள் --suite X மற்றும் --exclude X ஆகிய இரண்டையும் குறிப்பிட்டால், விலக்கல் முன்னுரிமை பெறும் மற்றும் தொகுப்பு X இயங்காது.

--exclude விருப்பம் வழங்கப்படும்போது, அது கான்ஃபிக் அல்லது திறன் நிலையின் exclude அளவுருவால் வரையறுக்கப்பட்ட எந்த முறைகளையும் மேலெழுதும்.

தொகுப்புகளையும் சோதனை Specs ஐயும் இயக்கவும்

தனிப்பட்ட specs உடன் ஒரு முழு தொகுப்பை இயக்கவும்.

wdio wdio.conf.js --suite login --spec ./test/specs/signup.js

பல, குறிப்பிட்ட சோதனை Specs இயக்கவும்

தொடர்ச்சியான ஒருங்கிணைப்பு மற்றும் பிற சூழலில், பல specs தொகுப்புகளை குறிப்பிட வேண்டியது அவசியம். WebdriverIO வின் wdio கட்டளை வரி பயன்பாடு குழாய் மூலம் உள்ளிடப்பட்ட கோப்பு பெயர்களை (find, grep அல்லது மற்றவைகளிலிருந்து) ஏற்றுக்கொள்கிறது.

குழாய் மூலம் உள்ளிடப்பட்ட கோப்பு பெயர்கள் கட்டமைப்பின் spec பட்டியலில் குறிப்பிடப்பட்ட globs அல்லது கோப்பு பெயர்களின் பட்டியலை மேலெழுதும்.

grep -r -l --include "*.js" "myText" | wdio wdio.conf.js

குறிப்பு: இது ஒரு spec ஐ இயக்குவதற்கான --spec கொடியை மேலெழுதாது_._

MochaOpts உடன் குறிப்பிட்ட சோதனைகளை இயக்குதல்

நீங்கள் mocha குறிப்பிட்ட வாதத்தை wdio CLI க்கு அனுப்புவதன் மூலம் எந்த குறிப்பிட்ட suite|describe மற்றும்/அல்லது it|test ஐ இயக்க வேண்டும் என்பதை வடிகட்டலாம்: --mochaOpts.grep.

wdio wdio.conf.js --mochaOpts.grep myText
wdio wdio.conf.js --mochaOpts.grep "Text with spaces"

குறிப்பு: WDIO சோதனை இயக்கி நிகழ்வுகளை உருவாக்கிய பிறகு Mocha சோதனைகளை வடிகட்டும், எனவே பல நிகழ்வுகள் உருவாக்கப்படுவதை நீங்கள் காணலாம், ஆனால் உண்மையில் செயல்படுத்தப்படவில்லை.

MochaOpts உடன் குறிப்பிட்ட சோதனைகளை விலக்குதல்

நீங்கள் mocha குறிப்பிட்ட வாதத்தை wdio CLI க்கு அனுப்புவதன் மூலம் எந்த குறிப்பிட்ட suite|describe மற்றும்/அல்லது it|test ஐ விலக்க வேண்டும் என்பதை வடிகட்டலாம்: --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 ஆகும், அதாவது அது எப்போதும் அது கண்டுபிடிக்கக்கூடிய அனைத்து சோதனைகளையும் இயக்குகிறது.

bail கட்டமைப்பு குறித்த கூடுதல் தகவலுக்கு விருப்பங்கள் பக்கம் ஐப் பார்க்கவும்.

இயக்க விருப்பங்கள் படிநிலை

என்ன specs இயக்க வேண்டும் என்பதை அறிவிக்கும் போது, எந்த முறை முன்னுரிமை பெறும் என்பதை வரையறுக்கும் ஒரு குறிப்பிட்ட படிநிலை உள்ளது. தற்போது, இது அதிக முன்னுரிமையில் இருந்து குறைவான வரையில் எவ்வாறு செயல்படுகிறது:

CLI --spec வாதம் > திறன் specs முறை > கான்ஃபிக் specs முறை CLI --exclude வாதம் > கான்ஃபிக் exclude முறை > திறன் exclude முறை

கான்ஃபிக் அளவுரு மட்டும் கொடுக்கப்பட்டால், அது அனைத்து திறன்களுக்கும் பயன்படுத்தப்படும். இருப்பினும், திறன் நிலையில் முறையை வரையறுக்கும் போது, அது கான்ஃபிக் முறைக்குப் பதிலாகப் பயன்படுத்தப்படும். இறுதியாக, கட்டளை வரியில் வரையறுக்கப்பட்ட எந்த spec முறையும் பிற அனைத்து வழங்கப்பட்ட முறைகளையும் மேலெழுதும்.

திறன்-வரையறுக்கப்பட்ட spec முறைகளைப் பயன்படுத்துதல்

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

எடுத்துக்காட்டாக, உங்களிடம் Android சோதனைகளுக்கான ஒன்று மற்றும் iOS சோதனைகளுக்கான ஒன்று என இரண்டு அடைவுகள் இருந்ததாகக் கூறுவோம்.

உங்கள் கான்ஃபிக் கோப்பு குறிப்பிட்ட சாதனமற்ற சோதனைகளுக்கு இவ்வாறு முறையை வரையறுக்கலாம்:

{
specs: ['tests/general/**/*.js']
}

ஆனால் பின்னர், உங்கள் Android மற்றும் iOS சாதனங்களுக்கான வெவ்வேறு திறன்கள் இருக்கும், அங்கு முறைகள் இப்படி இருக்கலாம்:

{
"platformName": "Android",
"specs": [
"tests/android/**/*.js"
]
}
{
"platformName": "iOS",
"specs": [
"tests/ios/**/*.js"
]
}

உங்கள் கான்ஃபிக் கோப்பில் இந்த இரண்டு திறன்களும் தேவைப்பட்டால், Android சாதனம் "android" இடவெளியின் கீழ் உள்ள சோதனைகளை மட்டுமே இயக்கும், மேலும் iOS சோதனைகள் "ios" இடவெளியின் கீழ் உள்ள சோதனைகளை மட்டுமே இயக்கும்!

//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
}
]
}

Welcome! How can I help?

WebdriverIO AI Copilot