How to use stubBrowser method in Cypress

Best JavaScript code snippet using cypress

browser-pool.js

Source:browser-pool.js Github

copy

Full Screen

...41        it('should create browser with correct args', async () => {42            const config = stubConfig();43            const emitter = new EventEmitter();44            const browserPool = createPool({config, emitter});45            const browser = stubBrowser({browserId: 'bro-id'});46            Browser.create.withArgs(config, 'bro-id', undefined, emitter).returns(browser);47            await browserPool.getBrowser({browserId: 'bro-id'});48            assert.calledOnceWith(Browser.create, config, 'bro-id', undefined, emitter);49        });50        it('should create specific version of browser with correct args', async () => {51            const config = stubConfig();52            const emitter = new EventEmitter();53            const browserPool = createPool({config, emitter});54            const browser = stubBrowser({browserId: 'bro-id'});55            Browser.create.withArgs(config, 'bro-id', '10.1', emitter).returns(browser);56            await browserPool.getBrowser({browserId: 'bro-id', browserVersion: '10.1'});57            assert.calledOnceWith(Browser.create, config, 'bro-id', '10.1', emitter);58        });59        it('should create a new browser if there are no free browsers in a cache', () => {60            const config = stubConfig();61            const browserPool = createPool({config});62            const browser = stubBrowser({browserId: 'bro-id'});63            Browser.create.withArgs(config, 'bro-id').returns(browser);64            return assert.becomes(browserPool.getBrowser({browserId: 'bro-id'}), browser);65        });66        it('should create a new browser with specific version if there are no free browsers in a cache', () => {67            const config = stubConfig();68            const browserPool = createPool({config});69            const browser = stubBrowser({browserId: 'bro-id'});70            Browser.create.withArgs(config, 'bro-id', '10.1').returns(browser);71            return assert.becomes(browserPool.getBrowser({browserId: 'bro-id', browserVersion: '10.1'}), browser);72        });73        it('should init a new created browser if there are no free browsers in a cache', async () => {74            const browser = stubBrowser({browserId: 'bro-id'});75            Browser.create.returns(browser);76            await createPool().getBrowser({77                browserId: 'bro-id', sessionId: '100-500', sessionCaps: 'some-caps', sessionOpts: 'some-opts'78            });79            assert.calledOnceWith(80                browser.init,81                {sessionId: '100-500', sessionCaps: 'some-caps', sessionOpts: 'some-opts'},82                sinon.match.instanceOf(Calibrator)83            );84        });85        it('should emit "NEW_BROWSER" event on creating of a browser', async () => {86            const emitter = new EventEmitter();87            const onNewBrowser = sandbox.spy().named('onNewBrowser');88            const browserPool = createPool({emitter});89            emitter.on(RunnerEvents.NEW_BROWSER, onNewBrowser);90            Browser.create.returns(stubBrowser({id: 'bro-id', publicAPI: {some: 'api'}}));91            await browserPool.getBrowser({browserId: 'bro-id', browserVersion: '10.1'});92            assert.calledOnceWith(onNewBrowser, {some: 'api'}, {browserId: 'bro-id', browserVersion: '10.1'});93        });94        it('should not create a new browser if there is a free browser in a cache', async () => {95            const browserPool = createPool();96            Browser.create.returns(stubBrowser());97            const browser = await browserPool.getBrowser({browserId: 'bro-id', sessionId: '100-500'});98            browserPool.freeBrowser(browser);99            Browser.create.resetHistory();100            const anotherBrowser = await browserPool.getBrowser({browserId: 'bro-id', sessionsId: '500-100'});101            assert.deepEqual(browser, anotherBrowser);102            assert.notCalled(Browser.create);103        });104        it('should not create a new browser if there is a free browser in a cache with same version', async () => {105            const browserPool = createPool();106            Browser.create.returns(stubBrowser({version: '1.1'}));107            const browser = await browserPool.getBrowser({108                browserId: 'bro-id', browserVersion: '1.1', sessionId: '100-500'109            });110            browserPool.freeBrowser(browser);111            Browser.create.resetHistory();112            const anotherBrowser = await browserPool.getBrowser({113                browserId: 'bro-id', browserVersion: '1.1', sessionId: '500-100'114            });115            assert.deepEqual(browser, anotherBrowser);116            assert.notCalled(Browser.create);117        });118        it('should reinit a given session to a free browser in a cache', async () => {119            const browserPool = createPool();120            Browser.create.returns(stubBrowser());121            const browser = await browserPool.getBrowser({122                browserId: 'bro-id',123                sessionId: '100-500',124                sessionOpts: {foo: 'bar'}125            });126            browserPool.freeBrowser(browser);127            const anotherBrowser = await browserPool.getBrowser({128                browserId: 'bro-id',129                sessionId: '500-100',130                sessionOpts: {bar: 'foo'}131            });132            assert.calledOnceWith(anotherBrowser.reinit, '500-100', {bar: 'foo'});133        });134        it('should not emit "NEW_BROWSER" event on getting of a free browser from a cache', async () => {135            const emitter = new EventEmitter();136            const onNewBrowser = sandbox.spy().named('onNewBrowser');137            const browserPool = createPool({emitter});138            Browser.create.returns(stubBrowser());139            emitter.on(RunnerEvents.NEW_BROWSER, onNewBrowser);140            const browser = await browserPool.getBrowser({browserId: 'bro-id'});141            browserPool.freeBrowser(browser);142            onNewBrowser.reset();143            await browserPool.getBrowser({browserId: 'bro-id'});144            assert.notCalled(onNewBrowser);145        });146        describe('getting of browser fails', () => {147            beforeEach(() => {148                sandbox.spy(BrowserPool.prototype, 'freeBrowser');149            });150            it('should be rejected if instance of browser was not created', () => {151                Browser.create.throws(new Error('foo bar'));152                return assert.isRejected(createPool().getBrowser({}), /foo bar/);153            });154            describe('init fails', () => {155                const stubBrowserWhichRejectsOnInit = (params = {}) => {156                    const browser = stubBrowser(params);157                    Browser.create.returns(browser);158                    browser.init.rejects();159                    return browser;160                };161                it('should mark browser as broken', async () => {162                    const browser = stubBrowserWhichRejectsOnInit({id: 'bro-id'});163                    await createPool().getBrowser({browserId: 'bro-id'}).catch((e) => e);164                    assert.calledOnceWith(browser.markAsBroken);165                });166                it('should extend browser with session id', async () => {167                    const browser = stubBrowserWhichRejectsOnInit({id: 'bro-id'});168                    await createPool().getBrowser({browserId: 'bro-id', sessionId: '100500'}).catch((e) => e);169                    assert.equal(browser.sessionId, '100500');170                });171                it('should extend browser with session id and browser version', async () => {172                    const browser = stubBrowserWhichRejectsOnInit({id: 'bro-id', version: '10.1'});173                    await createPool()174                        .getBrowser({browserId: 'bro-id', browserVersion: '10.1', sessionId: '100500'})175                        .catch((e) => e);176                    assert.equal(browser.version, '10.1');177                });178                it('should free browser', async () => {179                    const browser = stubBrowserWhichRejectsOnInit({id: 'bro-id'});180                    await createPool().getBrowser({browserId: 'bro-id'}).catch((e) => e);181                    assert.calledOnceWith(BrowserPool.prototype.freeBrowser, browser);182                });183                it('should free browser after marking browser as broken', async () => {184                    const browser = stubBrowserWhichRejectsOnInit({id: 'bro-id'});185                    await createPool().getBrowser({browserId: 'bro-id'}).catch((e) => e);186                    assert.callOrder(browser.markAsBroken, BrowserPool.prototype.freeBrowser);187                });188                it('should be rejected with error extended by browser meta', async () => {189                    stubBrowserWhichRejectsOnInit({id: 'bro-id', meta: {foo: 'bar'}});190                    const error = await createPool().getBrowser({browserId: 'bro-id'}).catch((e) => e);191                    assert.deepEqual(error.meta, {foo: 'bar'});192                });193            });194            describe('reinit fails', () => {195                const stubBrowserWhichRejectsOnReinit = (params = {}) => {196                    const browser = stubBrowser(params);197                    Browser.create.returns(browser);198                    browser.reinit.rejects();199                    return browser;200                };201                it('should mark browser as broken', async () => {202                    const browser = stubBrowserWhichRejectsOnReinit({id: 'bro-id'});203                    const browserPool = createPool();204                    await browserPool.getBrowser({browserId: 'bro-id'});205                    await browserPool.freeBrowser(browser);206                    await browserPool.getBrowser({browserId: 'bro-id'}).catch((e) => e);207                    assert.calledOnce(browser.markAsBroken);208                });209                it('should extend browser with session id', async () => {210                    const browser = stubBrowserWhichRejectsOnReinit({id: 'bro-id'});211                    const browserPool = createPool();212                    await browserPool.getBrowser({browserId: 'bro-id'});213                    await browserPool.freeBrowser(browser);214                    await browserPool.getBrowser({browserId: 'bro-id', sessionId: '100500'}).catch((e) => e);215                    assert.equal(browser.sessionId, '100500');216                });217                it('should free browser', async () => {218                    const browser = stubBrowserWhichRejectsOnReinit({id: 'bro-id'});219                    const browserPool = createPool();220                    await browserPool.getBrowser({browserId: 'bro-id'});221                    await browserPool.freeBrowser(browser);222                    browserPool.freeBrowser.resetHistory();223                    await browserPool.getBrowser({browserId: 'bro-id'}).catch((e) => e);224                    assert.calledOnceWith(browserPool.freeBrowser, browser);225                });226                it('should free browser after marking browser as broken', async () => {227                    const browser = stubBrowserWhichRejectsOnReinit({id: 'bro-id'});228                    const browserPool = createPool();229                    await browserPool.getBrowser({browserId: 'bro-id'});230                    await browserPool.freeBrowser(browser);231                    browserPool.freeBrowser.resetHistory();232                    await browserPool.getBrowser({browserId: 'bro-id'}).catch((e) => e);233                    assert.callOrder(browser.markAsBroken, browserPool.freeBrowser);234                });235                it('should be rejected with error extended by browser meta', async () => {236                    const browser = stubBrowserWhichRejectsOnReinit({id: 'bro-id', meta: {foo: 'bar'}});237                    const browserPool = createPool();238                    await browserPool.getBrowser({browserId: 'bro-id'});239                    await browserPool.freeBrowser(browser);240                    const error = await browserPool.getBrowser({browserId: 'bro-id'}).catch((e) => e);241                    assert.deepEqual(error.meta, {foo: 'bar'});242                });243            });244        });245    });246    describe('freeBrowser', () => {247        it('should create a new browser if there is a broken browser in a cache', async () => {248            const browserPool = createPool();249            Browser.create.returns(stubBrowser({id: 'bro-id', state: {isBroken: true}}));250            const browser = await browserPool.getBrowser({browserId: 'bro-id'});251            browserPool.freeBrowser(browser);252            Browser.create.resetHistory();253            await browserPool.getBrowser({browserId: 'bro-id'});254            assert.calledOnce(Browser.create);255        });256        it('should set session id to "null"', async () => {257            const browserPool = createPool();258            Browser.create.returns(stubBrowser());259            const browser = await browserPool.getBrowser({browserId: 'bro-id'});260            browserPool.freeBrowser(browser);261            assert.calledOnce(browser.quit);262        });263        it('should send test related freeBrowser event on browser release', async () => {264            createPool().freeBrowser(stubBrowser({sessionId: '100500', state: {foo: 'bar'}}));265            assert.calledOnceWith(ipc.emit, 'worker.100500.freeBrowser', {foo: 'bar'});266        });267    });...

