Best JavaScript code snippet using cypress
socket-base.js
Source:socket-base.js
1"use strict";2Object.defineProperty(exports, "__esModule", { value: true });3exports.SocketBase = void 0;4const tslib_1 = require("tslib");5const bluebird_1 = (0, tslib_1.__importDefault)(require("bluebird"));6const debug_1 = (0, tslib_1.__importDefault)(require("debug"));7const lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));8const net_stubbing_1 = require("../../net-stubbing");9const socketIo = (0, tslib_1.__importStar)(require("../../socket"));10const firefox_util_1 = (0, tslib_1.__importDefault)(require("./browsers/firefox-util"));11const errors_1 = (0, tslib_1.__importDefault)(require("./errors"));12const exec_1 = (0, tslib_1.__importDefault)(require("./exec"));13const files_1 = (0, tslib_1.__importDefault)(require("./files"));14const fixture_1 = (0, tslib_1.__importDefault)(require("./fixture"));15const task_1 = (0, tslib_1.__importDefault)(require("./task"));16const class_helpers_1 = require("./util/class-helpers");17const editors_1 = require("./util/editors");18const file_opener_1 = require("./util/file-opener");19const open_1 = (0, tslib_1.__importDefault)(require("./util/open"));20const session = (0, tslib_1.__importStar)(require("./session"));21const runnerEvents = [22 'reporter:restart:test:run',23 'runnables:ready',24 'run:start',25 'test:before:run:async',26 'reporter:log:add',27 'reporter:log:state:changed',28 'paused',29 'test:after:hooks',30 'run:end',31];32const reporterEvents = [33 // "go:to:file"34 'runner:restart',35 'runner:abort',36 'runner:console:log',37 'runner:console:error',38 'runner:show:snapshot',39 'runner:hide:snapshot',40 'reporter:restarted',41];42const debug = (0, debug_1.default)('cypress:server:socket-base');43const retry = (fn) => {44 return bluebird_1.default.delay(25).then(fn);45};46class SocketBase {47 constructor(config) {48 this.ensureProp = class_helpers_1.ensureProp;49 this.ended = false;50 this.testsDir = null;51 }52 get io() {53 return this.ensureProp(this._io, 'startListening');54 }55 toReporter(event, data) {56 return this.io && this.io.to('reporter').emit(event, data);57 }58 toRunner(event, data) {59 return this.io && this.io.to('runner').emit(event, data);60 }61 isSocketConnected(socket) {62 return socket && socket.connected;63 }64 toDriver(event, ...data) {65 return this.io && this.io.emit(event, ...data);66 }67 onAutomation(socket, message, data, id) {68 // instead of throwing immediately here perhaps we need69 // to make this more resilient by automatically retrying70 // up to 1 second in the case where our automation room71 // is empty. that would give padding for reconnections72 // to automatically happen.73 // for instance when socket.io detects a disconnect74 // does it immediately remove the member from the room?75 // YES it does per http://socket.io/docs/rooms-and-namespaces/#disconnection76 if (this.isSocketConnected(socket)) {77 return socket.emit('automation:request', id, message, data);78 }79 throw new Error(`Could not process '${message}'. No automation clients connected.`);80 }81 createIo(server, path, cookie) {82 return new socketIo.SocketIOServer(server, {83 path,84 cookie: {85 name: cookie,86 },87 destroyUpgrade: false,88 serveClient: false,89 transports: ['websocket'],90 });91 }92 startListening(server, automation, config, options, callbacks) {93 let existingState = null;94 lodash_1.default.defaults(options, {95 socketId: null,96 onResetServerState() { },97 onTestsReceivedAndMaybeRecord() { },98 onMocha() { },99 onConnect() { },100 onRequest() { },101 onResolveUrl() { },102 onFocusTests() { },103 onSpecChanged() { },104 onChromiumRun() { },105 onReloadBrowser() { },106 checkForAppErrors() { },107 onSavedStateChanged() { },108 onTestFileChange() { },109 onCaptureVideoFrames() { },110 });111 let automationClient;112 const { socketIoRoute, socketIoCookie } = config;113 this._io = this.createIo(server, socketIoRoute, socketIoCookie);114 automation.use({115 onPush: (message, data) => {116 return this.io.emit('automation:push:message', message, data);117 },118 });119 const resetRenderedHTMLOrigins = () => {120 const origins = options.getRenderedHTMLOrigins();121 Object.keys(origins).forEach((key) => delete origins[key]);122 };123 const onAutomationClientRequestCallback = (message, data, id) => {124 return this.onAutomation(automationClient, message, data, id);125 };126 const automationRequest = (message, data) => {127 return automation.request(message, data, onAutomationClientRequestCallback);128 };129 const getFixture = (path, opts) => fixture_1.default.get(config.fixturesFolder, path, opts);130 this.io.on('connection', (socket) => {131 var _a, _b;132 debug('socket connected');133 // cache the headers so we can access134 // them at any time135 const headers = (_b = (_a = socket.request) === null || _a === void 0 ? void 0 : _a.headers) !== null && _b !== void 0 ? _b : {};136 socket.on('automation:client:connected', () => {137 if (automationClient === socket) {138 return;139 }140 automationClient = socket;141 debug('automation:client connected');142 // if our automation disconnects then we're143 // in trouble and should probably bomb everything144 automationClient.on('disconnect', () => {145 // if we've stopped then don't do anything146 if (this.ended) {147 return;148 }149 // if we are in headless mode then log out an error and maybe exit with process.exit(1)?150 return bluebird_1.default.delay(2000)151 .then(() => {152 // bail if we've swapped to a new automationClient153 if (automationClient !== socket) {154 return;155 }156 // give ourselves about 2000ms to reconnect157 // and if we're connected its all good158 if (automationClient.connected) {159 return;160 }161 // TODO: if all of our clients have also disconnected162 // then don't warn anything163 errors_1.default.warning('AUTOMATION_SERVER_DISCONNECTED');164 // TODO: no longer emit this, just close the browser and display message in reporter165 return this.io.emit('automation:disconnected');166 });167 });168 socket.on('automation:push:request', (message, data, cb) => {169 automation.push(message, data);170 // just immediately callback because there171 // is not really an 'ack' here172 if (cb) {173 return cb();174 }175 });176 socket.on('automation:response', automation.response);177 });178 socket.on('automation:request', (message, data, cb) => {179 debug('automation:request %s %o', message, data);180 return automationRequest(message, data)181 .then((resp) => {182 return cb({ response: resp });183 }).catch((err) => {184 return cb({ error: errors_1.default.clone(err) });185 });186 });187 socket.on('reporter:connected', () => {188 if (socket.inReporterRoom) {189 return;190 }191 socket.inReporterRoom = true;192 return socket.join('reporter');193 });194 // TODO: what to do about reporter disconnections?195 socket.on('runner:connected', () => {196 if (socket.inRunnerRoom) {197 return;198 }199 socket.inRunnerRoom = true;200 return socket.join('runner');201 });202 // TODO: what to do about runner disconnections?203 socket.on('spec:changed', (spec) => {204 return options.onSpecChanged(spec);205 });206 socket.on('app:connect', (socketId) => {207 return options.onConnect(socketId, socket);208 });209 socket.on('set:runnables:and:maybe:record:tests', (runnables, cb) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {210 return options.onTestsReceivedAndMaybeRecord(runnables, cb);211 }));212 socket.on('mocha', (...args) => {213 return options.onMocha.apply(options, args);214 });215 socket.on('open:finder', (p, cb = function () { }) => {216 return open_1.default.opn(p)217 .then(() => {218 return cb();219 });220 });221 socket.on('recorder:frame', (data) => {222 return options.onCaptureVideoFrames(data);223 });224 socket.on('reload:browser', (url, browser) => {225 return options.onReloadBrowser(url, browser);226 });227 socket.on('focus:tests', () => {228 return options.onFocusTests();229 });230 socket.on('is:automation:client:connected', (data, cb) => {231 const isConnected = () => {232 return automationRequest('is:automation:client:connected', data);233 };234 const tryConnected = () => {235 return bluebird_1.default236 .try(isConnected)237 .catch(() => {238 return retry(tryConnected);239 });240 };241 // retry for up to data.timeout242 // or 1 second243 return bluebird_1.default244 .try(tryConnected)245 .timeout(data.timeout != null ? data.timeout : 1000)246 .then(() => {247 return cb(true);248 }).catch(bluebird_1.default.TimeoutError, (_err) => {249 return cb(false);250 });251 });252 socket.on('backend:request', (eventName, ...args) => {253 // cb is always the last argument254 const cb = args.pop();255 debug('backend:request %o', { eventName, args });256 const backendRequest = () => {257 switch (eventName) {258 case 'preserve:run:state':259 existingState = args[0];260 return null;261 case 'resolve:url': {262 const [url, resolveOpts] = args;263 return options.onResolveUrl(url, headers, automationRequest, resolveOpts);264 }265 case 'http:request':266 return options.onRequest(headers, automationRequest, args[0]);267 case 'reset:server:state':268 return options.onResetServerState();269 case 'log:memory:pressure':270 return firefox_util_1.default.log();271 case 'firefox:force:gc':272 return firefox_util_1.default.collectGarbage();273 case 'firefox:window:focus':274 return firefox_util_1.default.windowFocus();275 case 'get:fixture':276 return getFixture(args[0], args[1]);277 case 'read:file':278 return files_1.default.readFile(config.projectRoot, args[0], args[1]);279 case 'write:file':280 return files_1.default.writeFile(config.projectRoot, args[0], args[1], args[2]);281 case 'net':282 return (0, net_stubbing_1.onNetStubbingEvent)({283 eventName: args[0],284 frame: args[1],285 state: options.netStubbingState,286 socket: this,287 getFixture,288 args,289 });290 case 'exec':291 return exec_1.default.run(config.projectRoot, args[0]);292 case 'task':293 return task_1.default.run(config.pluginsFile, args[0]);294 case 'save:session':295 return session.saveSession(args[0]);296 case 'clear:session':297 return session.clearSessions();298 case 'get:session':299 return session.getSession(args[0]);300 case 'reset:session:state':301 session.clearSessions();302 resetRenderedHTMLOrigins();303 return;304 case 'get:rendered:html:origins':305 return options.getRenderedHTMLOrigins();306 case 'reset:rendered:html:origins': {307 resetRenderedHTMLOrigins();308 return;309 }310 default:311 throw new Error(`You requested a backend event we cannot handle: ${eventName}`);312 }313 };314 return bluebird_1.default.try(backendRequest)315 .then((resp) => {316 return cb({ response: resp });317 }).catch((err) => {318 return cb({ error: errors_1.default.clone(err) });319 });320 });321 socket.on('get:existing:run:state', (cb) => {322 const s = existingState;323 if (s) {324 existingState = null;325 return cb(s);326 }327 return cb();328 });329 socket.on('save:app:state', (state, cb) => {330 options.onSavedStateChanged(state);331 // we only use the 'ack' here in tests332 if (cb) {333 return cb();334 }335 });336 socket.on('external:open', (url) => {337 debug('received external:open %o', { url });338 // using this instead of require('electron').shell.openExternal339 // because CT runner does not spawn an electron shell340 // if we eventually decide to exclusively launch CT from341 // the desktop-gui electron shell, we should update this to use342 // electron.shell.openExternal.343 // cross platform way to open a new tab in default browser, or a new browser window344 // if one does not already exist for the user's default browser.345 const start = (process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open');346 return require('child_process').exec(`${start} ${url}`);347 });348 socket.on('get:user:editor', (cb) => {349 (0, editors_1.getUserEditor)(false)350 .then(cb);351 });352 socket.on('set:user:editor', (editor) => {353 (0, editors_1.setUserEditor)(editor);354 });355 socket.on('open:file', (fileDetails) => {356 (0, file_opener_1.openFile)(fileDetails);357 });358 reporterEvents.forEach((event) => {359 socket.on(event, (data) => {360 this.toRunner(event, data);361 });362 });363 runnerEvents.forEach((event) => {364 socket.on(event, (data) => {365 this.toReporter(event, data);366 });367 });368 callbacks.onSocketConnection(socket);369 });370 return this.io;371 }372 end() {373 this.ended = true;374 // TODO: we need an 'ack' from this end375 // event from the other side376 return this.io.emit('tests:finished');377 }378 changeToUrl(url) {379 return this.toRunner('change:to:url', url);380 }381 close() {382 return this.io.close();383 }384 sendSpecList(specs, testingType) {385 this.toRunner('specs:changed', { specs, testingType });386 }387}...
driver-events.js
Source:driver-events.js
...84 lodash_1.default.extend(ret, lodash_1.default.pick(options, types_1.PLAIN_FIELDS));85 return ret;86}87exports._restoreMatcherOptionsTypes = _restoreMatcherOptionsTypes;88function onNetStubbingEvent(opts) {89 return __awaiter(this, void 0, void 0, function* () {90 const { state, getFixture, args, eventName, frame } = opts;91 debug('received driver event %o', { eventName, args });92 switch (eventName) {93 case 'route:added':94 return onRouteAdded(state, getFixture, frame);95 case 'subscribe':96 return subscribe(state, frame);97 case 'event:handler:resolved':98 return intercepted_request_1.InterceptedRequest.resolveEventHandler(state, frame);99 case 'send:static:response':100 return sendStaticResponse(state, getFixture, frame);101 default:102 throw new Error(`Unrecognized net event: ${eventName}`);...
index.js
Source:index.js
1"use strict";2Object.defineProperty(exports, "__esModule", { value: true });3exports.netStubbingState = exports.getRouteForRequest = exports.InterceptResponse = exports.InterceptRequest = exports.InterceptError = exports.onNetStubbingEvent = void 0;4var driver_events_1 = require("./driver-events");5Object.defineProperty(exports, "onNetStubbingEvent", { enumerable: true, get: function () { return driver_events_1.onNetStubbingEvent; } });6var error_1 = require("./middleware/error");7Object.defineProperty(exports, "InterceptError", { enumerable: true, get: function () { return error_1.InterceptError; } });8var request_1 = require("./middleware/request");9Object.defineProperty(exports, "InterceptRequest", { enumerable: true, get: function () { return request_1.InterceptRequest; } });10var response_1 = require("./middleware/response");11Object.defineProperty(exports, "InterceptResponse", { enumerable: true, get: function () { return response_1.InterceptResponse; } });12var route_matching_1 = require("./route-matching");13Object.defineProperty(exports, "getRouteForRequest", { enumerable: true, get: function () { return route_matching_1.getRouteForRequest; } });14const state_1 = require("./state");...
Using AI Code Generation
1Cypress.on('window:before:load', (win) => {2 win.onNetStubbingEvent = (e) => {3 console.log(e);4 }5})6Cypress.on('window:before:load', (win) => {7 win.onNetStubbingEvent = (e) => {8 console.log(e);9 }10})11Cypress.on('window:before:load', (win) => {12 win.onNetStubbingEvent = (e) => {13 if (e.event === 'request:route:matched') {14 console.log(e.data)15 }16 }17})
Using AI Code Generation
1Cypress.on('net:stubbing:events', (events) => {2 events.forEach((event) => {3 if (event.event === 'route:added') {4 console.log(`Route added: ${route.alias}`)5 }6 })7})
Using AI Code Generation
1Cypress.on('net:stubbing:response', (req) => {2 if (req.response.body) {3 req.response.body = req.response.body.replace(4 }5})6Cypress.on('net:stubbing:request', (req) => {7 if (req.body) {8 req.body = req.body.replace(9 }10})11Cypress.on('net:stubbing:error', (req, err) => {12 console.log('Error', err)13})14Cypress.on('net:stubbing:warning', (req, err) => {15 console.log('Warning', err)16})17Cypress.on('net:stubbing:route:added', (route) => {18 console.log('Route added', route)19})20Cypress.on('net:stubbing:route:removed', (route) => {21 console.log('Route removed', route)22})23Cypress.on('net:stubbing:route:updated', (route) => {24 console.log('Route updated', route)25})26Cypress.on('net:stubbing:route:replaced', (
Using AI Code Generation
1Cypress.on('net:stubbing:event', (eventName, data) => {2 if (eventName === 'request:received') {3 console.log('Request received', data)4 }5})6Cypress.on('net:stubbing:event', (eventName, data) => {7 if (eventName === 'request:received') {8 console.log('Request received', data)9 }10})11Cypress.on('net:stubbing:event', (eventName, data) => {12 if (eventName === 'request:received') {13 console.log('Request received', data)14 }15})16Cypress.on('net:stubbing:event', (eventName, data) => {17 if (eventName === 'request:received') {18 console.log('Request received', data)19 }20})21Cypress.on('net:stubbing:event', (eventName, data) => {22 if (eventName === 'request:received') {23 console.log('Request received', data)24 }25})26Cypress.on('net:stubbing:event', (eventName, data) => {27 if (eventName === 'request:received') {28 console.log('Request received', data)29 }30})31Cypress.on('net:stubbing:event', (eventName, data) => {32 if (eventName === 'request:received') {33 console.log('Request received', data)34 }35})36Cypress.on('net:stubbing:event', (eventName, data) => {37 if (eventName === 'request:received') {38 console.log('Request received', data)39 }40})41Cypress.on('net:stubbing:event', (eventName, data) => {42 if (eventName === 'request:received') {43 console.log('Request received', data)44 }45})46Cypress.on('net:stubbing:event', (eventName, data) => {47 if (eventName ===
Using AI Code Generation
1cy.onNetStubbingEvent('cy.intercept', (interception) => {2})3cy.onNetStubbingEvent('cy.intercept', (interception) => {4})5cy.onNetStubbingEvent('cy.intercept', (interception) => {6})7cy.onNetStubbingEvent('cy.intercept', (interception) => {8})9cy.onNetStubbingEvent('cy.intercept', (interception) => {10})11cy.onNetStubbingEvent('cy.intercept', (interception) => {12})13cy.onNetStubbingEvent('cy.intercept', (interception) => {14})15cy.onNetStubbingEvent('cy.intercept', (interception) => {16})17cy.onNetStubbingEvent('cy.intercept', (interception) => {18})19cy.onNetStubbingEvent('cy.intercept', (interception) => {20})21cy.onNetStubbingEvent('cy.intercept', (interception) => {22})
Using AI Code Generation
1Cypress.on('net:stubbing:response', (req, res) => {2 console.log(req);3 console.log(res);4});5### `cy.intercept()`6 body: { title: 'foo', completed: false, userId: 1 },7});8### `cy.route2()`9 body: { title: 'foo', completed: false, userId: 1 },10});11### `cy.route()`12 body: { title: 'foo', completed: false, userId: 1 },13});14### `cy.server()`15cy.server();16### `cy.visit()`
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.
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.
Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.
Get 100 minutes of automation test minutes FREE!!