ரன்னர்
ஒரு ரன்னர் அதாவது இயக்கி WebdriverIO-இல் டெஸ்ட்கள் எப்படி மற்றும் எங்கே இயக்கப்படுகின்றன என்பதை ஒருங்கிணைக்கின்றது. WebdriverIO தற்போது இரண்டு வகையான ரன்னர்களை ஆதரிக்கிறது: உள்ளூர் ரன்னர் மற்றும் உலாவி ரன்னர்.
உள்ளூர் ரன்னர்
உள்ளூர் ரன்னர் உங்கள் ஃபிரேம்வொர்க்கை (எ.கா. Mocha, Jasmine அல்லது Cucumber) ஒரு வேலை செயல்முறைக்குள் துவக்கி, உங்கள் Node.js சூழலில் உள்ள அனைத்து சோதனை கோப்புகளையும் இயக்குகிறது. ஒவ்வொரு சோதனை கோப்பும் ஒரு தனி வேலையாளர் செயல்முறையில் ஒவ்வொரு திறன் அடிப்படையில் இயக்கப்படுகி றது, இது அதிகபட்ச ஒத்திசைவை அனுமதிக்கிறது. ஒவ்வொரு வேலையாளர் செயல்முறையும் ஒற்றை உலாவி நிகழ்வைப் பயன்படுத்துகிறது, இதனால் அது தனது சொந்த உலாவி அமர்வை இயக்குகிறது, இது அதிகபட்ச தனிமைப்படுத்தலை அனுமதிக்கிறது.
ஒவ்வொரு சோதனையும் அதன் சொந்த தனிமைப்படுத்தப்பட்ட செயல்முறையில் இயக்கப்படுவதால், சோதனை கோப்புகளுக்கு இடையே தரவைப் பகிர்வது சாத்தியமில்லை. இதைச் சுற்றி வேலை செய்ய இரண்டு வழிகள் உள்ளன:
- அனைத்து வேலையாளர்களிடையே தரவைப் பகிர்ந்து கொள்ள
@wdio/shared-store-serviceபயன்படுத்தவும் - ஸ்பெக் கோப்புகளை குழுவாக்கவும் (மேலும் படிக்க சோதனை தொகுப்பை ஒழுங்கமைத்தல்)
wdio.conf.js இல் வேறு எதுவும் வரையறுக்கப்படாவிட்டால், உள்ளூர் ரன்னர் WebdriverIO இல் இயல்புநி லை ரன்னராக இருக்கும்.
நிறுவல்
உள்ளூர் ரன்னரைப் பயன்படுத்த நீங்கள் இதை நிறுவலாம்:
npm install --save-dev @wdio/local-runner
அமைப்பு
உள்ளூர் ரன்னர் WebdriverIO இல் இயல்புநிலை ரன்னர் ஆகும், எனவே இதை உங்கள் wdio.conf.js இல் வரையறுக்க வேண்டிய அவசியமில்லை. நீங்கள் அதை தெளிவாக அமைக்க விரும்பினால், அதை பின்வருமாறு வரையறுக்கலாம்:
// wdio.conf.js
export const {
// ...
runner: 'local',
// ...
}
உலாவி ரன்னர்
உள்ளூர் ரன்னர் இலிருந்து மாறுபட்டு, உலாவி ரன்னர் ஃபிரேம்வொர்க்கை உலாவிக்குள் துவக்கி செயல்படுத்துகிறது. இது நீங்கள் பல சோதனை ஃபிரேம்வொர்க்குகளைப் போல JSDOM இல் அல்லாமல் உண்மையான உலாவியில் யூனிட் சோதனைகள் அல்லது காம்போனன்ட் சோதனைகளை இயக்க அனுமதிக்கிறது.
JSDOM சோதனை நோக்கங்களுக்காக பரவலாகப் பயன்படுத்தப்பட்டாலும், அது இறுதியில் ஒரு உண்மையான உலாவி அல்ல, அத்துடன் மொபைல் சூழல்களை அதனுடன் உருவகிக்க முடியாது. இந்த ரன்னருடன் WebdriverIO நீங்கள் உங்கள் சோதனைகளை உலாவியில் எளிதாக இயக்கவும், பக்கத்தில் காட்டப்படும் கூறுகளுடன் தொடர்புகொள்ள WebDriver கட்டளைகளைப் பயன்படுத்தவும் உங்களை அனுமதிக்கிறது.
JSDOM vs. WebdriverIO-இன் உலாவி ரன்னரில் சோதனைகளை இயக்குவதற்கான ஒரு கண்ணோட்டம்
| JSDOM | WebdriverIO உலாவி ரன்னர் | |
|---|---|---|
| 1. | உங்கள் சோதனைகளை வெப் தரநிலைகளின் மறு-செயல்படுத்தலைப் பயன்படுத்தி Node.js-க்குள் இயக்குகிறது, குறிப்பாக WHATWG DOM மற்றும் HTML தரநிலைகள் | உங்கள் சோதனையை ஒரு உண்மையான உலாவியில் செயல்படுத்துகிறது மற்றும் உங்கள் பயனர்கள் பயன்படுத்தும் சூழலில் குறியீட்டை இயக்குகிறது |
| 2. | காம்போனன்ட்களுடனான தொடர்புகளை JavaScript மூலம் மட்டுமே உருவகிக்க முடியும் | WebdriverIO API பயன்படுத்தி WebDriver நெறிமுறை மூலம் கூறுகளுடன் தொடர்புகொள்ளலாம் |
| 3. | Canvas ஆதரவிற்கு கூடுதல் சார்புகள் தேவைப்படுகிறது மற்றும் வரம்புகள் உள்ளன | உண்மையான Canvas API- ஐ அணுகலாம் |
| 4. | JSDOM சில எச்சரிக்கைகள் மற்றும் ஆதரிக்கப்படாத Web API-கள் கொண்டுள்ளது | அனைத்து Web API-களும் ஆதரிக்கப்படுகின்றன, ஏனெனில் சோதனைகள் உண்மையான உலாவியில் இயங்குகின்றன |
| 5. | குறுக்கு உலாவி பிழைகளைக் கண்டறிவது சாத்தியமற்றது | மொபைல் உலாவிகள் உள்ளிட்ட அனைத்து உலாவிகளுக்கும் ஆதரவு |
| 6. | கூறு போலி நிலைகளை சோதிக்க முடியாது | :hover அல்லது :active போன்ற போலி நிலைகளுக்கு ஆதரவு |
இந்த ரன்னர் உங்கள் சோதனை குறியீட்டைத் தொகுக்கவும், உலாவியில் ஏற்றவும் Vite பயன்படுத்துகிறது. இது பின்வரும் காம்போனன்ட் ஃபிரேம்வொர்க்குகளுக்கான முன்னமைவுகளுடன் வருகிறது:
- React
- Preact
- Vue.js
- Svelte
- SolidJS
- Stencil
ஒவ்வொரு சோதனை கோப்பு / சோதனை கோப்பு குழுவும ் ஒரு பக்கத்திற்குள் இயங்குகிறது, இதன் பொருள் ஒவ்வொரு சோதனைக்கும் இடையே பக்கம் மீண்டும் ஏற்றப்படுகிறது, இது சோதனைகளுக்கு இடையேயான தனிமையை உறுதி செய்கிறது.
நிறுவல்
உலாவி ரன்னரைப் பயன்படுத்த நீங்கள் இதை நிறுவலாம்:
npm install --save-dev @wdio/browser-runner
அமைப்பு
உலாவி ரன்னரைப் பயன்படுத்த, உங்கள் wdio.conf.js கோப்பில் runner பண்பை வரையறுக்க வேண்டும், எ.கா.:
// wdio.conf.js
export const {
// ...
runner: 'browser',
// ...
}
ரன்னர் விருப்பங்கள ்
உலாவி ரன்னர் பின்வரும் கட்டமைப்புகளை அனுமதிக்கிறது:
preset
நீங்கள் மேலே குறிப்பிடப்பட்டுள்ள ஃபிரேம்வொர்க்குகளில் ஒன்றைப் பயன்படுத்தி காம்போனன்ட்களை சோதித்தால், அனைத்தும் பெட்டிக்கு வெளியே கட்டமைக்கப்பட்டுள்ளதை உறுதிப்படுத்தும் ஒரு முன்னமைவை வரையறுக்கலாம். இந்த விருப்பத்தை viteConfig உடன் பயன்படுத்த முடியாது.
வகை: vue | svelte | solid | react | preact | stencil
உதாரணம்:
export const {
// ...
runner: ['browser', {
preset: 'svelte'
}],
// ...
}
viteConfig
உங்கள் சொந்த Vite கட்டமைப்பை வரையறுக்கவும். நீங்கள் தனிப்பயன் பொருளை உள்ளிடலாம் அல்லது நீங்கள் மேம்பாட்டிற்கு Vite.js பயன்படுத்தினால் ஏற்கனவே இருக்கும் vite.conf.ts கோப்பை இறக்குமதி செய்யலாம். WebdriverIO சோதனை சாதனத்தை அமைக்க தனிப்பயன் Vite கட்டமைப்புகளை வைத்திருக்கிறது என்பதை நினைவில் கொள்ளவும்.
வகை: string அல்லது UserConfig அல்லது (env: ConfigEnv) => UserConfig | Promise<UserConfig>
உதாரணம்:
import viteConfig from '../vite.config.ts'
export const {
// ...
runner: ['browser', { viteConfig }],
// அல்லது இவ்வாறு:
runner: ['browser', { viteConfig: '../vites.config.ts' }],
// அல்லது உங்கள் vite கட்டமைப்பில் நிறைய செருகுநிரல்கள் இருந்தால்
// ஒரு செயல்பாட்டைப் பயன ்படுத்தவும், மதிப்பு படிக்கும்போது மட்டுமே தீர்க்க விரும்புகிறீர்கள்
runner: ['browser', {
viteConfig: () => ({
// ...
})
}],
// ...
}
headless
true என அமைக்கப்பட்டால், சோதனைகளை ஹெட்லெஸ் முறையில் இயக்க ரன்னர் திறன்களை புதுப்பிக்கும். இயல்பாக இது CI சூழல்களில் இயக்கப்படுகிறது, அங்கு CI சூழல் மாறி '1' அல்லது 'true' என அமைக்கப்பட்டிருக்கும்.
வகை: boolean
இயல்புநிலை: false, CI சூழல் மாறி அமைக்கப்பட்டிருந்தால் true என அமைக்கப்படும்
rootDir
திட்ட ரூட் அடைவு.
வகை: string
இயல்புநிலை: process.cwd()
coverage
WebdriverIO istanbul மூலம் சோதனை காப்பீடு அறிக்கையை ஆதரிக்கிறது. மேலும் விவரங்களுக்கு காப்பீடு விருப்பங்கள் பார்க்கவும்.
வகை: object
இயல்புநிலை: undefined
காப்பீடு விருப்பங்கள்
பின்வரும் விருப்பங்கள் காப்பீடு அறிக்கையை உள்ளமைக்க அனுமதிக்கின்றன.
enabled
காப்பீடு சேகரிப்பை இயக்குகிறது.
வகை: boolean
இயல்புநிலை: false
include
வடிவக் கோலங்களாக காப்பீட்டில் சேர்க்கப்பட்ட கோப்புகளின் பட்டியல்.
வகை: string[]
இயல்புநிலை: [**]
exclude
வடிவக் கோலங்களாக காப்பீட்டில் விலக்கப்பட்ட கோப்புகளின் பட்டியல்.
வகை: string[]
இயல்புநிலை:
[
'coverage/**',
'dist/**',
'packages/*/test{,s}/**',
'**/*.d.ts',
'cypress/**',
'test{,s}/**',
'test{,-*}.{js,cjs,mjs,ts,tsx,jsx}',
'**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx}',
'**/*{.,-}spec.{js,cjs,mjs,ts,tsx,jsx}',
'**/__tests__/**',
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
'**/.{eslint,mocha,prettier}rc.{js,cjs,yml}',
]