Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cypress desktop app crashes #556

Closed
dirkinfi opened this issue Jul 11, 2017 · 16 comments
Closed

cypress desktop app crashes #556

dirkinfi opened this issue Jul 11, 2017 · 16 comments
Milestone

Comments

@dirkinfi
Copy link

dirkinfi commented Jul 11, 2017

  • Operating System: macOS Sierra
  • Cypress Version: 19.4 (and the one before that)
  • Browser Version: all browsers

Is this a Feature or Bug?

Bug

Current behavior:

Desktop app crashes very often if I run my test; crashes always if I rerun the same test (eg after making a change to the test and saving it).

Desired behavior:

No crashing ;-)

How to reproduce:

See https://drive.google.com/file/d/0BwwTqatWQUO8Nkh3Wm93UkVHdkE/view for a video + the source-code (very basic).

  1. Open Cypres
  2. Select the test
  3. Run the test
  4. Observe the crash

Test code:

var baseURL = 'https://www.bxswiss.com/'; 

describe('Setup the environment', function () {
  beforeEach(function () { // these command are run before every single test; so before every 'it'
	cy.viewport('macbook-15'); // big screen 
  });


  it('should open homepage1', function () { // simple check to find Heineken with the search function
    cy.visit('https://www.bxswiss.com/'); //open the website
    cy.title().should('include', 'Trading 09:00 – 17:00 Swiss time - BX Swiss') // check if the title is correct
    cy.get('#q').type('Heineken');
    cy.get('.nav-search button').click(); //trigger the search
  });
});

Additional Info (images, stack traces, etc)

cypress-console

@RandallKent
Copy link
Contributor

Thanks, Dirk. I was able to reproduce the issue even when reducing the code that what I have below. It seems to run the first time, but then crash the browser when re-running.

it('should open homepage1', function () {
  cy.visit('https://www.bxswiss.com/'); //open the website
});

@jennifer-shehane
Copy link
Member

Have confirmed this is also a bug in our upcoming 0.20.0 release.

@chit786
Copy link

chit786 commented Jan 3, 2018

Hi Wonderful Team , Any updates on this issue.!

@jennifer-shehane
Copy link
Member

Was able to run this test again with DEBUG=cypress:*, this is the output on manual refresh of the page (not when clicking 'rerun tests' in GUI):

