பகிரப்பட்ட சேமிப்பக சேவை
முக்கிய செயல்முறை மற்றும் வேலையாட்கள் (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"],
    }
}