Is this a Feature or Bug?
Bug
Current behavior:
Within our company we're planning to introduce Cypress as our main tool for testing end-to-end processes within our web applications.
First of all: Cypress looks amazing and we really wan't to give it a shot!
Unfortunately, we're having some trouble while automating the tests within our Docker- and Jenkins-based build environment.
Our build infrastructure looks like this:
For our test case, we've got a VM with RHEL 7.4 with kernel 3.10.0 that is basically only running an installation of Docker (version 17.06.2-ce).
On this machine we're currently running Jenkins 2.93 within a Docker container and one single Jenkins slave container based on the official Cypress Docker image on the same VM.
Before I continue: we've tried every single Jenkins version from 2.60 until 2.93 and all of the Cypress base images (including the Chrome integration which works smoothly since 1.1.4).
Every combination shows the same behaviour:
When we're trying to execute our Cypress tests on the before mentioned Jenkins Slave Container, everything works fine until Cypress actually calls the website under test. What happens is, that all the requests run in a timeout.
When I look into the video recorded during the test run within the CI setup, I can see that Cypress calls the correct website but loads indefinitely. I've tried to increase all the configurable timeouts to ridiculous values with no effect.
HTTP requests sent manually from within the Docker container work flawlessly in no time and a similar setup on different local machines works perfectly too.
What might be important: We're working within a secure environment where we have to open every single communication way within the firewall. I suspect, that Cypress might possibly do something when requesting a website that a simple wget or curl might not and that we simply have to configure our firewall appropriately.
The website we're trying to test runs on a different machine in a different network but the communication via 80/TCP and 443/TCP has been opened (as our manual tests from within the container prove).
Is there anything special we have to consider within our firewall or network configuration?
Desired behavior:
Requests are executed correctly and don't run in a timeout.
How to reproduce:
Actually I'm not sure how to reproduce this behaviour because everything works on our local machines.
Test code:
CYPRESS_BINARY_VERSION=/home/person/cypress.zip npm install --no-progress --verbose
DEBUG=cypress:* $(npm bin)/cypress run --env HOST=dev --record --key our-key
Additional Info (images, stack traces, etc)
CypressError: Timed out after waiting '60000ms' for your remote page to load.
Your page did not fire its 'load' event within '60000ms'.
You can try increasing the 'pageLoadTimeout' value in 'cypress.json' to wait longer.
Browsers will not fire the 'load' event until all stylesheets and scripts are done downloading.
When this 'load' event occurs, Cypress will continue running commands.
Because this error occurred during a 'before all' hook we are skipping the remaining tests in the current suite: 'Elastic Search'
at Object.cypressErr (http://-G4/__cypress/runner/cypress_runner.js:65873:11)
at Object.throwErr (http://our.test.website/__cypress/runner/cypress_runner.js:65838:18)
at Object.throwErrByPath (http://our.test.website/__cypress/runner/cypress_runner.js:65865:17)
at timedOutWaitingForPageLoad (http://our.test.website/__cypress/runner/cypress_runner.js:56915:17)
at http://our.test.website/__cypress/runner/cypress_runner.js:57516:18
at tryCatcher (http://our.test.website/__cypress/runner/cypress_runner.js:6268:23)
at http://our.test.website/__cypress/runner/cypress_runner.js:1585:41
at tryCatcher (http://our.test.website/__cypress/runner/cypress_runner.js:6268:23)
at Promise._settlePromiseFromHandler (http://our.test.website/__cypress/runner/cypress_runner.js:4290:31)
at Promise._settlePromise (http://our.test.website/__cypress/runner/cypress_runner.js:4347:18)
at Promise._settlePromise0 (http://our.test.website/__cypress/runner/cypress_runner.js:4392:10)
at Promise._settlePromises (http://our.test.website/__cypress/runner/cypress_runner.js:4467:18)
at Async._drainQueue (http://our.test.website/__cypress/runner/cypress_runner.js:1200:16)
at Async._drainQueues (http://our.test.website/__cypress/runner/cypress_runner.js:1210:10)
at Async.drainQueues (http://our.test.website/__cypress/runner/cypress_runner.js:1084:14)]]></failure>
</testcase>
<testcase name="Elastic Search "after all" hook for "with map"" time="60.079" classname=""after all" hook for "with map"">
<failure><![CDATA[Error: Cypress command timeout of '4000ms' exceeded.
Because this error occurred during a 'after all' hook we are skipping the remaining tests in the current suite: 'Elastic Search'
at http://our.real.domain/__cypress/runner/cypress_runner.js:64279:25]]></failure>
- Operating System: RHEL 7.4 (3.10.0)
- Cypress Version: 1.1.3, 1.1.4
- Browser Version: Electron, Chrome 62
Is this a Feature or Bug?
Bug
Current behavior:
Within our company we're planning to introduce Cypress as our main tool for testing end-to-end processes within our web applications.
First of all: Cypress looks amazing and we really wan't to give it a shot!
Unfortunately, we're having some trouble while automating the tests within our Docker- and Jenkins-based build environment.
Our build infrastructure looks like this:
For our test case, we've got a VM with RHEL 7.4 with kernel 3.10.0 that is basically only running an installation of Docker (version 17.06.2-ce).
On this machine we're currently running Jenkins 2.93 within a Docker container and one single Jenkins slave container based on the official Cypress Docker image on the same VM.
Before I continue: we've tried every single Jenkins version from 2.60 until 2.93 and all of the Cypress base images (including the Chrome integration which works smoothly since 1.1.4).
Every combination shows the same behaviour:
When we're trying to execute our Cypress tests on the
beforementioned Jenkins Slave Container, everything works fine until Cypress actually calls the website under test. What happens is, that all the requests run in a timeout.When I look into the video recorded during the test run within the CI setup, I can see that Cypress calls the correct website but loads indefinitely. I've tried to increase all the configurable timeouts to ridiculous values with no effect.
HTTP requests sent manually from within the Docker container work flawlessly in no time and a similar setup on different local machines works perfectly too.
What might be important: We're working within a secure environment where we have to open every single communication way within the firewall. I suspect, that Cypress might possibly do something when requesting a website that a simple
wgetorcurlmight not and that we simply have to configure our firewall appropriately.The website we're trying to test runs on a different machine in a different network but the communication via
80/TCPand443/TCPhas been opened (as our manual tests from within the container prove).Is there anything special we have to consider within our firewall or network configuration?
Desired behavior:
Requests are executed correctly and don't run in a timeout.
How to reproduce:
Actually I'm not sure how to reproduce this behaviour because everything works on our local machines.
Test code:
Additional Info (images, stack traces, etc)