cypress:server:timers child sending timer id 4 +3s
  cypress:server:timers clearing timer id 4 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '48': { args: [], ms: 85000, cb: [Function] }, '63': { args: [], ms: 85000, cb: [Function] } } +3s
  cypress:server:timers queuing timer id 4 after 2500 ms +1ms
  cypress:server:files looking for test files in the integration folder /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/integration +0ms
  cypress:server:timers child received timer id 4 +1ms
  cypress:server:files specPattern for test files is undefined +0ms
  cypress:server:files found test file /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/integration/example_spec.js +2ms
  cypress:server:files found 1 spec files +1ms
  cypress:server:files [ { name: 'example_spec.js',
  cypress:server:files     path: 'cypress/integration/example_spec.js',
  cypress:server:files     absolute: '/Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/integration/example_spec.js' } ] +0ms
  cypress:server:timers clearing timer id 63 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '48': { args: [], ms: 85000, cb: [Function] }, '63': { args: [], ms: 85000, cb: [Function] } } +508ms
  cypress:server:timers queuing timer id 68 after 85000 ms +0ms
  cypress:server:timers child received timer id 68 +511ms
  cypress:server:server Got CONNECT request from ajax.googleapis.com:443 +1ms
  cypress:https-proxy Writing socket connection headers for URL: ajax.googleapis.com:443 +6s
  cypress:server:server Got CONNECT request from components.bxswiss.com:443 +1ms
  cypress:https-proxy Writing socket connection headers for URL: components.bxswiss.com:443 +1ms
  cypress:server:server Got CONNECT request from components.bxswiss.com:443 +0ms
  cypress:https-proxy Writing socket connection headers for URL: components.bxswiss.com:443 +0ms
  cypress:server:server Got CONNECT request from components.bxswiss.com:443 +0ms
  cypress:https-proxy Writing socket connection headers for URL: components.bxswiss.com:443 +0ms
  cypress:server:server Got CONNECT request from rum-collector-2.pingdom.net:443 +0ms
  cypress:https-proxy Writing socket connection headers for URL: rum-collector-2.pingdom.net:443 +1ms
  cypress:server:server Got CONNECT request from rum-collector-2.pingdom.net:443 +1ms
  cypress:https-proxy Writing socket connection headers for URL: rum-collector-2.pingdom.net:443 +0ms
  cypress:server:server Got CONNECT request from rum-collector-2.pingdom.net:443 +0ms
  cypress:https-proxy Writing socket connection headers for URL: rum-collector-2.pingdom.net:443 +0ms
  cypress:server:server Got CONNECT request from rum-collector-2.pingdom.net:443 +0ms
  cypress:https-proxy Writing socket connection headers for URL: rum-collector-2.pingdom.net:443 +0ms
  cypress:server:cors Parsed URL { port: '443', tld: 'com', domain: 'bxswiss' } +1ms
  cypress:server:server HTTPS request does match URL: https://components.bxswiss.com:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Not making direct connection to components.bxswiss.com:443 +1ms
  cypress:https-proxy Making intercepted connection to 58646 +0ms
  cypress:server:cors Parsed URL { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:server:server HTTPS request does match URL: https://components.bxswiss.com:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Not making direct connection to components.bxswiss.com:443 +1ms
  cypress:https-proxy Making intercepted connection to 58646 +0ms
  cypress:server:cors Parsed URL { port: '443', tld: 'com', domain: 'bxswiss' } +1ms
  cypress:server:server HTTPS request does match URL: https://components.bxswiss.com:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +1ms
  cypress:https-proxy Not making direct connection to components.bxswiss.com:443 +1ms
  cypress:https-proxy Making intercepted connection to 58646 +0ms
  cypress:server:cors Parsed URL { port: '443', tld: 'net', domain: 'pingdom' } +0ms
  cypress:server:server HTTPS request does not match URL: https://rum-collector-2.pingdom.net:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Making direct connection to rum-collector-2.pingdom.net:443 +0ms
  cypress:server:cors Parsed URL { port: '443', tld: 'net', domain: 'pingdom' } +1ms
  cypress:server:server HTTPS request does not match URL: https://rum-collector-2.pingdom.net:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Making direct connection to rum-collector-2.pingdom.net:443 +1ms
  cypress:server:cors Parsed URL { port: '443', tld: 'net', domain: 'pingdom' } +0ms
  cypress:server:server HTTPS request does not match URL: https://rum-collector-2.pingdom.net:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Making direct connection to rum-collector-2.pingdom.net:443 +1ms
  cypress:server:server Got CONNECT request from rum-static.pingdom.net:443 +1ms
  cypress:https-proxy Writing socket connection headers for URL: rum-static.pingdom.net:443 +0ms
  cypress:server:cors Parsed URL { port: '443', tld: 'googleapis.com', domain: 'ajax' } +0ms
  cypress:server:server HTTPS request does not match URL: https://ajax.googleapis.com:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Making direct connection to ajax.googleapis.com:443 +0ms
  cypress:server:cors Parsed URL { port: '443', tld: 'net', domain: 'pingdom' } +1ms
  cypress:server:server HTTPS request does not match URL: https://rum-static.pingdom.net:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Making direct connection to rum-static.pingdom.net:443 +1ms
  cypress:server:cors Parsed URL { port: '443', tld: 'net', domain: 'pingdom' } +1ms
  cypress:server:server HTTPS request does not match URL: https://rum-collector-2.pingdom.net:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Making direct connection to rum-collector-2.pingdom.net:443 +1ms
  cypress:server:routes Serving Cypress front-end by requested URL: /__ +0ms
  cypress:server:server Getting remote state: { props: { port: '443', tld: 'com', domain: 'bxswiss' }, origin: 'https://www.bxswiss.com', strategy: 'http', visiting: false, domainName: 'bxswiss.com', fileServer: null } +1ms
  cypress:server config version 1.4.1 platform darwin arch x64 +0ms
GET /__ 200 6.368 ms - -
  cypress:server:timers clearing timer id 68 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '48': { args: [], ms: 85000, cb: [Function] }, '68': { args: [], ms: 85000, cb: [Function] } } +10ms
  cypress:server:timers queuing timer id 69 after 85000 ms +1ms
  cypress:server:timers child received timer id 69 +22ms
  cypress:server:server Getting remote state: { props: { port: '443', tld: 'com', domain: 'bxswiss' }, origin: 'https://www.bxswiss.com', strategy: 'http', visiting: false, domainName: 'bxswiss.com', fileServer: null } +4ms
  cypress:server:proxy handling proxied request { url: '/quotedataprovider/signalr/hubs/abort?transport=webSockets&connectionToken=T2xs3oAQnk8Q0TmtOhzA3DLez7vJZNTtCv7R%2Bximd%2F6V3oXwokN3X%2B5rX5Cu2Fvue7JHQn%2B9uGgVyfoobR8BoIVhXrw05JaQrYP6%2BN4V7obvAfpu9P%2F40m1P78ar8ETn&connectionData=%5B%7B%22name%22%3A%22quotehub%22%7D%2C%7B%22name%22%3A%22tradehub%22%7D%5D', proxiedUrl: 'https://www.bxswiss.com:443/quotedataprovider/signalr/hubs/abort?transport=webSockets&connectionToken=T2xs3oAQnk8Q0TmtOhzA3DLez7vJZNTtCv7R%2Bximd%2F6V3oXwokN3X%2B5rX5Cu2Fvue7JHQn%2B9uGgVyfoobR8BoIVhXrw05JaQrYP6%2BN4V7obvAfpu9P%2F40m1P78ar8ETn&connectionData=%5B%7B%22name%22%3A%22quotehub%22%7D%2C%7B%22name%22%3A%22tradehub%22%7D%5D', cookies: { 'ASP.NET_SessionId': 'm5ech4g3o0nxzmczo4rqytc4', _ga: 'GA1.2.309475717.1514994121', _gid: 'GA1.2.442712295.1514994121', _gat: '1' }, remoteState: { props: { port: '443', tld: 'com', domain: 'bxswiss' }, origin: 'https://www.bxswiss.com', strategy: 'http', visiting: false, domainName: 'bxswiss.com', fileServer: null } } +1ms
  cypress:server:timers queuing timer id 70 after 30000 ms +1ms
  cypress:server:timers child received timer id 70 +6ms
  cypress:server:timers clearing timer id 70 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '48': { args: [], ms: 85000, cb: [Function] }, '69': { args: [], ms: 85000, cb: [Function] }, '70': { args: [], ms: 30000, cb: [Function] } } +118ms
  cypress:server:proxy received request response for https://www.bxswiss.com:443/quotedataprovider/signalr/hubs/abort?transport=webSockets&connectionToken=T2xs3oAQnk8Q0TmtOhzA3DLez7vJZNTtCv7R%2Bximd%2F6V3oXwokN3X%2B5rX5Cu2Fvue7JHQn%2B9uGgVyfoobR8BoIVhXrw05JaQrYP6%2BN4V7obvAfpu9P%2F40m1P78ar8ETn&connectionData=%5B%7B%22name%22%3A%22quotehub%22%7D%2C%7B%22name%22%3A%22tradehub%22%7D%5D { headers: { 'cache-control': 'no-cache', pragma: 'no-cache', expires: '-1', server: 'Microsoft-IIS/10.0', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=31536000', date: 'Wed, 03 Jan 2018 15:42:11 GMT', 'content-length': '0' } } +240ms
