How to use bodyRequest method in wpt

Best JavaScript code snippet using wpt

drivers_and_vehicles_BookVehicleIncpectionAdapter-impl.js

Source:drivers_and_vehicles_BookVehicleIncpectionAdapter-impl.js Github

copy

Full Screen

1/*2 * Licensed Materials - Property of IBM3 * 5725-I43 (C) Copyright IBM Corp. 2011, 2013. All Rights Reserved.4 * US Government Users Restricted Rights - Use, duplication or5 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.6 */7/**8 * MFP.Server.invokeHttp(parameters) accepts the following json object as an argument:9 * 10 * {11 * // Mandatory 12 * method : 'get' , 'post', 'delete' , 'put' or 'head' 13 * path: value,14 *15 * // Optional16 * returnedContentType: any known mime-type or one of "json", "css", "csv", "plain", "xml", "html"17 * returnedContentEncoding : 'encoding',18 * parameters: {name1: value1, ... },19 * headers: {name1: value1, ... },20 * cookies: {name1: value1, ... },21 * body: {22 * contentType: 'text/xml; charset=utf-8' or similar value,23 * content: stringValue24 * },25 * transformation: {26 * type: 'default', or 'xslFile',27 * xslFile: fileName28 * }29 * }30 */31var username_cis = "Mobstguser";32var password_cis = "m792!du)+1g";33// get all services34function getGlobalServices(vehicleType, isEncryptResponse, encryptionPassword){35 var bodyRequest ='<sch:getGlobalServicesRequest>';36 if (vehicleType != undefined && vehicleType != null) {37 bodyRequest += '<sch:vclId>' + vehicleType + '</sch:vclId>';38 }39 bodyRequest += '</sch:getGlobalServicesRequest>';40 var request = getRequestString(bodyRequest);41 var requestObj = buildBody([ request ], true);42 MFP.Logger.warn("getGlobalServices request | " + requestObj);43 var result = invokeWebServiceString(requestObj, isEncryptResponse,44 encryptionPassword);45 MFP.Logger.warn("getGlobalServices result | " + result);46 return result ;47 48}49//get all centers50function getAvailableAppointmentCenters (isEncryptResponse, encryptionPassword){51 var bodyRequest ="<sch:getAvailableAppointmentCentersRequest/>";52 var request = getRequestString(bodyRequest);53 var requestObj = buildBody([ request ], true);54 MFP.Logger.warn("getAvailableAppointmentCenters request | " + requestObj);55 var result = invokeWebServiceString(requestObj, isEncryptResponse,56 encryptionPassword);57 MFP.Logger.warn("getAvailableAppointmentCenters result | " + result);58 return result;59}60//get all centers on specific date61function getAvailableAppointmentCentersByDate (date,isEncryptResponse, encryptionPassword){62 var bodyRequest ="<sch:getAvailableAppointmentCentersRequest>";63 bodyRequest +="<sch:date>" + date + "</sch:date>";64 bodyRequest +="</sch:getAvailableAppointmentCentersRequest>";65 var request = getRequestString(bodyRequest);66 var requestObj = buildBody([ request ], true);67 MFP.Logger.warn("getAvailableAppointmentCentersByDate request | " + requestObj);68 var result = invokeWebServiceString(requestObj, isEncryptResponse,69 encryptionPassword);70 MFP.Logger.warn("getAvailableAppointmentCentersByDate result | " + result);71 return result;72}73//get lanes on specific center74function getAvailableAppointmentCenterLanes(centerId,appointmentId,isEncryptResponse, encryptionPassword){75 76 var bodyRequest ='<sch:getAvailableAppointmentCenterLanesRequest>';77 if (centerId != undefined && centerId != null) {78 bodyRequest += '<sch:ctrId>' + centerId + '</sch:ctrId>';79 }80 bodyRequest += '<sch:aptId>' + appointmentId + '</sch:aptId>';81 bodyRequest += '</sch:getAvailableAppointmentCenterLanesRequest>';82 83 var request = getRequestString(bodyRequest);84 var requestObj = buildBody([ request ], true);85 MFP.Logger.warn("getAvailableAppointmentCenterLanes request | " + requestObj);86 var result = invokeWebServiceString(requestObj, isEncryptResponse,87 encryptionPassword);88 MFP.Logger.warn("getAvailableAppointmentCenterLanes result | " + result);89 return result;90}91//get all centers on specific date92function getAvailableAppointmentCentersByDate (date,isEncryptResponse, encryptionPassword){93 var bodyRequest ="<sch:getAvailableAppointmentCentersRequest>";94 bodyRequest +="<sch:date>" + date + "</sch:date>";95 bodyRequest +="</sch:getAvailableAppointmentCentersRequest>";96 var request = getRequestString(bodyRequest);97 var requestObj = buildBody([ request ], true);98 MFP.Logger.warn("getAvailableAppointmentCentersByDate request | " + requestObj);99 var result = invokeWebServiceString(requestObj, isEncryptResponse,100 encryptionPassword);101 MFP.Logger.warn("getAvailableAppointmentCentersByDate result | " + result);102 return result;103}104//add appointment to backet to book appoitment105function addAppointmentToBasket(vehicleType,vehiclesNumber,serviceID,ownerType,isEncryptResponse, encryptionPassword){106 var bodyRequest ="<sch:addAppointmentToBasketRequest>";107 bodyRequest +="<sch:addSlotAppointment>";108 bodyRequest +="<sch:vclId>"+ vehicleType +"</sch:vclId>";109 bodyRequest +="<sch:noOfVehicles>"+ vehiclesNumber +"</sch:noOfVehicles>";110 bodyRequest +="<sch:selectedServices>";111 bodyRequest +="<sch:service>";112 bodyRequest +="<sch:id>"+ serviceID +"</sch:id>";113 bodyRequest +="</sch:service>";114 115 bodyRequest +="</sch:selectedServices>";116 bodyRequest +="<sch:ownerType>"+ ownerType +"</sch:ownerType>";117 bodyRequest +="</sch:addSlotAppointment>";118 119 bodyRequest +="</sch:addAppointmentToBasketRequest>"120 121 var request = getRequestString(bodyRequest);122 var requestObj = buildBody([ request ], true);123 MFP.Logger.warn("addAppointmentToBasket request | " + requestObj);124 var result = invokeWebServiceString(requestObj, isEncryptResponse,125 encryptionPassword);126 MFP.Logger.warn("addAppointmentToBasket result | " + result);127 return result;128}129//get available slots on specific lane130function getAvailableAppointmentTimeSlots(centerId,appointmentId,updateMode,appointmentDay,isEncryptResponse, encryptionPassword){131 132 var bodyRequest = '<sch:getAvailableAppointmentTimeSlotsRequest>';133 bodyRequest += '<sch:vtcId>' + centerId + '</sch:vtcId>';134 bodyRequest += '<sch:aptId>' + appointmentId + '</sch:aptId>';135 bodyRequest += '<sch:isUpdateMode>' + updateMode + '</sch:isUpdateMode>';136 bodyRequest += '<sch:appointmentDay>' + appointmentDay + '</sch:appointmentDay>';137 bodyRequest += '</sch:getAvailableAppointmentTimeSlotsRequest>';138 139 var request = getRequestString(bodyRequest);140 var requestObj = buildBody([ request ], true);141 MFP.Logger.warn("getAvailableAppointmentTimeSlots request | " + requestObj);142 var result = invokeWebServiceString(requestObj, isEncryptResponse,143 encryptionPassword);144 MFP.Logger.warn("getAvailableAppointmentTimeSlots result | " + result);145 return result ;146}147//get available slots on specific lane148function getAvailableLaneAppointmentTimeSlots(laneId,appointmentId,updateMode,appointmentDay,isEncryptResponse, encryptionPassword){149 150 var bodyRequest = '<sch:getAvailableLaneAppointmentTimeSlotsRequest>';151 bodyRequest += '<sch:tlnId>' + laneId + '</sch:tlnId>';152 bodyRequest += '<sch:aptId>' + appointmentId + '</sch:aptId>';153 bodyRequest += '<sch:isUpdateMode>' + updateMode + '</sch:isUpdateMode>';154 bodyRequest += '<sch:appointmentDay>' + appointmentDay + '</sch:appointmentDay>';155 bodyRequest += '</sch:getAvailableLaneAppointmentTimeSlotsRequest>';156 157 var request = getRequestString(bodyRequest);158 var requestObj = buildBody([ request ], true);159 MFP.Logger.warn("getAvailableLaneAppointmentTimeSlots request | " + requestObj);160 var result = invokeWebServiceString(requestObj, isEncryptResponse,161 encryptionPassword);162 MFP.Logger.warn("getAvailableLaneAppointmentTimeSlots result | " + result);163 return result ;164}165//get available slots on specific lane166function getAvailableAppointmentTimeSlots(centerId,appointmentId,updateMode,appointmentDay,isEncryptResponse, encryptionPassword){167 168 var bodyRequest = '<sch:getAvailableAppointmentTimeSlotsRequest>';169 bodyRequest += '<sch:vtcId>' + centerId + '</sch:vtcId>';170 bodyRequest += '<sch:aptId>' + appointmentId + '</sch:aptId>';171 bodyRequest += '<sch:isUpdateMode>' + updateMode + '</sch:isUpdateMode>';172 bodyRequest += '<sch:appointmentDay>' + appointmentDay + '</sch:appointmentDay>';173 bodyRequest += '</sch:getAvailableAppointmentTimeSlotsRequest>';174 175 var request = getRequestString(bodyRequest);176 var requestObj = buildBody([ request ], true);177 MFP.Logger.warn("getAvailableAppointmentTimeSlots request | " + requestObj);178 var result = invokeWebServiceString(requestObj, isEncryptResponse,179 encryptionPassword);180 MFP.Logger.warn("getAvailableAppointmentTimeSlots result | " + result);181 return result ;182}183//submit appoitment location and time184function submitAppointmentLocationAndTime(UpdateMode,laneId,appointmentId,appointmentTimeFrome,appointmentTimeTo,isEncryptResponse, encryptionPassword){185 186 var bodyRequest = '<sch:submitAppointmentLocationAndTimeRequest>';187 bodyRequest += '<sch:isUpdateMode>' + UpdateMode + '</sch:isUpdateMode>';188 bodyRequest += '<sch:appointment>';189 bodyRequest += '<sch:tlnId>' + laneId + '</sch:tlnId>';190 bodyRequest += '<sch:aptId>' + appointmentId + '</sch:aptId>';191 bodyRequest += '<sch:appointmentTimeFrom>' + appointmentTimeFrome + '</sch:appointmentTimeFrom>';192 bodyRequest += '<sch:appointmentTimeTo>' + appointmentTimeTo + '</sch:appointmentTimeTo>'; 193 bodyRequest += '</sch:appointment>';194 bodyRequest += '</sch:submitAppointmentLocationAndTimeRequest>';195 196 var request = getRequestString(bodyRequest);197 var requestObj = buildBody([ request ], true);198 MFP.Logger.warn("submitAppointmentLocationAndTime request | " + requestObj);199 var result = invokeWebServiceString(requestObj, isEncryptResponse,200 encryptionPassword);201 MFP.Logger.warn("submitAppointmentLocationAndTime result | " + result);202 return result203}204// submit contacts details205function submitContactDetails(appointmentId,firstName,lastName,email,mobileNo,emiCode,isEncryptResponse, encryptionPassword){206 207 var bodyRequest = '<sch:submitContactDetailsRequest>';208 bodyRequest += '<sch:aptId>' + appointmentId + '</sch:aptId>';209 bodyRequest += '<sch:firstNameAr></sch:firstNameAr>';210 bodyRequest += '<sch:lastNameAr></sch:lastNameAr>';211 bodyRequest += '<sch:firstNameEn>' + firstName + '</sch:firstNameEn>';212 bodyRequest += '<sch:lastNameEn>' + lastName + '</sch:lastNameEn>';213 bodyRequest += '<sch:email>' + email + '</sch:email>';214 bodyRequest += '<sch:mobileNo>' + mobileNo + '</sch:mobileNo>';215 bodyRequest += '<sch:address></sch:address>';216 bodyRequest += '<sch:emiCode>' + emiCode + '</sch:emiCode>';217 bodyRequest += '</sch:submitContactDetailsRequest>';218 219 var request = getRequestString(bodyRequest);220 var requestObj = buildBody([ request ], true);221 MFP.Logger.warn("submitContactDetails request | " + requestObj);222 var result = invokeWebServiceString(requestObj, isEncryptResponse,223 encryptionPassword);224 MFP.Logger.warn("submitContactDetails result | " + result);225 return result ;226}227//confirm appointment228function confirmAppointment(appointmentId,isEncryptResponse, encryptionPassword){229 230 var bodyRequest = '<sch:confirmAppointmentRequest>';231 bodyRequest += '<sch:aptId>'+ appointmentId +'</sch:aptId>';232 bodyRequest += '</sch:confirmAppointmentRequest>';233 var request = getRequestString(bodyRequest);234 var requestObj = buildBody([ request ], true);235 MFP.Logger.warn("confirmAppointment request | " + requestObj);236 var result = invokeWebServiceString(requestObj, isEncryptResponse,237 encryptionPassword);238 MFP.Logger.warn("confirmAppointment result | " + result);239 return result ;240}241function getAppointmentBasket(appointmentId,isEncryptResponse, encryptionPassword){242 243 var bodyRequest = '<sch:getAppointmentBasketRequest>';244 bodyRequest += '<sch:aptId>'+ appointmentId +'</sch:aptId>';245 bodyRequest += '</sch:getAppointmentBasketRequest>';246 var request = getRequestString(bodyRequest);247 var requestObj = buildBody([ request ], true);248 MFP.Logger.warn("getAppointmentBasket request | " + requestObj);249 var result = invokeWebServiceString(requestObj, isEncryptResponse,250 encryptionPassword);251 MFP.Logger.warn("getAppointmentBasket result | " + result);252 return result ;253}254function buildBody(parameters, isStatic) {255 var request = "";256 if (isStatic == true) {257 request = MFP.Server.invokeProcedure({258 adapter : 'drivers_and_vehciles_utilitiesAdapter',259 procedure : 'buildBodyFromStaticRequest',260 parameters : parameters,261 });262 } else {263 request = MFP.Server.invokeProcedure({264 adapter : 'drivers_and_vehciles_utilitiesAdapter',265 procedure : 'buildBody',266 parameters : parameters267 });268 }269 return request.body;270}271function getRequestString(bodyString) {272 var requestDate = new Date(Date.now());273 var requestDateFormated = requestDate.toISOString(); // Returns274 // 2011-10-05T14:48:00.000Z275 var request = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.rta.ae/ActiveMatrix/ESB/AppointmentService/XMLSchema/Schema.xsd">'276 + '<soapenv:Header>'277 + '<wsse:Security soapenv:mustUnderstand="0" xmlns:wsse=" http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd " xmlns=" http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:sch="http://schemas.xmlsoap.org/soap/envelope/">'278 + '<wsse:UsernameToken>'279 + '<wsse:Username>'280 + username_cis281 + '</wsse:Username>'282 + '<wsse:Password>'283 + password_cis284 + '</wsse:Password>'285 + '</wsse:UsernameToken>'286 + '</wsse:Security>'287 + '</soapenv:Header>'288 + '<soapenv:Body>'289 + bodyString290 + '</soapenv:Body>' + '</soapenv:Envelope>';291 return request;292}293function invokeWebServiceString(request, isEncryptResponse, encryptionPassword) {294 MFP.Logger.warn(request);295 var input = {296 method : 'post',297 headers : {298 "SOAPAction" : ""299 },300 returnedContentType : 'HTML',301 path : '/appointmentService',302 body : {303 content : JSON.parse(request),304 contentType : 'text/xml; charset=utf-8'305 }306 };307 var webServiceResult = MFP.Server.invokeHttp(input);308 MFP.Logger.warn(webServiceResult);309 MFP.Logger.warn(JSON.stringify(webServiceResult));310 if (isEncryptResponse != undefined && isEncryptResponse == true) {311 var responseString = JSON.stringify(webServiceResult);312 var invocationData = {313 adapter : 'drivers_and_vehciles_utilitiesAdapter',314 procedure : 'encryptData',315 parameters : [ responseString, encryptionPassword ]316 };317 webServiceResult = MFP.Server.invokeProcedure(invocationData);318 }319 var invocationData = {320 adapter : 'drivers_and_vehciles_utilitiesAdapter',321 procedure : 'deleteCredientails',322 parameters : [webServiceResult]323 };324 return MFP.Server.invokeProcedure(invocationData);...