Full Screen

Full Screen

limited-pool.js

Source:limited-pool.js Github

copy

Full Screen

...11        {limit, isSpecificBrowserLimiter, logNamespace: 'hermione'}12    );13    beforeEach(() => {14        underlyingPool = {15            getBrowser: sinon.stub().callsFake((id) => Promise.resolve(stubBrowser(id))),16            freeBrowser: sinon.stub().returns(Promise.resolve()),17            cancel: sinon.stub()18        };19    });20    afterEach(() => sandbox.restore());21    describe('getBrowser', () => {22        it('should request browser from underlying pool', async () => {23            const browser = stubBrowser('bro');24            underlyingPool.getBrowser.returns(Promise.resolve(browser));25            const bro = await makePool_().getBrowser('bro');26            assert.equal(bro, browser);27        });28        it('should pass opts to underlying pool', async () => {29            const browser = stubBrowser('bro');30            underlyingPool.getBrowser.returns(Promise.resolve(browser));31            await makePool_().getBrowser('bro', {some: 'opt'});32            assert.calledOnceWith(underlyingPool.getBrowser, 'bro', {some: 'opt'});33        });34    });35    describe('freeBrowser', () => {36        it('should correctly pass params to an underlying pool to be able to force free', async () => {37            const pool = makePool_({limit: 1});38            const browser = stubBrowser('bro');39            underlyingPool.getBrowser.returns(Promise.resolve(browser));40            pool.getBrowser('bro');41            pool.getBrowser('bro', {version: '10.1'});42            await pool.freeBrowser(browser);43            assert.calledOnceWith(underlyingPool.freeBrowser, browser, sinon.match({44                compositeIdForNextRequest: 'bro.10.1',45                hasFreeSlots: false46            }));47        });48        it('should handle case if there is no next item in queue', async () => {49            const pool = makePool_({limit: 1});50            const browser = stubBrowser('bro');51            underlyingPool.getBrowser.returns(Promise.resolve(browser));52            pool.getBrowser('bro');53            await pool.freeBrowser(browser);54            assert.calledOnceWith(underlyingPool.freeBrowser, browser, sinon.match({55                compositeIdForNextRequest: undefined56            }));57        });58    });59    describe('should return browser to underlying pool', () => {60        let browser;61        let pool;62        beforeEach(() => {63            browser = stubBrowser();64            pool = makePool_();65            underlyingPool.getBrowser.returns(Promise.resolve(browser));66        });67        it('when freed', () => {68            return pool.freeBrowser(browser)69                .then(() => assert.calledWith(underlyingPool.freeBrowser, browser));70        });71        it('for release with force if there are no more requests in specific browser limiter', () => {72            pool = makePool_({isSpecificBrowserLimiter: true});73            return pool.getBrowser('first')74                .then(() => pool.freeBrowser(browser))75                .then(() => assert.calledWith(underlyingPool.freeBrowser, browser, sinon.match({force: true})));76        });77        it('for release without force if there are no more requests in all browser limiter', () => {78            pool = makePool_({isSpecificBrowserLimiter: false});79            return pool.getBrowser('first')80                .then(() => pool.freeBrowser(browser))81                .then(() => assert.calledWith(underlyingPool.freeBrowser, browser, sinon.match({force: false})));82        });83        it('for caching if there is at least one pending request', () => {84            return pool.getBrowser('first')85                .then(() => {86                    pool.getBrowser('second');87                    return pool.freeBrowser(browser);88                })89                .then(() => assert.calledWith(underlyingPool.freeBrowser, browser, sinon.match({force: false})));90        });91        it('for release if there are pending requests but forced to free', () => {92            return pool.getBrowser('first')93                .then(() => {94                    pool.getBrowser('second');95                    return pool.freeBrowser(browser, {force: true});96                })97                .then(() => assert.calledWith(underlyingPool.freeBrowser, browser, sinon.match({force: true})));98        });99        it('for caching if there are pending requests', () => {100            return pool.getBrowser('first')101                .then(() => {102                    pool.getBrowser('second');103                    pool.getBrowser('third');104                    return pool.freeBrowser(browser);105                })106                .then(() => assert.calledWith(underlyingPool.freeBrowser, browser, sinon.match({force: false})));107        });108        it('taking into account number of failed browser requests', () => {109            const browser = stubBrowser();110            const pool = makePool_({limit: 2});111            underlyingPool.getBrowser112                .withArgs('first').returns(Promise.resolve(browser))113                .withArgs('second').returns(Promise.reject());114            return Promise115                .all([116                    pool.getBrowser('first'),117                    pool.getBrowser('second').reflect()118                ])119                .then(() => pool.freeBrowser(browser))120                .then(() => assert.calledWith(underlyingPool.freeBrowser, browser, sinon.match({force: true})));121        });122    });123    it('should launch next request from queue on fail to receive browser from underlying pool', () => {124        const browser = stubBrowser();125        const pool = makePool_();126        underlyingPool.getBrowser.onFirstCall().returns(Promise.reject());127        underlyingPool.getBrowser.onSecondCall().returns(Promise.resolve(browser));128        pool.getBrowser('bro').catch(() => {});129        assert.eventually.equal(pool.getBrowser('bro'), browser);130    });131    describe('limit', () => {132        it('should launch all browser in limit', () => {133            underlyingPool.getBrowser134                .withArgs('first').returns(Promise.resolve(stubBrowser()))135                .withArgs('second').returns(Promise.resolve(stubBrowser()));136            const pool = makePool_({limit: 2});137            return Promise.all([pool.getBrowser('first'), pool.getBrowser('second')])138                .then(() => {139                    assert.calledTwice(underlyingPool.getBrowser);140                    assert.calledWith(underlyingPool.getBrowser, 'first');141                    assert.calledWith(underlyingPool.getBrowser, 'second');142                });143        });144        it('should not launch browsers out of limit', () => {145            underlyingPool.getBrowser.returns(Promise.resolve(stubBrowser()));146            const pool = makePool_({limit: 1});147            const result = pool.getBrowser('first')148                .then(() => pool.getBrowser('second').timeout(100, 'timeout'));149            return assert.isRejected(result, /timeout$/);150        });151        it('should launch next browser after previous is released', () => {152            const expectedBrowser = stubBrowser();153            const pool = makePool_({limit: 1});154            underlyingPool.getBrowser155                .withArgs('first').returns(Promise.resolve(stubBrowser()))156                .withArgs('second').returns(Promise.resolve(expectedBrowser));157            const result = pool.getBrowser('first')158                .then((browser) => pool.freeBrowser(browser))159                .then(() => pool.getBrowser('second'));160            return assert.eventually.equal(result, expectedBrowser);161        });162        it('should launch queued browser when previous is released', () => {163            const expectedBrowser = stubBrowser();164            const pool = makePool_({limit: 1});165            underlyingPool.getBrowser166                .withArgs('first').returns(Promise.resolve(stubBrowser()))167                .withArgs('second').returns(Promise.resolve(expectedBrowser));168            const result = pool.getBrowser('first')169                .then((browser) => {170                    const secondPromise = pool.getBrowser('second');171                    return Promise.delay(100)172                        .then(() => pool.freeBrowser(browser))173                        .then(() => secondPromise);174                });175            return assert.eventually.equal(result, expectedBrowser);176        });177        it('should perform high priority request first', async () => {178            const firstBrowserRequest = underlyingPool.getBrowser.withArgs('first').named('firstRequest');179            const secondBrowserRequest = underlyingPool.getBrowser.withArgs('second').named('secondRequest');180            const thirdBrowserRequest = underlyingPool.getBrowser.withArgs('third').named('thirdRequest');181            const pool = makePool_({limit: 1});182            const free_ = (bro) => pool.freeBrowser(bro);183            await Promise.all([184                pool.getBrowser('first').then(free_),185                pool.getBrowser('second').then(free_),186                pool.getBrowser('third', {highPriority: true}).then(free_)187            ]);188            assert.callOrder(189                firstBrowserRequest,190                thirdBrowserRequest,191                secondBrowserRequest192            );193        });194        it('should launch next browsers if free failed', () => {195            const expectedBrowser = stubBrowser();196            const pool = makePool_({limit: 1});197            underlyingPool.getBrowser198                .withArgs('first').returns(Promise.resolve(stubBrowser()))199                .withArgs('second').returns(Promise.resolve(expectedBrowser));200            underlyingPool.freeBrowser.callsFake(() => Promise.reject());201            return pool.getBrowser('first')202                .then((browser) => {203                    const secondPromise = pool.getBrowser('second');204                    return Promise.delay(100)205                        .then(() => pool.freeBrowser(browser))206                        .catch(() => secondPromise);207                })208                .then((browser) => assert.equal(browser, expectedBrowser));209        });210        it('should not wait for queued browser to start after release browser', () => {211            const pool = makePool_({limit: 1});212            const afterFree = sinon.spy().named('afterFree');213            const afterSecondGet = sinon.spy().named('afterSecondGet');214            underlyingPool.getBrowser215                .withArgs('first').returns(Promise.resolve(stubBrowser()))216                .withArgs('second').returns(Promise.resolve());217            return pool.getBrowser('first')218                .then((browser) => {219                    const freeFirstBrowser = Promise.delay(100)220                        .then(() => pool.freeBrowser(browser))221                        .then(afterFree);222                    const getSecondBrowser = pool.getBrowser('second')223                        .then(afterSecondGet);224                    return Promise.all([getSecondBrowser, freeFirstBrowser])225                        .then(() => assert.callOrder(afterFree, afterSecondGet));226                });227        });228        it('should reject the queued call when underlying pool rejects the request', () => {229            const pool = makePool_({limit: 1});...

Full Screen

Full Screen

caching-pool.js

Source:caching-pool.js Github

copy

Full Screen

...19    };20    const makePool_ = () => poolWithReuseLimits_({bro: Infinity});21    beforeEach(() => {22        underlyingPool = {23            getBrowser: sinon.stub().callsFake((id, opts) => Promise.resolve(stubBrowser(id, opts.version))),24            freeBrowser: sinon.stub().returns(Promise.resolve()),25            finalizeBrowsers: sinon.stub().returns(Promise.resolve()),26            cancel: sinon.stub()27        };28    });29    afterEach(() => sandbox.restore());30    describe('based on browser id only', () => {31        createCommonTestCases();32    });33    describe('based on both browser id and version', () => {34        createCommonTestCases({version: 1.0});35    });36    function createCommonTestCases(opts = {}) {37        it('should create new browser when requested first time', () => {38            const pool = makePool_();39            return pool.getBrowser('bro', opts)40                .then(() => {41                    assert.calledOnceWith(underlyingPool.getBrowser, 'bro', opts);42                });43        });44        it('should return same browser as returned by underlying pool', () => {45            const browser = stubBrowser('bro');46            underlyingPool.getBrowser.withArgs('bro', opts).returns(Promise.resolve(browser));47            return makePool_()48                .getBrowser('bro', opts)49                .then((bro) => assert.equal(bro, browser));50        });51        it('should not reset new browser', () => {52            const browser = stubBrowser();53            underlyingPool.getBrowser.withArgs('bro', opts).returns(Promise.resolve(browser));54            return makePool_()55                .getBrowser('bro', opts)56                .then(() => assert.notCalled(browser.reset));57        });58        it('should create and launch new browser if there is free browser with different id', () => {59            underlyingPool.getBrowser60                .withArgs('first').returns(Promise.resolve(stubBrowser('first', opts.version)))61                .withArgs('second').returns(Promise.resolve(stubBrowser('second', opts.version)));62            const pool = poolWithReuseLimits_({63                first: 1,64                second: 165            });66            return pool.getBrowser('first', opts)67                .then((browser) => pool.freeBrowser(browser))68                .then(() => pool.getBrowser('second', opts))69                .then(() => assert.calledWith(underlyingPool.getBrowser, 'second', opts));70        });71        it('should not quit browser when freed', () => {72            underlyingPool.getBrowser.withArgs('bro', opts)73                .returns(Promise.resolve(stubBrowser('bro', opts.version)));74            const pool = makePool_();75            return pool.getBrowser('bro', opts)76                .then((browser) => pool.freeBrowser(browser, {force: false}))77                .then(() => assert.notCalled(underlyingPool.freeBrowser));78        });79        it('should quit browser when there are no more requests', () => {80            underlyingPool.getBrowser.withArgs('bro', opts)81                .returns(Promise.resolve(stubBrowser('bro', opts.version)));82            const pool = makePool_();83            return pool.getBrowser('bro', opts)84                .then((browser) => pool.freeBrowser(browser, {force: true}))85                .then(() => assert.calledOnce(underlyingPool.freeBrowser));86        });87        describe('when there is free browser with the same id', () => {88            let browser, pool;89            beforeEach(() => {90                browser = stubBrowser('bro', opts.version);91                pool = makePool_();92                pool.getBrowser('bro', opts);93                underlyingPool.getBrowser.reset();94                return pool.freeBrowser(browser);95            });96            it('should not create second instance', () => {97                return pool.getBrowser('bro', opts)98                    .then(() => assert.notCalled(underlyingPool.getBrowser));99            });100            it('should reset the browser', () => {101                return pool.getBrowser('bro', opts)102                    .then(() => assert.calledOnce(browser.reset));103            });104            describe('when reset failed', () => {105                it('should fail to get browser', () => {106                    browser.reset.returns(Promise.reject('some-error'));107                    return assert.isRejected(pool.getBrowser('bro', opts), /some-error/);108                });109                it('should put browser back', () => {110                    browser.reset.returns(Promise.reject());111                    return pool.getBrowser('bro', opts)112                        .catch(() => {113                            assert.calledOnce(underlyingPool.freeBrowser);114                            assert.calledWith(underlyingPool.freeBrowser, browser);115                        });116                });117                it('should keep original error if failed to put browser back', () => {118                    browser.reset.returns(Promise.reject('reset-error'));119                    underlyingPool.freeBrowser.returns(Promise.reject('free-error'));120                    return assert.isRejected(pool.getBrowser('bro', opts), /reset-error/);121                });122            });123        });124        describe('when there are multiple browsers with same id', () => {125            let firstBrowser, secondBrowser, pool;126            beforeEach(() => {127                firstBrowser = stubBrowser('bro', opts.version);128                secondBrowser = stubBrowser('bro', opts.version);129                pool = makePool_();130                pool.getBrowser('bro', opts);131                return Promise.all([132                    pool.freeBrowser(firstBrowser),133                    pool.freeBrowser(secondBrowser)134                ]);135            });136            it('should return last browser in cache on first getBrowser', () => {137                return assert.becomes(pool.getBrowser('bro', opts), secondBrowser);138            });139            it('should return first browser on second getBrowser', () => {140                return pool.getBrowser('bro', opts)141                    .then(() => assert.becomes(pool.getBrowser('bro', opts), firstBrowser));142            });143            it('should launch new session when there are no free browsers left', () => {144                return pool.getBrowser('bro', opts)145                    .then(() => pool.getBrowser('bro', opts))146                    .then(() => pool.getBrowser('bro', opts))147                    .then(() => assert.calledWith(underlyingPool.getBrowser, 'bro', opts));148            });149        });150        describe('when there is reuse limit', () => {151            const launchAndFree_ = (pool, id) => {152                return pool.getBrowser(id, opts)153                    .then((browser) => pool.freeBrowser(browser));154            };155            it('should launch only one session within the reuse limit', () => {156                underlyingPool.getBrowser.returns(Promise.resolve(stubBrowser('bro', opts.version)));157                const pool = poolWithReuseLimits_({bro: 2});158                return launchAndFree_(pool, 'bro')159                    .then(() => pool.getBrowser('bro', opts))160                    .then(() => assert.calledOnce(underlyingPool.getBrowser));161            });162            it('should launch next session when over reuse limit', () => {163                underlyingPool.getBrowser164                    .onFirstCall().returns(Promise.resolve(stubBrowser('bro', opts.version)))165                    .onSecondCall().returns(Promise.resolve(stubBrowser('bro', opts.version)));166                const pool = poolWithReuseLimits_({bro: 2});167                return launchAndFree_(pool, 'bro')168                    .then(() => launchAndFree_(pool, 'bro'))169                    .then(() => pool.getBrowser('bro', opts))170                    .then(() => assert.calledTwice(underlyingPool.getBrowser));171            });172            it('should get new session for each suite if reuse limit equal 1', () => {173                underlyingPool.getBrowser174                    .onFirstCall().returns(Promise.resolve(stubBrowser('browserId', opts.version)))175                    .onSecondCall().returns(Promise.resolve(stubBrowser('browserId', opts.version)));176                const pool = poolWithReuseLimits_({browserId: 1});177                return launchAndFree_(pool, 'browserId')178                    .then(() => pool.getBrowser('browserId', opts))179                    .then(() => assert.calledTwice(underlyingPool.getBrowser));180            });181            it('should close old session when reached reuse limit', () => {182                const browser = stubBrowser('bro', opts.version);183                underlyingPool.getBrowser.returns(Promise.resolve(browser));184                const pool = poolWithReuseLimits_({bro: 2});185                return launchAndFree_(pool, 'bro')186                    .then(() => launchAndFree_(pool, 'bro'))187                    .then(() => assert.calledWith(underlyingPool.freeBrowser, browser));188            });189            it('should cache browser with different id even if the first one is over limit', () => {190                underlyingPool.getBrowser191                    .withArgs('first').returns(Promise.resolve(stubBrowser('first', opts.version)));192                const createSecondBrowser = underlyingPool.getBrowser.withArgs('second', opts);193                createSecondBrowser.returns(Promise.resolve(stubBrowser('second', opts.version)));194                const pool = poolWithReuseLimits_({195                    first: 2,196                    second: 2197                });198                return launchAndFree_(pool, 'first')199                    .then(() => launchAndFree_(pool, 'second'))200                    .then(() => launchAndFree_(pool, 'first'))201                    .then(() => pool.getBrowser('second', opts))202                    .then(() => assert.calledOnce(createSecondBrowser));203            });204        });205    }206    describe('freeBrowser', () => {207        it('should free if next test requires specific browser version and limit has reached', () => {208            const browser = stubBrowser('bro', '10.1');209            const pool = makePool_();210            const freeOpts = {211                compositeIdForNextRequest: buildCompositeBrowserId('bro', '10.1'),212                hasFreeSlots: false213            };214            return pool.freeBrowser(browser, freeOpts)215                .then(() => assert.calledOnce(underlyingPool.freeBrowser));216        });217        it('should NOT free if next test requires specific browser version and limit has NOT reached', () => {218            const browser = stubBrowser('bro', '10.1');219            const pool = makePool_();220            const freeOpts = {221                compositeIdForNextRequest: buildCompositeBrowserId('bro', '10.1'),222                hasFreeSlots: true223            };224            return pool.freeBrowser(browser, freeOpts)225                .then(() => assert.notCalled(underlyingPool.freeBrowser));226        });227        it('should NOT free if next test requires specific browser version and there is cache', () => {228            const pool = makePool_();229            const freeOpts = {230                compositeIdForNextRequest: buildCompositeBrowserId('bro', '10.1'),231                hasFreeSlots: false232            };...

Full Screen

Full Screen

basic-pool.js

Source:basic-pool.js Github

copy

Full Screen

...7describe('browser-pool/basic-pool', () => {8    const sandbox = sinon.sandbox.create();9    const stubBrowserManager_ = () => {10        return {11            create: sinon.stub().callsFake((id) => stubBrowser(id)),12            start: sinon.stub().returns(Promise.resolve()),13            onStart: sinon.stub().returns(Promise.resolve()),14            onQuit: sinon.stub().returns(Promise.resolve()),15            quit: sinon.stub().returns(Promise.resolve())16        };17    };18    const mkPool_ = (opts) => {19        opts = _.defaults(opts, {20            browserManager: stubBrowserManager_()21        });22        return BasicPool.create(opts.browserManager, {});23    };24    afterEach(() => sandbox.restore());25    it('should create new browser when requested', () => {26        const browserManager = stubBrowserManager_();27        const pool = mkPool_({browserManager});28        return pool.getBrowser('broId')29            .then(() => assert.calledWith(browserManager.create, 'broId'));30    });31    it('should create new browser with specified version when requested', () => {32        const browserManager = stubBrowserManager_();33        const pool = mkPool_({browserManager});34        return pool.getBrowser('broId', {version: '1.0'})35            .then(() => assert.calledWith(browserManager.create, 'broId', '1.0'));36    });37    it('should launch a browser', () => {38        const browser = stubBrowser();39        const browserManager = stubBrowserManager_();40        browserManager.create.returns(browser);41        const pool = mkPool_({browserManager});42        return pool.getBrowser()43            .then(() => {44                assert.calledOnceWith(browserManager.start);45                assert.calledWith(browserManager.start, browser);46            });47    });48    it('should not finalize browser if failed to start it', async () => {49        const publicAPI = null;50        const browser = stubBrowser('some-id', 'some-version', publicAPI);51        const browserManager = stubBrowserManager_();52        browserManager.create.returns(browser);53        browserManager.start.rejects();54        const pool = mkPool_({browserManager});55        await assert.isRejected(pool.getBrowser());56        assert.notCalled(browserManager.quit);57    });58    it('should finalize browser if failed after start it', async () => {59        const publicAPI = {};60        const browser = stubBrowser('some-id', 'some-version', publicAPI);61        const browserManager = stubBrowserManager_();62        browserManager.create.returns(browser);63        browserManager.onStart.rejects();64        const pool = mkPool_({browserManager});65        await assert.isRejected(pool.getBrowser());66        assert.calledOnceWith(browserManager.quit, browser);67    });68    describe('onStart', () => {69        it('should be called after browser start', () => {70            const browser = stubBrowser();71            const browserManager = stubBrowserManager_();72            browserManager.create.returns(browser);73            const pool = mkPool_({browserManager});74            return pool.getBrowser()75                .then(() => {76                    assert.calledOnce(browserManager.onStart);77                    assert.calledWith(browserManager.onStart, browser);78                    assert.callOrder(browserManager.start, browserManager.onStart);79                });80        });81        it('handler should be waited by pool', () => {82            const browser = stubBrowser();83            const afterSessionStart = sinon.spy();84            const browserManager = stubBrowserManager_();85            browserManager.create.returns(browser);86            browserManager.onStart.callsFake(() => Promise.delay(10).then(afterSessionStart));87            const pool = mkPool_({browserManager});88            return pool.getBrowser()89                .then(() => assert.callOrder(afterSessionStart, browser.reset));90        });91        it('handler fail should fail browser request', () => {92            const browserManager = stubBrowserManager_();93            browserManager.onStart.returns(Promise.reject('some-error'));94            const pool = mkPool_({browserManager});95            return assert.isRejected(pool.getBrowser(), 'some-error');96        });97        it('on handler fail browser should be finalized', () => {98            const browser = stubBrowser();99            const browserManager = stubBrowserManager_();100            browserManager.create.returns(browser);101            browserManager.onStart.returns(Promise.reject());102            const pool = mkPool_({browserManager});103            return assert.isRejected(pool.getBrowser())104                .then(() => {105                    assert.calledOnce(browserManager.quit);106                    assert.calledWith(browserManager.quit, browser);107                });108        });109    });110    it('should quit a browser when freed', () => {111        const browser = stubBrowser();112        const browserManager = stubBrowserManager_();113        browserManager.create.returns(browser);114        const pool = mkPool_({browserManager});115        return pool.getBrowser()116            .then((browser) => pool.freeBrowser(browser))117            .then(() => {118                assert.calledOnce(browserManager.quit);119                assert.calledWith(browserManager.quit, browser);120            });121    });122    describe('onQuit', () => {123        it('should be emitted before browser quit', () => {124            const browser = stubBrowser();125            const browserManager = stubBrowserManager_();126            browserManager.create.returns(browser);127            const pool = mkPool_({browserManager});128            return pool.getBrowser()129                .then((browser) => pool.freeBrowser(browser))130                .then(() => {131                    assert.calledOnce(browserManager.onQuit);132                    assert.calledWith(browserManager.onQuit, browser);133                    assert.callOrder(browserManager.onQuit, browserManager.quit);134                });135        });136        it('handler should be waited before actual quit', () => {137            const beforeSessionQuit = sinon.spy();138            const browserManager = stubBrowserManager_();...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

...41                assert.deepEqual(getBrowserManager().create('bro'), {some: 'browser'});42            });43            it('should start a browser', () => {44                BrowserPool.create();45                const browser = stubBrowser();46                browser.init.resolves({session: 'id'});47                assert.becomes(getBrowserManager().start(browser), {session: 'id'});48            });49            _.forEach({onStart: Events.SESSION_START, onQuit: Events.SESSION_END}, (event, method) => {50                describe(`${method}`, () => {51                    it(`should emit browser event "${event}"`, () => {52                        const emitter = new AsyncEmitter();53                        const onEvent = sandbox.spy();54                        BrowserPool.create(null, emitter);55                        const BrowserManager = getBrowserManager();56                        emitter.on(event, onEvent);57                        const browser = stubBrowser({58                            id: 'bro',59                            sessionId: '100500',60                            publicAPI: {public: 'api'}61                        });62                        return BrowserManager[method](browser)63                            .then(() => assert.calledOnceWith(onEvent, {public: 'api'}, {browserId: 'bro', sessionId: '100500'}));64                    });65                    it('should wait all async listeners', () => {66                        const emitter = new AsyncEmitter();67                        const onEvent = sandbox.stub().callsFake(() => Promise.delay(1).then(() => ({foo: 'bar'})));68                        BrowserPool.create(null, emitter);69                        const BrowserManager = getBrowserManager();70                        emitter.on(event, onEvent);71                        return assert.becomes(BrowserManager[method](stubBrowser()), [{foo: 'bar'}]);72                    });73                });74            });75            it('should quit a browser', () => {76                const browser = stubBrowser();77                browser.quit.resolves({foo: 'bar'});78                BrowserPool.create();79                assert.becomes(getBrowserManager().quit(browser), {foo: 'bar'});80            });81        });82        describe('adapter config', () => {83            const getAdapterConfig = () => CoreBrowserPool.create.lastCall.args[1].config;84            it('should return config for a browser', () => {85                const configStub = makeConfigStub({86                    browsers: ['bro'],87                    sessionsPerBrowser: 777,88                    testsPerSession: 99989                });90                BrowserPool.create(configStub);...

Full Screen

Full Screen

browser-tabs.spec.js

Source:browser-tabs.spec.js Github

copy

Full Screen

...17      const tabId = 4218      const appId = 4719      const searchterm = 'searchterm'20      const sendMessage = sinon.stub().returns('foobar')21      stubBrowser({sendMessage})22      sendToTab(suggestion, tabId, appId, searchterm)23        .fork(t.fail, ret => {24          t.equals(ret, 'foobar', 'result of sendMessage returned')25          t.ok(26            sendMessage.calledWith(tabId, {appId, suggestion, searchterm}),27            'proper data sent'28          )29        })30    } catch (e) {31      console.error(e.stack)32      t.fail(e)33      t.end()34    }35  }36)37test(38  'UNIT => sendToTab(suggestion, tabId, appId) => noop on no suggestion', t => {39    t.plan(2)40    try {41      const suggestion = null42      const tabId = 4243      const appId = 4744      const sendMessage = sinon.stub().returns('foobar')45      stubBrowser({sendMessage})46      sendToTab(suggestion, tabId, appId)47        .fork(t.fail, ret => {48          t.equals(ret, undefined, 'returned undefined')49          t.ok(sendMessage.notCalled, 'no message sent')50        })51    } catch (e) {52      console.error(e.stack)53      t.fail(e)54      t.end()55    }56  }57)58test('UNIT => populateActiveTab() => returns active tab id', t => {59  t.plan(1)60  try {61    const rawTabInfo = [{id: 0}, {id: 1}]62    const query = sinon.stub()63      .withArgs({active: true, currentWindow: true})64      .returns(Promise.resolve(rawTabInfo))65    stubBrowser({query})66    populateActiveTab()67      .fork(t.fail, ret => {68        t.deepEquals(ret, {tabId: 0}, 'proper return and format')69      })70  } catch (e) {71    console.error(e.stack)72    t.fail(e)73    t.end()74  }...

Full Screen

Full Screen

browser.test.js

Source:browser.test.js Github

copy

Full Screen

...13    stub.restore()14  })15  it('should return true for browsers in whitelist', () => {16    SUPPORTED_BROWSERS_CODES.forEach((browser) => {17      stubBrowser(browser)18      expect(isBrowserSupported()).to.be.true19      stub.restore()20    })21  })22  it('should return false for non-whitelisted browsers', () => {23    stubBrowser('ie')24    expect(isBrowserSupported()).to.be.false25  })26  it('should return false for non-detected browsers', () => {27    stub = sinon28      .stub(DetectBrowser, 'detect')29      .callsFake(() => null)30    expect(isBrowserSupported()).to.be.false31  })...

Full Screen

Full Screen

puppeteerMock.js

Source:puppeteerMock.js Github

copy

Full Screen

1export const stubPuppeteer = {2    launch() {3        return Promise.resolve(stubBrowser);4    },5};6export const stubBrowser = {7    newPage() {8        return Promise.resolve(stubPage);9    },10    close() {11        return Promise.resolve();12    },13};14export const stubPage = {15    goto(url) {16        return Promise.resolve();17    },18    $$(selector) {19        return Promise.resolve([]);20    },21    $(selector) {22        return Promise.resolve(stubElementHandle);23    },24    $eval(selector, pageFunction) {25        return Promise.resolve();26    },27};28export const stubElementHandle = {29    $eval() {30        return Promise.resolve();31    },...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Visits the Kitchen Sink', function() {3        cy.stubBrowser();4    })5})6describe('My First Test', function() {7    it('Visits the Kitchen Sink', function() {8        cy.stubBrowser();9    })10})11describe('My First Test', function() {12    it('Visits the Kitchen Sink', function() {13        cy.stubBrowser();14    })15})16describe('My First Test', function() {17    it('Visits the Kitchen Sink', function() {18        cy.stubBrowser();19    })20})21describe('My First Test', function() {22    it('Visits the Kitchen Sink', function() {23        cy.stubBrowser();24    })25})26describe('My First Test', function() {27    it('Visits the Kitchen Sink', function() {28        cy.stubBrowser();29    })30})31describe('My First Test', function() {32    it('Visits the Kitchen Sink', function() {33        cy.stubBrowser();34    })35})36describe('My First Test', function() {37    it('Visits the Kitchen Sink', function() {38        cy.stubBrowser();39    })40})41describe('My First Test', function() {42    it('Visits the Kitchen Sink', function() {43        cy.stubBrowser();44    })45})46describe('My First Test', function() {47    it('Visits the Kitchen Sink', function() {48        cy.stubBrowser();49    })50})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe("test", () => {2  it("test", () => {3    cy.stubBrowser();4    cy.get(".home-list > :nth-child(1) > a").click();5    cy.get(".action-email").type("email");6    cy.get(".action-form").sub

Full Screen

Using AI Code Generation

copy

Full Screen

1import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'2stubBrowser()3import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'4stubBrowser()5import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'6stubBrowser()7import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'8stubBrowser()9import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'10stubBrowser()11import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'12stubBrowser()13import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'14stubBrowser()15import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'16stubBrowser()17import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'18stubBrowser()19import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'20stubBrowser()21import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'22stubBrowser()23import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'24stubBrowser()25import { stubBrowser } from 'cypress-browser-extension-plugin/stub-browser'26stubBrowser()27import { stubBrowser } from 'cypress-browser-extension-plugin/stub

Full Screen

Using AI Code Generation

copy

Full Screen

1cy.stubBrowser();2cy.stubBrowser({3});4cy.stubBrowser({5});6cy.stubBrowser({7});8cy.stubBrowser({9});10cy.stubBrowser({11});12cy.stubBrowser({13});14cy.stubBrowser({15});16cy.stubBrowser({

Full Screen

Using AI Code Generation

copy

Full Screen

1import { stubBrowser } from 'cypress-browser-stub';2describe('Test', () => {3  it('should stub browser', () => {4    stubBrowser('Chrome', '85.0.4183.83');5  });6});7describe('Test', () => {8  it('should access browser', () => {9    cy.log(cypress.browser.name);10    cy.log(cypress.browser.version);11  });12});13import { unstubBrowser } from 'cypress-browser-stub';14describe('Test', () => {15  it('should unstub browser', () => {16    unstubBrowser();17  });18});19describe('Test', () => {20  it('should stub browser', () => {21    cy.stubBrowser('Chrome', '85.0.4183.83');22  });23});24describe('Test', () => {25  it('should access browser', () => {26    cy.log(cy.browser().name);27    cy.log(cy.browser().version);28  });29});30describe('Test', () => {31  it('should unstub browser', () => {32    cy.unstubBrowser();33  });34});35[MIT](

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('stubbing the browser', () => {2  it('stubs the browser', () => {3    cy.stubBrowser()4  })5})6describe('stubbing the browser', () => {7  it('stubs the browser', () => {8    cy.stubBrowser()9  })10})11Cypress.Commands.add('stubBrowser', () => {12  cy.window().then((win) => {13    cy.stub(win, 'open').returns({14      focus: () => {},15      close: () => {},16    })17  })18})19Cypress.Commands.add('stubBrowser', () => {20  cy.window().then((win) => {21    cy.stub(win, 'open').returns({22      focus: () => {},23      close: () => {},24    })25  })26})27Cypress.Commands.add('stubBrowser', () => {28  cy.window().then((win) => {29    cy.stub(win, 'open').returns({30      focus: () => {},31      close: () => {},32    })33  })34})35Cypress.Commands.add('stubBrowser', () => {36  cy.window().then((win) => {37    cy.stub(win, 'open').returns({38      focus: () => {},39      close: () => {},40    })41  })42})43Cypress.Commands.add('stubBrowser', () => {44  cy.window().then((win) => {45    cy.stub(win, 'open').returns({46      focus: () => {},47      close: () => {},48    })49  })50})51Cypress.Commands.add('stubBrowser', () => {52  cy.window().then((win) => {53    cy.stub(win, 'open').returns({54      focus: () => {},55      close: () => {},56    })57  })58})59Cypress.Commands.add('stubBrowser', () => {60  cy.window().then((win) => {61    cy.stub(win, 'open').returns({62      focus: () => {},63      close: () => {},64    })65  })66})67Cypress.Commands.add('stubBrowser', () => {68  cy.window().then((win) => {69    cy.stub(win, 'open').returns({70      focus: () => {},71      close: () => {},72    })73  })74})75Cypress.Commands.add('stubBrowser', () => {76  cy.window().then((win) => {77    cy.stub(win, 'open').returns({78      focus: ()

Full Screen

Using AI Code Generation

copy

Full Screen

1import { stubBrowser } from "cypress-browser-geolocation";2describe("My First Test", () => {3  it("Visits the Kitchen Sink", () => {4    stubBrowser();5    cy.get(".tactile-searchbox-input").type("Mumbai");6    cy.get(".searchbox-searchbutton").click();7  });8});9{10}

Full Screen

Using AI Code Generation

copy

Full Screen

1import { stubBrowser } from '../support/commands'2describe('My First Test', function() {3  it('Does not do much!', function() {4    stubBrowser()5    cy.contains('type').click()6    cy.url().should('include', '/commands/actions')7    cy.get('.action-email')8      .type('

Full Screen

Using AI Code Generation

copy

Full Screen

1import { stubBrowser } from 'cypress-browser-extension-plugin/stubBrowser'2import { Geolocation } from 'webextension-polyfill-ts'3const coords = { latitude: 40.7128, longitude: -74.0060 }4stubBrowser(Geolocation, 'getCurrentPosition', (success) => {5  const position = { coords }6  success(position)7})8import { stubBrowser } from 'cypress-browser-extension-plugin/stubBrowser'9import { Geolocation } from 'webextension-polyfill-ts'10const coords = { latitude: 40.7128, longitude: -74.0060 }11const stub = stubBrowser(Geolocation, 'getCurrentPosition', (success) => {12  const position = { coords }13  success(position)14})15cy.wrap(stub).should('have.been.calledOnce')

Full Screen

Cypress Tutorial

Cypress is a renowned Javascript-based open-source, easy-to-use end-to-end testing framework primarily used for testing web applications. Cypress is a relatively new player in the automation testing space and has been gaining much traction lately, as evidenced by the number of Forks (2.7K) and Stars (42.1K) for the project. LambdaTest’s Cypress Tutorial covers step-by-step guides that will help you learn from the basics till you run automation tests on LambdaTest.

Chapters:

  1. What is Cypress? -
  2. Why Cypress? - Learn why Cypress might be a good choice for testing your web applications.
  3. Features of Cypress Testing - Learn about features that make Cypress a powerful and flexible tool for testing web applications.
  4. Cypress Drawbacks - Although Cypress has many strengths, it has a few limitations that you should be aware of.
  5. Cypress Architecture - Learn more about Cypress architecture and how it is designed to be run directly in the browser, i.e., it does not have any additional servers.
  6. Browsers Supported by Cypress - Cypress is built on top of the Electron browser, supporting all modern web browsers. Learn browsers that support Cypress.
  7. Selenium vs Cypress: A Detailed Comparison - Compare and explore some key differences in terms of their design and features.
  8. Cypress Learning: Best Practices - Take a deep dive into some of the best practices you should use to avoid anti-patterns in your automation tests.
  9. How To Run Cypress Tests on LambdaTest? - Set up a LambdaTest account, and now you are all set to learn how to run Cypress tests.

Certification

You can elevate your expertise with end-to-end testing using the Cypress automation framework and stay one step ahead in your career by earning a Cypress certification. Check out our Cypress 101 Certification.

YouTube

Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.

Run Cypress 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