POST /quotedataprovider/signalr/hubs/abort?transport=webSockets&connectionToken=T2xs3oAQnk8Q0TmtOhzA3DLez7vJZNTtCv7R%2Bximd%2F6V3oXwokN3X%2B5rX5Cu2Fvue7JHQn%2B9uGgVyfoobR8BoIVhXrw05JaQrYP6%2BN4V7obvAfpu9P%2F40m1P78ar8ETn&connectionData=%5B%7B%22name%22%3A%22quotehub%22%7D%2C%7B%22name%22%3A%22tradehub%22%7D%5D 200 360.794 ms - -
  cypress:server:file reading JSON file /Users/jennifer/Library/Application Support/Cypress/cy/production/cache +8ms
  cypress:server:timers queuing timer id 71 after 3000 ms +3ms
  cypress:server:timers child received timer id 71 +369ms
  cypress:server:timers queuing timer id 72 after 30000 ms +4ms
  cypress:server:timers child received timer id 72 +4ms
  cypress:server:timers clearing timer id 72 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '48': { args: [], ms: 85000, cb: [Function] }, '69': { args: [], ms: 85000, cb: [Function] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '72': { args: [], ms: 30000, cb: [Function: bound cleanupWebsocketResources] } } +0ms
  cypress:server:timers clearing timer id 48 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '48': { args: [], ms: 85000, cb: [Function] }, '69': { args: [], ms: 85000, cb: [Function] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] } } +0ms
  cypress:server:timers clearing timer id 48 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '69': { args: [], ms: 85000, cb: [Function] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] } } +1ms
  cypress:server:server Got CONNECT request from www.bxswiss.com:443 +5ms
  cypress:https-proxy Writing socket connection headers for URL: www.bxswiss.com:443 +397ms