Full Screen

Full Screen

bill-business.test.ts

Source:bill-business.test.ts Github

copy

Full Screen

1import nock from 'nock'2import { BillBusiness } from '../../business/bill-business';3import { BillDatabase } from '../../data/bill-database';4const makeBillBusiness = () => {5 const billDatabase = new BillDatabase()6 return new BillBusiness(billDatabase)7}8describe('billBusiness (unit)', () => {9 describe('addBill', () => {10 test('should throw a missing parameter error if there is no name provided', async () => {11 try {12 const bodyRequest = {13 original_price: 100, due_date: '03/01/2021'14 }15 nock('http://localhost:3000/api/v1/bills')16 .post('/', bodyRequest)17 .replyWithError('Missing param: name')18 const billBusiness = makeBillBusiness()19 const addBillRequest = await billBusiness.addBill(bodyRequest)20 } catch (error) {21 expect(error.message).toBe('Missing param: name')22 }23 });24 test('should throw a missing parameter error if there is no due_date provided', async () => {25 try {26 const bodyRequest = {27 original_price: 100, name: 'bill_name'28 }29 nock('http://localhost:3000/api/v1/bills')30 .post('/', bodyRequest)31 .replyWithError('Missing param: due_date')32 const billBusiness = makeBillBusiness()33 const addBillRequest = await billBusiness.addBill(bodyRequest)34 } catch (error) {35 expect(error.message).toBe('Missing param: due_date')36 }37 });38 test('should throw a missing parameter error if there is no original_price provided', async () => {39 try {40 const bodyRequest = {41 due_date: '03/01/2021', name: 'bill_name'42 }43 nock('http://localhost:3000/api/v1/bills')44 .post('/', bodyRequest)45 .replyWithError('Missing param: original_price')46 const billBusiness = makeBillBusiness()47 const addBillRequest = await billBusiness.addBill(bodyRequest)48 } catch (error) {49 expect(error.message).toBe('Missing param: original_price')50 }51 });52 test('should call the addBill database method', async () => {53 const bodyRequest = {54 due_date: '03/01/2021', name: 'bill_name', original_price: 10055 }56 nock('http://localhost:3000/api/v1/bills')57 .post('/', bodyRequest)58 .reply(201)59 const billBusiness = makeBillBusiness()60 const billBusinessSpy = jest.spyOn(billBusiness, 'addBill')61 await billBusiness.addBill(bodyRequest)62 expect(billBusinessSpy).toHaveBeenCalledWith(bodyRequest)63 });64 });65 describe('getBills', () => {66 test('call the getBills method', async () => {67 nock('http://localhost:3000/api/v1/bills')68 .get('/')69 .reply(200)70 const billBusiness = makeBillBusiness()71 const billBusinessSpy = jest.spyOn(billBusiness, 'getBills')72 await billBusiness.getBills()73 expect(billBusinessSpy).toHaveBeenCalled()74 });75 });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var client = wpt('www.webpagetest.org');3 if (err) return console.error(err);4 console.log(data);5 client.bodyRequest(data.data.testId, 'getLocations', function(err, data) {6 if (err) return console.error(err);7 console.log(data);8 });9});

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var test = new wpt('www.webpagetest.org');3var options = {4};5test.runTest(options, function(err, data) {6 if (err) return console.error(err);7 test.getTestResults(data.data.testId, function(err, data) {8 if (err) return console.error(err);9 console.log(data);10 });11});12 at Request._callback (/home/rahul/Downloads/webpagetest-master/node_modules/webpagetest/lib/webpagetest.js:24:7)13 at self.callback (/home/rahul/Downloads/webpagetest-master/node_modules/request/request.js:188:22)14 at emitOne (events.js:96:13)15 at Request.emit (events.js:188:7)16 at Request.onRequestError (/home/rahul/Downloads/webpagetest-master/node_modules/request/request.js:884:8)17 at emitOne (events.js:96:13)18 at ClientRequest.emit (events.js:188:7)19 at TLSSocket.socketErrorListener (_http_client.js:310:9)

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var options = {3 videoParams: {4 }5};6var wpt = new WebPageTest('www.webpagetest.org', options.key);7var testScript = 'testScript.js';8var testScript = 'testScript.js';9wpt.bodyRequest(testUrl, testScript, options, function(err, data) {10 console.log(data);11});12var requests = 1;13var headers = [];14headers['X-My-Header'] = 'custom value';15var ua = 'My User Agent';16var body = 'custom request body';17var method = 'POST';18var timeout = 5000;19var priority = 3;20var encoding = 'base64';21var size = 12345;22var type = 'text/plain';23var file = 'body.txt';24var path = '/path/to/body.txt';25var mime = 'text/plain';

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var test = wpt('API_KEY');3 test.bodyRequest(data.data.jsonUrl, {location: 'ec2-us-west-1:Chrome'}, function(err, data) {4 console.log(data);5 });6});

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('wpt');2var wpt = new WebPageTest('www.webpagetest.org', 'A.1234567890abcdef1234567890abcdef');3 if (err) return console.error(err);4 console.log('Test ID: %s', data.data.testId);5 wpt.getTestResults(data.data.testId, function(err, data) {6 if (err) return console.error(err);7 console.log('Test completed in %d seconds', data.data.average.firstView.loadTime);8 });9});10var wpt = require('wpt');11var wpt = new WebPageTest('www.webpagetest.org', 'A.1234567890abcdef1234567890abcdef');12 if (err) return console.error(err);13 console.log('Test ID: %s', data.data.testId);14 wpt.getTestResults(data.data.testId, function(err, data) {15 if (err) return console.error(err);16 console.log('Test completed in %d seconds', data.data.average.firstView.loadTime);17 });18});19var wpt = require('wpt');20var wpt = new WebPageTest('www.webpagetest.org', 'A.1234567890abcdef1234567890abcdef');21 if (err) return console.error(err);22 console.log('Test ID: %s', data.data.testId);23 wpt.getTestResults(data.data.testId, function(err, data) {24 if (err) return console.error(err);25 console.log('Test completed in %d seconds', data.data.average.firstView.loadTime);26 });27});28var wpt = require('wpt');

Full Screen

Using AI Code Generation

copy

Full Screen

1var WebPageTest = require('webpagetest'); 2var wpt = new WebPageTest('www.webpagetest.org', 'A.1234567890abcde1234567890abcde12');3var options = {4};5var body = {6};7wpt.bodyRequest('runtest.php', body, function(err, data) {8 if (err) return console.error(err);9 console.log('Test started: %s', data.data.testId);10});11var WebPageTest = require('webpagetest'); 12var wpt = new WebPageTest('www.webpagetest.org', 'A.1234567890abcde1234567890abcde12');13var options = {14};15wpt.runTest(url, options, function(err, data) {16 if (err) return console.error(err);17 console.log('Test started: %s', data.data.testId);18});19var WebPageTest = require('webpagetest'); 20var wpt = new WebPageTest('www.webpagetest.org', 'A.1234567890abcde1234567890abcde12');21wpt.getTesters(function(err, data) {22 if (err) return console.error(err);

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run wpt automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful