How to use getJobStatus method in argos

Best JavaScript code snippet using argos

job.test.js

Source:job.test.js Github

copy

Full Screen

1/*2Copyright 2020 Adobe. All rights reserved.3This file is licensed to you under the Apache License, Version 2.0 (the "License");4you may not use this file except in compliance with the License. You may obtain a copy5of the License at http://www.apache.org/licenses/LICENSE-2.06Unless required by applicable law or agreed to in writing, software distributed under7the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS8OF ANY KIND, either express or implied. See the License for the specific language9governing permissions and limitations under the License.10*/11'use strict'12const { Job } = require('../src/job')13test('missing-response', async () => {14 await expect(() => {15 // eslint-disable-next-line no-new16 new Job()17 }).toThrow('[PhotoshopSDK:ERROR_STATUS_URL_MISSING] Status URL is missing in the response: %s')18})19test('missing-links', async () => {20 await expect(() => {21 // eslint-disable-next-line no-new22 new Job({})23 }).toThrow('[PhotoshopSDK:ERROR_STATUS_URL_MISSING] Status URL is missing in the response: {}')24})25test('missing-self', async () => {26 await expect(() => {27 // eslint-disable-next-line no-new28 new Job({ _links: { } })29 }).toThrow('[PhotoshopSDK:ERROR_STATUS_URL_MISSING] Status URL is missing in the response: {"_links":{}}')30})31test('missing-href', async () => {32 await expect(() => {33 // eslint-disable-next-line no-new34 new Job({ _links: { self: { } } })35 }).toThrow('[PhotoshopSDK:ERROR_STATUS_URL_MISSING] Status URL is missing in the response: {"_links":{"self":{}}}')36})37test('valid-status-url', async () => {38 const job = new Job({ _links: { self: { href: 'http://host/status' } } })39 expect(job).toEqual({40 getJobStatus: undefined,41 jobId: '',42 outputs: [],43 url: 'http://host/status'44 })45})46test('done-no-outputs', async () => {47 const job = new Job({ _links: { self: { href: 'http://host/status' } } })48 expect(job.isDone()).toEqual(false)49})50test('done-single-output-nostatus', async () => {51 const job = new Job({ _links: { self: { href: 'http://host/status' } } })52 job.outputs = [{}]53 expect(job.isDone()).toEqual(false)54})55test('done-single-output-succeeded', async () => {56 const job = new Job({ _links: { self: { href: 'http://host/status' } } })57 job.outputs = [{ status: 'succeeded' }]58 expect(job.isDone()).toEqual(true)59})60test('done-single-output-failed', async () => {61 const job = new Job({ _links: { self: { href: 'http://host/status' } } })62 job.outputs = [{ status: 'failed' }]63 expect(job.isDone()).toEqual(true)64})65test('done-multi-output-incomplete1', async () => {66 const job = new Job({ _links: { self: { href: 'http://host/status' } } })67 job.outputs = [{ status: 'failed' }, { status: 'running' }]68 expect(job.isDone()).toEqual(false)69})70test('done-multi-output-incomplete2', async () => {71 const job = new Job({ _links: { self: { href: 'http://host/status' } } })72 job.outputs = [{ status: 'running' }, { status: 'failed' }]73 expect(job.isDone()).toEqual(false)74})75test('done-multi-output-complete1', async () => {76 const job = new Job({ _links: { self: { href: 'http://host/status' } } })77 job.outputs = [{ status: 'failed' }, { status: 'succeeded' }]78 expect(job.isDone()).toEqual(true)79})80test('done-multi-output-complete2', async () => {81 const job = new Job({ _links: { self: { href: 'http://host/status' } } })82 job.outputs = [{ status: 'succeeded' }, { status: 'failed' }]83 expect(job.isDone()).toEqual(true)84})85test('poll-response-no-output', async () => {86 const getJobStatus = () => ({})87 const job = new Job({88 _links: { self: { href: 'http://host/status' } }89 }, getJobStatus)90 await job.poll()91 expect(job).toEqual({92 _links: undefined,93 getJobStatus,94 jobId: undefined,95 outputs: [],96 url: 'http://host/status'97 })98})99test('poll-response-cutout-pending', async () => {100 const getJobStatus = () => ({101 jobID: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',102 status: 'pending',103 _links: {104 self: {105 href: 'https://image.adobe.io/sensei/status/c900e70c-03b2-43dc-b6f0-b0db16333b4b'106 }107 }108 })109 const job = new Job({110 _links: { self: { href: 'http://host/status' } }111 }, getJobStatus)112 await job.poll()113 expect(job).toEqual({114 _links: {115 self: {116 href: 'https://image.adobe.io/sensei/status/c900e70c-03b2-43dc-b6f0-b0db16333b4b'117 }118 },119 getJobStatus,120 jobId: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',121 outputs: [],122 url: 'http://host/status'123 })124})125test('poll-response-cutout-succeeded', async () => {126 const getJobStatus = () => ({127 jobID: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',128 status: 'succeeded',129 input: '/files/images/input.jpg',130 output: {131 storage: 'adobe',132 href: '/files/cutout/output/mask.png',133 mask: {134 format: 'binary'135 },136 color: {137 space: 'rgb'138 }139 },140 _links: {141 self: {142 href: 'https://image.adobe.io/sensei/status/c900e70c-03b2-43dc-b6f0-b0db16333b4b'143 }144 }145 })146 const job = new Job({147 _links: { self: { href: 'http://host/status' } }148 }, getJobStatus)149 await job.poll()150 expect(job).toEqual({151 _links: {152 self: {153 href: 'https://image.adobe.io/sensei/status/c900e70c-03b2-43dc-b6f0-b0db16333b4b'154 }155 },156 getJobStatus,157 jobId: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',158 outputs: [{159 status: 'succeeded',160 input: '/files/images/input.jpg',161 _links: {162 self: {163 storage: 'adobe',164 href: '/files/cutout/output/mask.png',165 mask: {166 format: 'binary'167 },168 color: {169 space: 'rgb'170 }171 }172 }173 }],174 url: 'http://host/status'175 })176})177test('poll-response-cutout-failed', async () => {178 const getJobStatus = () => ({179 jobID: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',180 status: 'failed',181 input: '/files/images/input.jpg',182 errors: {183 type: '<errorType>',184 code: '<errorCode>',185 title: '<errorDescription>',186 '<errorDetails>': [187 {188 name: '<paramName>',189 reason: '<error>'190 }191 ]192 },193 _links: {194 self: {195 href: 'https://image.adobe.io/sensei/status/c900e70c-03b2-43dc-b6f0-b0db16333b4b'196 }197 }198 })199 const job = new Job({200 _links: { self: { href: 'http://host/status' } }201 }, getJobStatus)202 await job.poll()203 expect(job).toEqual({204 _links: {205 self: {206 href: 'https://image.adobe.io/sensei/status/c900e70c-03b2-43dc-b6f0-b0db16333b4b'207 }208 },209 getJobStatus,210 jobId: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',211 outputs: [{212 status: 'failed',213 input: '/files/images/input.jpg',214 errors: {215 type: '<errorType>',216 code: '<errorCode>',217 title: '<errorDescription>',218 '<errorDetails>': [219 {220 name: '<paramName>',221 reason: '<error>'222 }223 ]224 }225 }],226 url: 'http://host/status'227 })228})229test('poll-autostraighten-success', async () => {230 const response = {231 jobId: 'f54e0fcb-260b-47c3-b520-de0d17dc2b67',232 created: '2018-01-04T12:57:15.12345:Z',233 modified: '2018-01-04T12:58:36.12345:Z',234 outputs: [{235 input: '/some_project/photo.jpg',236 status: 'pending'237 }],238 _links: {239 self: {240 href: 'https://image.adobe.io/lrService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67'241 }242 }243 }244 const getJobStatus = () => response245 const job = new Job({246 _links: { self: { href: 'http://host/status' } }247 }, getJobStatus)248 await job.poll()249 expect(job).toEqual({250 getJobStatus,251 url: 'http://host/status',252 _links: {253 self: {254 href: 'https://image.adobe.io/lrService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67'255 }256 },257 jobId: 'f54e0fcb-260b-47c3-b520-de0d17dc2b67',258 outputs: [{259 created: '2018-01-04T12:57:15.12345:Z',260 modified: '2018-01-04T12:58:36.12345:Z',261 input: '/some_project/photo.jpg',262 status: 'pending'263 }]264 })265})266test('poll-response-document-operations', async () => {267 const response = {268 jobId: 'f54e0fcb-260b-47c3-b520-de0d17dc2b67',269 outputs: [{270 input: '/files/some_project/design1.psd',271 status: 'pending',272 created: '2018-01-04T12:57:15.12345:Z',273 modified: '2018-01-04T12:58:36.12345:Z'274 }, {275 input: 'https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...',276 status: 'running',277 created: '2018-01-04T12:57:15.12345:Z',278 modified: '2018-01-04T12:58:36.12345:Z'279 }, {280 input: '/files/some_project/design2.psd',281 status: 'succeeded',282 created: '2018-01-04T12:57:15.12345:Z',283 modified: '2018-01-04T12:58:36.12345:Z',284 _links: {285 renditions: [{286 href: '/files/some_project/OUTPUT/design2_new.psd',287 storage: 'adobe',288 width: '500',289 type: 'image/jpeg',290 trimToCanvas: false,291 layers: [{292 id: 77293 }]294 }]295 }296 }, {297 input: 'https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...',298 status: 'failed',299 created: '2018-01-04T12:57:15.12345:Z',300 modified: '2018-01-04T12:58:36.12345:Z',301 error: {302 type: 'InputValidationError',303 title: "request parameters didn't validate",304 code: '400',305 invalidParams: [{306 name: 'contrast',307 reason: 'value must be an int between -150 and 150'308 }, {309 name: 'exposure',310 reason: 'must be bool'311 }]312 }313 }],314 _links: {315 self: {316 href: 'https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67'317 }318 }319 }320 const getJobStatus = () => response321 const job = new Job({322 _links: { self: { href: 'http://host/status' } }323 }, getJobStatus)324 await job.poll()325 expect(job).toEqual({326 ...response,327 getJobStatus,328 url: 'http://host/status'329 })330})331test('poll-until-done-succeeded', async () => {332 let iteration = 0333 const getJobStatus = () => {334 if (iteration === 0) {335 ++iteration336 return {337 jobID: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',338 status: 'pending'339 }340 } else if (iteration === 1) {341 ++iteration342 return {343 jobID: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',344 status: 'succeeded',345 output: {346 storage: 'adobe',347 href: '/files/output.png'348 }349 }350 } else {351 throw Error('invalid call')352 }353 }354 const job = new Job({355 _links: { self: { href: 'http://host/status' } }356 }, getJobStatus)357 await job.pollUntilDone()358 expect(job).toEqual({359 getJobStatus,360 url: 'http://host/status',361 jobId: 'c900e70c-03b2-43dc-b6f0-b0db16333b4b',362 outputs: [{363 status: 'succeeded',364 _links: {365 self: {366 storage: 'adobe',367 href: '/files/output.png'368 }369 }370 }]371 })...

Full Screen

Full Screen

queue-cleanup.spec.ts

Source:queue-cleanup.spec.ts Github

copy

Full Screen

...22 });23 });24 describe(getJobStatus.name, () => {25 it('should return the job status', () => {26 expect(getJobStatus(completed as Job)).toEqual('completed');27 expect(getJobStatus(wait as Job)).toEqual('wait');28 expect(getJobStatus(active as Job)).toEqual('active');29 expect(getJobStatus(paused as Job)).toEqual('paused');30 expect(getJobStatus(delayed as Job)).toEqual('delayed');31 expect(getJobStatus(failed as Job)).toEqual('failed');32 expect(getJobStatus(nonCleanupJob as Job)).toBeUndefined();33 });34 it('should accept queue names that have the internal delimiter in it', () => {35 const queue = {36 name: 'test_queue'37 };38 const job = { name: queueCleanUpJobName(queue.name, 'completed') };39 expect(getJobStatus(job as Job)).toEqual('completed');40 });41 });42 describe(isCleanUpJob.name, () => {43 it('should detect if a job is a cleanup job', () => {44 expect(isCleanUpJob(completed as Job, queue.name)).toEqual(true);45 expect(isCleanUpJob(wait as Job, queue.name)).toEqual(true);46 expect(isCleanUpJob(active as Job, queue.name)).toEqual(true);47 expect(isCleanUpJob(paused as Job, queue.name)).toEqual(true);48 expect(isCleanUpJob(delayed as Job, queue.name)).toEqual(true);49 expect(isCleanUpJob(failed as Job, queue.name)).toEqual(true);50 expect(isCleanUpJob(nonCleanupJob as Job, queue.name)).toEqual(false);51 });52 it('should accept queue names that have the internal delimiter in it', () => {53 const queue = {...

Full Screen

Full Screen

WMStats.CategoryDetailList.js

Source:WMStats.CategoryDetailList.js Github

copy

Full Screen

...9 htmlstr += "<ul>";10 if (reqDoc) {11 12 htmlstr += "<li><b>category:</b> " + requestStruct.key + "</li>";13 htmlstr += "<li><b>queued (first):</b> " + reqSummary.getJobStatus("queued.first", 0) + "</li>";14 htmlstr += "<li><b>queued (retried):</b> " + reqSummary.getJobStatus("queued.retry", 0) + "</li>";15 htmlstr += "<li><b>created:</b> " + reqSummary.getWMBSTotalJobs() + "</li>";16 htmlstr += "<li><b>paused jobs:</b> " + reqSummary.getTotalPaused() + "</li>";17 htmlstr += "<li><b>cooloff jobs:</b> " + reqSummary.getTotalCooloff() + "</li>";18 htmlstr += "<li><b>submitted:</b> " + reqSummary.getTotalSubmitted() + "</li>";19 htmlstr += "<li><b>pending:</b> " + reqSummary.getJobStatus("submitted.pending", 0) + "</li>";20 htmlstr += "<li><b>running:</b> " + reqSummary.getJobStatus("submitted.running", 0) + "</li>";21 htmlstr += "<li><b>failure:</b> " + reqSummary.getTotalFailure() + "</li>";22 htmlstr += "<li><b>success:</b> " + reqSummary.getJobStatus("success", 0) + "</li>";23 }24 htmlstr += "</ul>";25 htmlstr += "</div>";26 return htmlstr;27 };28 29 WMStats.CategoryDetailList = function (data, containerDiv) {30 $(containerDiv).html(format(data));31 };32 33 var vm = WMStats.ViewModel;34 35 vm.CategoryDetail.subscribe("data", function() {36 WMStats.CategoryDetailList(vm.CategoryDetail.data(), vm.CategoryDetail.id());...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { getJobStatus } = require('argos-sdk');2const jobId = '123456789';3getJobStatus(jobId)4 .then((res) => {5 console.log(res);6 })7 .catch((err) => {8 console.log(err);9 });10const { getJobStatus } = require('argos-sdk');11const jobId = '123456789';12(async () => {13 try {14 const res = await getJobStatus(jobId);15 console.log(res);16 } catch (err) {17 console.log(err);18 }19})();20const { getJobResults } = require('argos-sdk');21const jobId = '123456789';22getJobResults(jobId)23 .then((res) => {24 console.log(res);25 })26 .catch((err) => {27 console.log(err);28 });29const { getJobResults } = require('argos-sdk');30const jobId = '123456789';31(async () => {32 try {33 const res = await getJobResults(jobId);34 console.log(res);35 } catch (err) {36 console.log(err);37 }38})();39const { getJobResultsCsv } = require('argos-sdk');40const jobId = '123456789';41getJobResultsCsv(jobId)42 .then((res) => {43 console.log(res);44 })45 .catch((err) => {46 console.log(err);47 });48const { getJobResultsCsv } = require('argos-sdk');49const jobId = '123456789';50(async () => {51 try {52 const res = await getJobResultsCsv(jobId);53 console.log(res);54 } catch (err) {55 console.log(err);56 }57})();

Full Screen

Using AI Code Generation

copy

Full Screen

1var argosSDK = require('argos-sdk');2var jobID = '12345';3argosSDK.getJobStatus(jobID, function(err, data) {4 if (err) {5 console.log('Error: ' + err);6 } else {7 console.log(data);8 }9});10var argosSDK = require('argos-sdk');11var jobID = '12345';12argosSDK.getJobStatus(jobID, function(err, data) {13 if (err) {14 console.log('Error: ' + err);15 } else {16 console.log(data);17 }18});19var argosSDK = require('argos-sdk');20var jobID = '12345';21argosSDK.getJobStatus(jobID, function(err, data) {22 if (err) {23 console.log('Error: ' + err);24 } else {25 console.log(data);26 }27});28var argosSDK = require('argos-sdk');29var jobID = '12345';30argosSDK.getJobStatus(jobID, function(err, data) {31 if (err) {32 console.log('Error: ' + err);33 } else {34 console.log(data);35 }36});37var argosSDK = require('argos-sdk');38var jobID = '12345';39argosSDK.getJobStatus(jobID, function(err, data) {40 if (err) {41 console.log('Error: ' + err);42 } else {43 console.log(data);44 }45});46var argosSDK = require('argos-sdk');47var jobID = '12345';48argosSDK.getJobStatus(jobID, function(err, data) {49 if (err) {50 console.log('Error: ' + err);51 } else {52 console.log(data);53 }54});55var argosSDK = require('argos-sdk');

Full Screen

Using AI Code Generation

copy

Full Screen

1const argosSDK = require('argos-sdk');2const argos = new argosSDK();3const jobId = "1234";4argos.getJobStatus(jobId).then(function (status) {5 console.log(status);6}).catch(function (err) {7 console.log(err);8});9const argosSDK = require('argos-sdk');10const argos = new argosSDK();11const jobId = "1234";12argos.getJobResults(jobId).then(function (results) {13 console.log(results);14}).catch(function (err) {15 console.log(err);16});17const argosSDK = require('argos-sdk');18const argos = new argosSDK();19const jobId = "1234";20argos.getJobLog(jobId).then(function (log) {21 console.log(log);22}).catch(function (err) {23 console.log(err);24});25const argosSDK = require('argos-sdk');26const argos = new argosSDK();27const jobId = "1234";28argos.getJobArtifacts(jobId).then(function (artifacts) {29 console.log(artifacts);30}).catch(function (err) {31 console.log(err);32});33const argosSDK = require('argos-sdk');34const argos = new argosSDK();35const jobId = "1234";36const artifactId = "5678";37argos.getJobArtifact(jobId, artifactId).then(function (artifact) {38 console.log(artifact);39}).catch(function (err) {40 console.log(err);41});

Full Screen

Using AI Code Generation

copy

Full Screen

1var argosy = require('argosy')2var service = argosy()3var jobStatus = require('argosy-service-job-status')4service.pipe(jobStatus()).pipe(service)5service.on('jobStatus', function (data) {6 console.log(data)7})8service.getJobStatus('1234')9var argosy = require('argosy')10var service = argosy()11var jobStatus = require('argosy-service-job-status')12service.pipe(jobStatus()).pipe(service)13service.on('jobStatus', function (data) {14 console.log(data)15})16service.getJobStatus('1234')17var argosy = require('argosy')18var service = argosy()19var jobStatus = require('argosy-service-job-status')20service.pipe(jobStatus()).pipe(service)21service.on('jobStatus', function (data) {22 console.log(data)23})24service.getJobStatus('1234')25var argosy = require('argosy')26var service = argosy()27var jobStatus = require('argosy-service-job-status')28service.pipe(jobStatus()).pipe(service)29service.on('jobStatus', function (data) {30 console.log(data)31})32service.getJobStatus('1234')33var argosy = require('argosy')34var service = argosy()35var jobStatus = require('argosy-service-job-status')36service.pipe(jobStatus()).pipe(service)37service.on('jobStatus', function (data) {38 console.log(data)39})40service.getJobStatus('1234')41var argosy = require('argosy')42var service = argosy()43var jobStatus = require('argosy-service-job-status')44service.pipe(jobStatus()).pipe(service)45service.on('jobStatus', function (data) {46 console.log(data)47})48service.getJobStatus('1234')

Full Screen

Using AI Code Generation

copy

Full Screen

1const argos = require('argos-sdk');2const jobID = "1234567890";3argos.getJobStatus(jobID)4 .then((response) => {5 })6 .catch((error) => {7 });8const argos = require('argos-sdk');9const jobID = "1234567890";10argos.getJobStatus(jobID)11 .then((response) => {12 })13 .catch((error) => {14 });15const argos = require('argos-sdk');16const jobID = "1234567890";17argos.getJobStatus(jobID)18 .then((response) => {19 })20 .catch((error) => {21 });22const argos = require('argos-sdk');23const jobID = "1234567890";24argos.getJobStatus(jobID)25 .then((response) => {26 })27 .catch((error) => {28 });29const argos = require('argos-sdk');30const jobID = "1234567890";31argos.getJobStatus(jobID)32 .then((response) => {33 })34 .catch((error) => {35 });

Full Screen

Using AI Code Generation

copy

Full Screen

1const { getJobStatus } = require('argos-sdk');2getJobStatus(jobId)3 .then((jobStatusResponse) => {4 console.log(jobStatusResponse);5 })6 .catch((error) => {7 console.log(error);8 });9const { getJobResult } = require('argos-sdk');10getJobResult(jobId)11 .then((jobResultResponse) => {12 console.log(jobResultResponse);13 })14 .catch((error) => {15 console.log(error);16 });17const { getJobLogs } = require('argos-sdk');18getJobLogs(jobId)19 .then((jobLogsResponse) => {20 console.log(jobLogsResponse);21 })22 .catch((error) => {23 console.log(error);24 });25const { getJobResult } = require('argos-sdk');26getJobResult(jobId)27 .then((jobResultResponse) => {28 console.log(jobResultResponse);29 })30 .catch((error) => {31 console.log(error);32 });33const { getJobLogs } = require('argos-sdk');34getJobLogs(jobId)35 .then((jobLogsResponse) => {36 console.log(jobLogsResponse);37 })38 .catch((error) => {39 console.log(error);40 });41const { getJobResult } = require('argos-sdk');42getJobResult(job

Full Screen

Using AI Code Generation

copy

Full Screen

1var argos = require('argos');2argos.getJobStatus('job-id', function(err, data) {3 console.log(data);4});5### getJobDetails(jobId, callback)6var argos = require('argos');7argos.getJobDetails('job-id', function(err, data) {8 console.log(data);9});10### getJobResults(jobId, callback)11var argos = require('argos');12argos.getJobResults('job-id', function(err, data) {13 console.log(data);14});15### getJobResultsByPage(jobId, page, callback)16var argos = require('argos');17argos.getJobResultsByPage('job-id', 1, function(err, data) {18 console.log(data);19});20### getJobResultsByPageAndSize(jobId, page, size, callback)21var argos = require('argos');22argos.getJobResultsByPageAndSize('job-id', 1, 10, function(err, data) {23 console.log(data);24});25### getJobResultsBySize(jobId, size, callback)26var argos = require('argos');27argos.getJobResultsBySize('job-id', 10, function(err, data) {28 console.log(data);29});30### getJobResultsByTime(jobId, startTime, endTime, callback)31var argos = require('argos');32argos.getJobResultsByTime('job-id', '201

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 argos 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