GET /__cypress/runner/cypress_runner.js 304 1.501 ms - -
  cypress:server:cors Parsed URL { port: '443', tld: 'com', domain: 'bxswiss' } +1ms
  cypress:server:server HTTPS request does match URL: https://www.bxswiss.com:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Not making direct connection to www.bxswiss.com:443 +1ms
  cypress:https-proxy Making intercepted connection to 58646 +0ms
GET /__cypress/runner/cypress_runner.css 200 25.020 ms - -
  cypress:server:server Got CONNECT request from www.bxswiss.com:443 +285ms
  cypress:https-proxy Writing socket connection headers for URL: www.bxswiss.com:443 +285ms
  cypress:server:cors Parsed URL { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:server:server HTTPS request does match URL: https://www.bxswiss.com:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Not making direct connection to www.bxswiss.com:443 +1ms
  cypress:https-proxy Making intercepted connection to 58646 +0ms
  cypress:server:server Got UPGRADE request from /__socket.io/?EIO=3&transport=websocket +3ms
  cypress:server:timers queuing timer id 73 after 85000 ms +1ms
  cypress:server:timers child received timer id 73 +296ms
  cypress:server:socket socket connected +0ms
  cypress:server:timers clearing timer id 73 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '69': { args: [], ms: 85000, cb: [Function] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '73': { args: [], ms: 85000, cb: [Function] } } +35ms
  cypress:server:timers queuing timer id 74 after 85000 ms +1ms
  cypress:server:timers child received timer id 74 +36ms
  cypress:server:timers clearing timer id 74 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '69': { args: [], ms: 85000, cb: [Function] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '74': { args: [], ms: 85000, cb: [Function] } } +12ms
  cypress:server:timers queuing timer id 75 after 85000 ms +1ms
  cypress:server:timers child received timer id 75 +13ms
  cypress:server:timers queuing timer id 76 after 1000 ms +0ms
  cypress:server:timers child received timer id 76 +0ms
GET /__cypress/static/favicon.ico 200 2.371 ms - -
  cypress:server:timers clearing timer id 69 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '69': { args: [], ms: 85000, cb: [Function] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '75': { args: [], ms: 85000, cb: [Function] }, '76': { args: [], ms: 1000, cb: [Function: timeoutTimeout] } } +8ms
  cypress:server:timers queuing timer id 77 after 85000 ms +0ms
  cypress:server:timers child received timer id 77 +8ms
  cypress:server:timers clearing timer id 76 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '75': { args: [], ms: 85000, cb: [Function] }, '76': { args: [], ms: 1000, cb: [Function: timeoutTimeout] }, '77': { args: [], ms: 85000, cb: [Function] } } +0ms
GET /__cypress/runner/fonts/fontawesome-webfont.woff2?v=4.7.0 304 0.702 ms - -
  cypress:server:timers clearing timer id 75 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '75': { args: [], ms: 85000, cb: [Function] }, '77': { args: [], ms: 85000, cb: [Function] } } +41ms
  cypress:server:timers queuing timer id 78 after 85000 ms +0ms
  cypress:server:events sending ipc data { type: 'on:spec:changed',
  data: { id: 0.19167454343548052, data: 'integration/example_spec.js' } } +0ms
  cypress:server:timers child received timer id 78 +41ms
  cypress:server:timers clearing timer id 78 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '77': { args: [], ms: 85000, cb: [Function] }, '78': { args: [], ms: 85000, cb: [Function] } } +27ms
  cypress:server:timers queuing timer id 79 after 85000 ms +0ms
  cypress:server:socket watch test file integration/example_spec.js +0ms
  cypress:server:timers child received timer id 79 +27ms
  cypress:server:server Getting remote state: { props: { port: '443', tld: 'com', domain: 'bxswiss' }, origin: 'https://www.bxswiss.com', strategy: 'http', visiting: false, domainName: 'bxswiss.com', fileServer: null } +2ms
