இடைமறித்தல் சேவை
wdio-intercept-service என்பது ஒரு மூன்றாம் தரப்பு தொகுப்பு, மேலும் தகவலுக்கு GitHub | npm ஐப் பார்க்கவும்
🕸 webdriver.io இல் HTTP ajax அழைப்புகளைப் பிடித்து உறுதிப்படுத்தவும்
இது webdriver.io க்கான ஒரு செருகுநிரல். நீங்கள் இன்னும் அதைப் பற்றி அறியவில்லை என்றால், அதைப் பாருங்கள், அது மிகவும் சிறப்பானது.
செலீனியம் மற்றும் webdriver முதன்மையாக e2e மற்றும் UI சோதனைக்கு பயன்படுத்தப்பட்டாலும், உங்கள் கிளையன்ட் கோடால் செய்யப்படும் HTTP கோரிக்கைகளை மதிப்பிட விரும்பலாம் (எ.கா. அளவீடுகள் அல்லது கண்காணிப்பு அழைப்புகளில் உடனடி UI கருத்துக்களைப் பெறாதபோது). wdio-intercept-service மூலம் ஒரு பயனர் செயலால் (எ.கா. பொத்தான் அழுத்தம் போன்றவை) துவக்கப்பட் ட ajax HTTP அழைப்புகளை இடைமறித்து, கோரிக்கை மற்றும் அதற்கான பதில்களைப் பற்றிய உறுதிப்பாடுகளைப் பின்னர் செய்ய முடியும்.
ஒரு சிக்கல் உள்ளது: பக்கம் ஏற்றும்போது துவக்கப்படும் HTTP அழைப்புகளை (பெரும்பாலான SPA போல) இடைமறிக்க முடியாது, ஏனெனில் அது பக்கம் ஏற்றப்பட்ட பிறகு மட்டுமே செய்யக்கூடிய சில அமைப்பு வேலைகளைத் தேவைப்படுத்துகிறது (செலீனியத்தில் உள்ள வரம்புகள் காரணமாக). அதாவது ஒரு சோதனைக்குள் துவக்கப்பட்ட கோரிக்கைகளை மட்டுமே நீங்கள் பிடிக்க முடியும். நீங்கள் அதை ஏற்றுக்கொண்டால், இந்த செருகுநிரல் உங்களுக்கு ஏற்றதாக இருக்கலாம், எனவே தொடர்ந்து படியுங்கள்.
முன்நிபந்தனைகள்
- webdriver.io v5.x அல்லது அதற்கு பிற கு.
கவனம்! நீங்கள் இன்னும் webdriver.io v4 ஐப் பயன்படுத்துகிறீர்கள் என்றால், இந்த செருகுநிரலின் v2.x கிளையைப் பயன்படுத்தவும்!
நிறுவல்
npm install wdio-intercept-service -D
பயன்பாடு
WebDriver CLI உடன் பயன்பாடு
உங்கள் wdio.conf.js
இல் wdio-intercept-service சேர்ப்பது எளிதாக இருக்க வேண்டும்:
exports.config = {
// ...
services: ['intercept']
// ...
};
நீங் கள் தயாராகிவிட்டீர்கள்.
WebDriver Standalone உடன் பயன்பாடு
WebdriverIO Standalone ஐப் பயன்படுத்தும்போது, before
மற்றும் beforeTest
/ beforeScenario
செயல்பாடுகள் கைமுறையாக அழைக்கப்பட வேண்டும்.
import { remote } from 'webdriverio';
import WebdriverAjax from 'wdio-intercept-service'
const WDIO_OPTIONS = {
port: 9515,
path: '/',
capabilities: {
browserName: 'chrome'
},
}
let browser;
const interceptServiceLauncher = WebdriverAjax();
beforeAll(async () => {
browser = await remote(WDIO_OPTIONS)
interceptServiceLauncher.before(null, null, browser)
})
beforeEach(async () => {
interceptServiceLauncher.beforeTest()
})
afterAll(async () => {
await client.deleteSession()
});
describe('', async () => {
... // See example usage
});
முன்னெடுத்த பிறகு, சில தொடர்புடைய செயல்பாடுகள் உங்கள் உலாவி கட்டளை சங்கிலிக்கு சேர்க்கப்படுகின்றன (API ஐப் பார்க்கவும்).
விரைவான தொடக்கம்
பயன்பாட்டு எடுத்துக்காட்டு:
browser.url('http://foo.bar');
browser.setupInterceptor(); // capture ajax calls
browser.expectRequest('GET', '/api/foo', 200); // expect GET request to /api/foo with 200 statusCode
browser.expectRequest('POST', '/api/foo', 400); // expect POST request to /api/foo with 400 statusCode
browser.expectRequest('GET', /\/api\/foo/, 200); // can validate a URL with regex, too
browser.click('#button'); // button that initiates ajax request
browser.pause(1000); // maybe wait a bit until request is finished
browser.assertRequests(); // validate the requests
கோரிக்கைகளைப் பற்றிய விவரங்களைப் பெறுங்கள்:
browser.url('http://foo.bar')
browser.setupInterceptor();
browser.click('#button')
browser.pause(1000);
var request = browser.getRequest(0);
assert.equal(request.method, 'GET');
assert.equal(request.response.headers['content-length'], '42');