பகிரப்பட்ட சேமிப்பக சேவை
முக்கிய செயல்முறை மற்றும் வேலையாட்கள் (specs) இடையே தரவை பரிமாறிக் கொள்ளுங்கள்.
நிறுவல்
@wdio/shared-store-service
ஐ உங்கள் package.json
இல் dev dependency ஆக வைத்திருப்பது எளிதான வழி:
npm install @wdio/shared-store-service --save-dev
WebdriverIO
எவ்வாறு நிறுவுவது என்பதற்கான வழிமுறைகளை இங்கே காணலாம்.
பயன்பாடு
key (string) மூலம் சேமிப்பகத்திற்கு/இருந்து மதிப்பை (ஒரு சாதாரண பொருள்) பெற/அமைக்க. key எந்த தன்னிச்சையான சரமாகவும் இருக்கலாம், ஆனால் *
ஒதுக்கப்பட்டுள்ளது, ஏனெனில் இது முழு சேமிப்பகத்தையும் பெற அனுமதிக்கிறது.
மதிப்புகளை அமைத்தல்
சேமிப்பகத்தில் மதிப்புகளை அமைக்க அழைக்கவும்:
await browser.sharedStore.set('key', 'foobar123')
மதிப்புகளைப் பெறுதல்
சேமிப்பகத்திலிருந்து மதிப்புகளைப் பெற அழைக்கவும்:
const value = await browser.sharedStore.get('key')
console.log(value) // returns "foobar123"
நீங்கள் *
key ஐப் பயன்படுத்தி அனைத்து key மதிப்புகளையும் பெறலாம்:
const store = await browser.sharedStore.get('*')
console.log(value) // returns `{ key: "foobar" }`
WDIO Hooks இல் சேமிப்பகத்தை அணுகுதல்
நீங்கள் setValue
மற்றும் getValue
async handlers ஐ நேரடியாக அணுகலாம்.
நீங்கள் await
சொற்றொடருடன் அவற்றை சரியாக அழைப்பதை உறுதிசெய்து கொள்ளுங்கள்.
// wdio.conf.js
import { setValue, getValue } from '@wdio/shared-store-service'
export const config = {
// ...
onPrepare: [async function (config, capabilities) {
await setValue('foo', 'bar')
}],
// ...
after: async () => {
const value = await getValue('foo')
// ...
}
முக்கியம்! ஒவ்வொரு spec கோப்பும் மற்ற specs இலிருந்து தனித்தனியாகவும் தனிமையாகவும் இருக்க வேண்டும். சேவையின் யோசனை மிகவும் குறிப்பிட்ட சூழல் அமைப்பு சிக்கல்களைக் கையாள்வதாகும். சோதனை நிறைவேற்ற தரவைப் பகிர்வதைத் தவிர்க்கவும்!
வள குழுக்கள்
ஒவ்வொரு வேலையாளருக்கும் ஒதுக்கப்பட வேண்டிய வளங்களுக்காக வ ேலையாள் நூல்கள் போட்டியிடுகின்றன என்றால், நீங்கள் Resource Pool API ஐப் பயன்படுத்தலாம்:
// wdio.conf.js
import { setResourcePool, getValueFromPool, addValueToPool } from '@wdio/shared-store-service'
export const config = {
maxInstances: 2,
// ...
onPrepare: async function (config, capabilities) {
await setResourcePool('availableUrls', ['url01.com', 'url02.com'])
},
// ...
beforeSession: async (conf) => {
conf.baseUrl = await getValueFromPool('availableUrls');
},
// ...
afterSession: async (conf) => {
// worker returns the used resource for next workers to use
await addValueToPool('availableUrls', conf.baseUrl);
}
இந்த எடுத்துக்காட்டு இரண்டு வேலையாட்களும் ஒரே baseUrl
ஐப் பயன்படுத்துவதில்லை என்பதை உறுதிசெய்கிறது. தனித்துவமான url அது விடுவிக்கப்படும் வரை ஒரு வேலையாளருக்கு மட்டுமே ஒதுக்கப்படுகிறது.
கட்டமைப்பு
சேவைகள் பட்டியலில் shared-store
ஐச் சேர்க்கவும், உங்கள் சோதனையில் browser
scope இல் sharedStore
பொருள் உங்களுக்கு அணுகக்கூடியதாக இருக்கும்.
// wdio.conf.js
export const config = {
// ...
services: ['shared-store'],
// ...
};
நீங்கள் typescript ஐப் பயன்படுத்துகிறீர்கள் என்றால், உங்கள் compilerOptions.types
இல் @wdio/shared-store-service
ஐச் சேர்ப்பதை உறுதிசெய்யவும்:
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/shared-store-service"],
}
}