GET /__cypress/iframes/integration/example_spec.js 200 4.539 ms - 729
  cypress:server:controllers:spec request for cypress/support/index.js +9ms
  cypress:server:preprocessor getFile /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/support/index.js +0ms
  cypress:server:plugins execute plugin event 'file:preprocessor' with args: [object Object] +0ms
  cypress:browserify get /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/support/index.js +13s
  cypress:browserify already have bundle for /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/support/index.js +0ms
  cypress:server:controllers:spec send /Users/jennifer/Library/Application Support/Cypress/cy/production/projects/cypress-example-kitchensink-95d62609fa934168f380999dd3ae02a1/bundles/cypress/support/index.js +1ms
  cypress:server:server Got CONNECT request from www.bxswiss.com:443 +0ms
  cypress:https-proxy Writing socket connection headers for URL: www.bxswiss.com:443 +140ms
  cypress:server:cors Parsed URL { port: '443', tld: 'com', domain: 'bxswiss' } +1ms
  cypress:server:server HTTPS request does match URL: https://www.bxswiss.com:443 with props: { port: '443', tld: 'com', domain: 'bxswiss' } +0ms
  cypress:https-proxy Not making direct connection to www.bxswiss.com:443 +1ms
  cypress:https-proxy Making intercepted connection to 58646 +0ms
GET /__cypress/tests?p=cypress/support/index.js-941 200 2.489 ms - -
  cypress:server:controllers:spec request for cypress/integration/example_spec.js +2ms
  cypress:server:preprocessor getFile /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/integration/example_spec.js +0ms
  cypress:server:plugins execute plugin event 'file:preprocessor' with args: [object Object] +0ms
  cypress:browserify get /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/integration/example_spec.js +4ms
  cypress:browserify already have bundle for /Users/jennifer/Dev/Projects/cypress-example-kitchensink/cypress/integration/example_spec.js +0ms
  cypress:server:controllers:spec send /Users/jennifer/Library/Application Support/Cypress/cy/production/projects/cypress-example-kitchensink-95d62609fa934168f380999dd3ae02a1/bundles/cypress/integration/example_spec.js +0ms
GET /__cypress/tests?p=cypress/integration/example_spec.js-379 200 3.816 ms - -
  cypress:server:timers clearing timer id 79 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '77': { args: [], ms: 85000, cb: [Function] }, '79': { args: [], ms: 85000, cb: [Function] } } +18ms
  cypress:server:timers queuing timer id 80 after 85000 ms +0ms
  cypress:server:timers child received timer id 80 +33ms
  cypress:server:timers clearing timer id 80 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '77': { args: [], ms: 85000, cb: [Function] }, '80': { args: [], ms: 85000, cb: [Function] } } +31ms
  cypress:server:timers queuing timer id 81 after 85000 ms +0ms
  cypress:server:socket automation:request get:cookies { domain: 'bxswiss.com' } +0ms
  cypress:server:timers child received timer id 81 +32ms
  cypress:server:timers clearing timer id 77 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '77': { args: [], ms: 85000, cb: [Function] }, '81': { args: [], ms: 85000, cb: [Function] } } +4ms
  cypress:server:timers queuing timer id 82 after 85000 ms +0ms
  cypress:server:timers child received timer id 82 +3ms
  cypress:server:timers clearing timer id 81 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '81': { args: [], ms: 85000, cb: [Function] }, '82': { args: [], ms: 85000, cb: [Function] } } +3ms
  cypress:server:timers queuing timer id 83 after 85000 ms +0ms
  cypress:server:timers child received timer id 83 +3ms
  cypress:server:socket automation:request clear:cookies [ { name: 'ASP.NET_SessionId',
    value: 'm5ech4g3o0nxzmczo4rqytc4',
    path: '/',
    domain: 'www.bxswiss.com',
    secure: false,
    httpOnly: true },
  { name: '_ga',
    value: 'GA1.2.309475717.1514994121',
    path: '/',
    domain: '.bxswiss.com',
    secure: false,
    httpOnly: false,
    expiry: 1578066121 },
  { name: '_gid',
    value: 'GA1.2.442712295.1514994121',
    path: '/',
    domain: '.bxswiss.com',
    secure: false,
    httpOnly: false,
    expiry: 1515080521 },
  { name: '_gat',
    value: '1',
    path: '/',
    domain: '.bxswiss.com',
    secure: false,
    httpOnly: false,
    expiry: 1514994181 } ] +0ms
  cypress:server:timers clearing timer id 82 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '82': { args: [], ms: 85000, cb: [Function] }, '83': { args: [], ms: 85000, cb: [Function] } } +8ms
  cypress:server:timers queuing timer id 84 after 85000 ms +0ms
  cypress:server:timers child received timer id 84 +8ms
  cypress:server:timers clearing timer id 84 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '84': { args: [], ms: 85000, cb: [Function] } } +1ms
  cypress:server:timers queuing timer id 85 after 85000 ms +0ms
  cypress:server:timers child received timer id 85 +1ms
  cypress:server:timers clearing timer id 85 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '85': { args: [], ms: 85000, cb: [Function] } } +1ms
  cypress:server:timers queuing timer id 86 after 85000 ms +1ms
  cypress:server:timers child received timer id 86 +2ms
  cypress:server:timers clearing timer id 86 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '86': { args: [], ms: 85000, cb: [Function] } } +1ms
  cypress:server:timers queuing timer id 87 after 85000 ms +0ms
  cypress:server:timers child received timer id 87 +1ms
  cypress:server:timers clearing timer id 87 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '87': { args: [], ms: 85000, cb: [Function] } } +1ms
  cypress:server:timers queuing timer id 88 after 85000 ms +0ms
  cypress:server:timers child received timer id 88 +1ms
  cypress:server:timers clearing timer id 88 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '88': { args: [], ms: 85000, cb: [Function] } } +0ms
  cypress:server:timers queuing timer id 89 after 85000 ms +1ms
  cypress:server:timers child received timer id 89 +1ms
  cypress:server:timers clearing timer id 89 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '89': { args: [], ms: 85000, cb: [Function] } } +0ms
  cypress:server:timers queuing timer id 90 after 85000 ms +0ms
  cypress:server:timers child received timer id 90 +0ms
  cypress:server:timers clearing timer id 90 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '90': { args: [], ms: 85000, cb: [Function] } } +0ms
  cypress:server:timers queuing timer id 91 after 85000 ms +1ms
  cypress:server:timers child received timer id 91 +1ms
  cypress:server:timers clearing timer id 91 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '91': { args: [], ms: 85000, cb: [Function] } } +21ms
  cypress:server:timers queuing timer id 92 after 85000 ms +0ms
  cypress:server:timers child received timer id 92 +22ms
  cypress:server:timers clearing timer id 83 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '83': { args: [], ms: 85000, cb: [Function] }, '92': { args: [], ms: 85000, cb: [Function] } } +4ms
  cypress:server:timers queuing timer id 93 after 85000 ms +0ms
  cypress:server:timers child received timer id 93 +3ms
  cypress:server:socket backend:request { eventName: 'resolve:url',
  args: [ 'https://www.bxswiss.com/', { failOnStatusCode: true } ] } +0ms
  cypress:server:server Getting remote state: { props: { port: '443', tld: 'com', domain: 'bxswiss' }, origin: 'https://www.bxswiss.com', strategy: 'http', visiting: false, domainName: 'bxswiss.com', fileServer: null } +1ms
  cypress:server:timers clearing timer id 92 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '92': { args: [], ms: 85000, cb: [Function] }, '93': { args: [], ms: 85000, cb: [Function] } } +3ms
  cypress:server:timers queuing timer id 94 after 85000 ms +0ms
  cypress:server:timers child received timer id 94 +4ms
  cypress:server:timers queuing timer id 95 after 30000 ms +2ms
  cypress:server:timers child received timer id 95 +2ms
  cypress:server:timers clearing timer id 71 from queue { '4': { args: [], ms: 2500, cb: [Function: cb] }, '71': { args: [], ms: 3000, cb: [Function: timeoutTimeout] }, '93': { args: [], ms: 85000, cb: [Function] }, '94': { args: [], ms: 85000, cb: [Function] }, '95': { args: [], ms: 30000, cb: [Function] } } +3ms
{ Error: read ECONNRESET
    at exports._errnoException (util.js:1026:11)
    at TLSWrap.onread (net.js:564:26)
 code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }
Error: read ECONNRESET
    at exports._errnoException (util.js:1026:11)
    at TLSWrap.onread (net.js:564:26)

@cypress-io cypress-io deleted a comment from RandallKent Jan 9, 2018
@doneuros
Copy link

doneuros commented Feb 1, 2018

Hi, i have the same issue.
Operating System: Windows 10
Cypress Version: 1.4.1

End of Log:

GET /api/auth/v1/logout 401 113.751 ms - -
GET /api/auth/v1/logout 401 107.446 ms - -
GET /__/ 200 104.684 ms - -
GET /__cypress/runner/cypress_runner.js 304 2.290 ms - -
{ Error: read ECONNRESET
    at exports._errnoException (util.js:1026:11)
    at TLSWrap.onread (net.js:564:26)
 code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }
Error: read ECONNRESET
    at exports._errnoException (util.js:1026:11)
    at TLSWrap.onread (net.js:564:26)

In the start i had no problems with cypress and that version.
I can't tell what i changed but today it chrashed very often.

When will the bug be fixed?

@wijwoj
Copy link
Contributor

wijwoj commented Feb 5, 2018

I think this crash may be related to signalr (it's also the only mention of signalr in any open issue). I'm having a world of pain getting my tests to work with signalr. Due to the absence of websockets through the cypress proxy, it seems to default to long polling. And this results in the poll xhr request spanning tests and specs and generally causing all sorts of havoc that eventually lead to the ECONNRESET above which crashes cypress. I'm in the process of trying to work around this by gracefully disconnecting signalr after each test. Will update if I get anywhere.

Note, if I disable signalr in my app the issue and ECONNRESET disappear.

@brian-mann
Copy link
Member

Websockets should work through the Cypress proxy we have a lot of tests around this...

@wijwoj
Copy link
Contributor

wijwoj commented Feb 9, 2018

Thanks for the response @brian-mann

So after lot of faffing I (partially) know what is going in my situation. I am currently testing 2 separate web apps within my one cypress project.

ui1: AngularJS, xhr based, SignalR, WebAPI backend
ui2: react, signalR, fetch based, WebAPI backend (using the win= null workaround to force it use xhr)

for ui1: 13 fairly small tests across 4 spec files
for ui2: 14 fairly small tests across 6 spec files

I assumed that ui2 was using serverSentEvents in signalr due to websockets not working in cypress. Had I looked at ui1 I would have seen that signalr was using websockets and they were indeed working fine. Due to a bug in the signalr-shimmy package used in ui2, signalr was dropping to serverSentEvents (which I presume are not supported by the cypress proxy) so it was dropping to long polling. When I switched out the signalR-shimmy to use the (slightly more maintained) signalR-no-jquery package -websockets started working in ui2 again.

I was however still getting consistent ECONNRESET (as in consistently happens - but not always at the same moment in the tests) crashes in cypress, BOTH in open and run modes. It was still not possible to get a complete cypress run without crashing.

I then tried only running the tests from ui1 (by moving the ui2 tests out of the integration folder - looking forward to being able to glob specs for runs!) and I found that ui2 never gets the ECONNRESET - but UI1 will always get it. ALL tests in ui1 run fine when run on there own via run --spec or individually from cypress open.

Therefore something in my ui1 (AngularJS etc) is resulting in the ECONNRESET error. Where do I go from here. I've tried all combinations of removing tests and it genuinely does not seem to be a single test that is causing it. It only happens when the run gets over a certain size - is there anyway at all I can debug this further?

Reading up on the net about ECONNRESET - it looks like cypress is missing an error handler somewhere? Or could I be hitting this node issue nodejs/node#14102? Would this cypress issue help/fix the problem? #898

After the initial successes with small tests, and the joy of finding a consistent and useable test suite I have really pushed my company to use Cypress, but I just don't see how I can continue with the constant crashes in UI1. Right now the only way to test UI1 is calling a run on each spec individually, and manually putting the results together at the end - which is not really a workable solution.

Any help gratefully appreciated.
Wij.

@wijwoj
Copy link
Contributor

wijwoj commented Feb 12, 2018

Could somebody contact me with respect to how you guys go about doing paid support?

@wijwoj
Copy link
Contributor

wijwoj commented Feb 20, 2018

Sadly, my company don't seem keen on paid support until we (I) prove that Cypress will be the test tool we go with which leaves me in a bit of a catch 22 situation.

Does anybody have any suggestions for what might be resulting in these ECONNRESET errors from our angularJS site?

Now running cypress 2.0.2 and they still occur every time on a run of the full set of tests (from run and open).

@wijwoj
Copy link
Contributor

wijwoj commented Feb 23, 2018

Not sure if any of the devs are monitoring this, but I've attempted to shed some more light on my predicament.

I cloned the cypress source and have added the node longjohn package to the server to attempt to get a better trace of what is going on. The trace can now be seen below.

Error: read ECONNRESET
    at exports._errnoException (util.js:1024:11)
    at TCP.onread (net.js:610:25)
---------------------------------------------
    at Socket.Readable.on (_stream_readable.js:761:35)
    at tickOnSocket (_http_client.js:654:10)
    at onSocketNT (_http_client.js:684:5)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
---------------------------------------------
    at ClientRequest.onSocket (_http_client.js:672:11)
    at handleSocketCreation_Inner (_http_agent.js:330:15)
    at oncreate (_http_agent.js:230:5)
    at Agent.createSocket (_http_agent.js:216:5)
    at Agent.addRequest (_http_agent.js:184:10)
    at makeRequest (c:\Work\cypress\packages\server\lib\util\http_overrides.coffee:24:25)
    at Agent.http.Agent.addRequest (c:\Work\cypress\packages\server\lib\util\http_overrides.coffee:28:14)
    at new ClientRequest (_http_client.js:272:16)
    at Object.request (http.js:39:10)
    at Array.stream (c:\Work\cypress\packages\server\node_modules\http-proxy\lib\http-proxy\passes\ws-incoming.js:85:80)
    at ProxyServer.<anonymous> (c:\Work\cypress\packages\server\node_modules\http-proxy\lib\http-proxy\index.js:80:21)
    at Server.proxyWebsockets (c:\Work\cypress\packages\server\lib\server.coffee:478:22)
    at Server.onUpgrade (c:\Work\cypress\packages\server\lib\server.coffee:178:26)
    at emitThree (events.js:140:20)
    at Server.emit (events.js:216:7)
    at onParserExecuteCommon (_http_server.js:493:14)
    at onParserExecute (_http_server.js:448:3)

Definitely looks like the server package's websockets are involved. Any chance of some help identifying the problem? I really do enjoy working with cypress and would love to get a solution for this.

@wijwoj
Copy link
Contributor

wijwoj commented Feb 26, 2018

@brian-mann Sorry to tag you directly, but any chance you could say whether you think this looks like a problem in cypress or something I should be able to stop on the site being tested?

@wijwoj
Copy link
Contributor

wijwoj commented Feb 27, 2018

So more fiddling and I have a fix, which allows all my tests to complete successfully. I'll make a pull request to find out what I need to do get it merged in. For info the change is simply to handle errors on the proxy.ws call.

develop...wijwoj:develop

@brian-mann
Copy link
Member

@wijwoj you can use the DEBUG module to log out cypress stuff... no need to add longjohn.

At any rate - thank you for taking the lead on this and opening a PR. I'm going to update the PR to include an e2e test since a specific unit test is generally not enough to ensure we are properly covered in this case.

I was able to see this happen directly and reproduce it locally based on this PR withspectrum/spectrum#2843

@brian-mann
Copy link
Member

brian-mann commented Apr 23, 2018

Fixed by #1382

@brian-mann brian-mann added this to the 3.0.0 milestone May 30, 2018
@brian-mann
Copy link
Member

Released in 3.0.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants