Open TomdeHaan opened 1 year ago
@TomdeHaan can you share the full DEBUG logs please? The tail end shared here doesn't contain much info about what could be causing Cypress to hang.
I followed up with @TomdeHaan this AM to see what the status of logs were to help move this forward.
@TomdeHaan could you or one of the team members try your current test suite on the binary below & if this issue isn't resolved also try on 10.7.0.
Our team believes that this issue is more than likely related to #23830.
Please let us know here any relevant outcomes.
Different setup to OP's, but we have this same issue (after tests complete, the debug logs spam about the profiler until it times out), and for us it started on 10.11.0. If we stay on 10.10.0 we're fine, but any version above this, including 12.0.1, seems to trigger this problem.
(To clarify different setup; I mean we're hitting this on Chrome, not WebKit, and are using Node 18. We did have the same issue on Node 16 when we initially tried the 10.11.0 upgrade prior to the Node 18 upgrade)
@modern-sapien. Sorry, only saw this message on and of working day. Small update form our side.
We will try your suggestion next working week, but we also did some investigation our selves:.
Currently we are running Cypress inside Gitlab, using a docker images that we create ourselves, using this image: https://hub.docker.com/layers/cypress/browsers/latest/images/sha256-44f4157bfb319fccf537b590841315c9f777937f02f930e9d295e5cbdeb02381?context=explore.
We also install the webkit browser from playwright as mentioned in the documents https://docs.cypress.io/guides/guides/launching-browsers#Browsers.
# install webkit for safari
RUN npx playwright install-deps
`
We tried to run the tests as simple as possible, so we disabled the --parallel, recording and group. But that also failed. And also tried to run with Cypress 12.0.2. (Which we also created a docker image for).
It looks like (to us) that the connection is lost between browser and Cypress, see this log:
This code keeps repeating until it times out.
"getDelayMsForRetry: [36m[Function: b][39m }, iteration: [33m0[39m } [32m+24ms[0m
[32;1mcypress:https-proxy [0mreceived upstreamSocket callback for request { port: [33m41443[39m, hostname: [32m'localhost'[39m, err: [90mundefined[39m } [32m+1ms[0m
[36;1mcypress:server:util:socket_allowed [0mallowing socket { localPort: [33m48946[39m } [36m+23ms[0m
[32;1mcypress:https-proxy [0mGot first head bytes { url: [32m'static.ads-twitter.com:443'[39m, head: [32m`\x16\x03\x01\x02�\x01\x00\x02�\x03\x035��$�\x16\x11��(��~C4\x120��h\x1C\x195+|S("��� q�,\x18���5�����v��~!r'K`[39m } [32m+15ms[0m
[32;1mcypress:https-proxy [0mMaking intercepted connection to 41443 [32m+0ms[0m
[32;1mcypress:network:connect [0msuccessfully connected { opts: { port: [33m41443[39m, host: [32m'localhost'[39m, getDelayMsForRetry: [36m[Function: b][39m }, iteration: [33m0[39m } [32m+16ms[0m
[32;1mcypress:https-proxy [0mreceived upstreamSocket callback for request { port: [33m41443[39m, hostname: [32m'localhost'[39m, err: [90mundefined[39m } [32m+1ms[0m
[36;1mcypress:server:util:socket_allowed [0mallowing socket { localPort: [33m48948[39m } [36m+16ms[0m
[32;1mcypress:https-proxy [0mGot first head bytes { url: [32m's.pinimg.com:443'[39m, head: [32m'\x16\x03\x01\x02�\x01\x00\x02�\x03\x03�,�������Q\x02�\x06����ݷ�z�C��M%��m� o���pQ_����1g��*t��R��'[39m } [32m+15ms[0m
[32;1mcypress:https-proxy [0mMaking intercepted connection to 41443 [32m+0ms[0m
[32;1mcypress:network:connect [0msuccessfully connected { opts: { port: [33m41443[39m, host: [32m'localhost'[39m, getDelayMsForRetry: [36m[Function: b][39m }, iteration: [33m0[39m } [32m+16ms[0m
[32;1mcypress:https-proxy [0mreceived upstreamSocket callback for request { port: [33m41443[39m, hostname: [32m'localhost'[39m, err: [90mundefined[39m } [32m+1ms[0m
[36;1mcypress:server:util:socket_allowed [0mallowing socket { localPort: [33m48950[39m } [36m+16ms[0m
[32;1mcypress:https-proxy [0mGot first head bytes { url: [32m'deploy.mopinion.com:443'[39m, head: [32m"\x16\x03\x01\x02�\x01\x00\x02�\x03\x03N�3�1=q�\x16RB��~�It\x18��s�EW�d9Ӏ�`� �WZ��\x16�]�C�Q|��`'�m��"[39m } [32m+20ms[0m
[32;1mcypress:https-proxy [0mMaking intercepted connection to 41443 [32m+0ms[0m
[32;1mcypress:network:connect [0msuccessfully connected { opts: { port: [33m41443[39m, host: [32m'localhost'[39m, getDelayMsForRetry: [36m[Function: b][39m }, iteration: [33m0[39m } [32m+21ms[0m
[32;1mcypress:https-proxy [0mreceived upstreamSocket callback for request { port: [33m41443[39m, hostname: [32m'localhost'[39m, err: [90mundefined[39m } [32m+1ms[0m
[36;1mcypress:server:util:socket_allowed [0mallowing socket { localPort: [33m48952[39m } [36m+21ms[0m
[32;1mcypress:https-proxy [0mGot first head bytes { url: [32m'www.google-analytics.com:443'[39m, head: [32m'\x16\x03\x01\x02�\x01\x00\x02�\x03\x03��d=�$�ʆ�\x19\x06���Ы3�q�ȕ\x16�c\x15d�\x07 �Q�%�\x12��~\x1E=��Z�\x7Fؓφ�������
[31;1mJob's log exceeded limit of 4194304 bytes.[0;m".
If you want to have more details, please contact us again. And we will update, after we tried your suggestion.
@modern-sapien After the weekend, the team created an image with the version you provided. Question from the team, the title from your version suggests that this is without Webkit while we want to test with Webkit ofcourse. So that set us a little question mark. job-wehkit-12-12-2022.log
We first run the test without using the Cypress dashboard and the tests passed (no --group, --parallel --record).
Then we activated all that again, and the same timeout as before. We attached the log file to this comment.
@TomdeHaan How many times did you run without recording to the dashboard? Was each run successful? When recording to the dashboard, does it always hang or does it ever pass?
Also are you using a custom preprocessor? I am wondering what testFilter
is in the example.
Recap of the deep dive into the logs... I am noticing your second test is not sending the mocha pass event or the mocha test end event. It seems the test is either 1-finishing and we aren't correctly wrapping up the test (seems unlikely) or 2- the browser tab is hanging or crashing and test runner and the test is hanging waiting on the test results to be returned.
Has anyone on the team been able to reproduce this locally when running the the docker image you use in CI? When able to repro, have you been able to run in run mode with the headed browser to try & observe what might be happening?
@TomdeHaan How many times did you run without recording to the dashboard? Was each run successful? When recording to the dashboard, does it always hang or does it ever pass?
Also are you using a custom preprocessor? I am wondering what
testFilter
is in the example.Recap of the deep dive into the logs... I am noticing your second test is not sending the mocha pass event or the mocha test end event. It seems the test is either 1-finishing and we aren't correctly wrapping up the test (seems unlikely) or 2- the browser tab is hanging or crashing and test runner and the test is hanging waiting on the test results to be returned.
Has anyone on the team been able to reproduce this locally when running the the docker image you use in CI? When able to repro, have you been able to run in run mode with the headed browser to try & observe what might be happening?
@emilyrohrbough because of holiday vacations we can't check it currently. But we will come back on this very shortly.
@TomdeHaan, we're going to look into this from the Cypress Cloud (dashboard) side too. The last run for the project is old enough that it's beyond our retention for the (potentially) helpful logs we might have on the Cloud side. Can you initiate another run of the project?
Also, Emily's question above regarding whether this issue occurs when not recording to the dashboard would be helpful to answer too. We're just getting back into the swing of normal schedules following the holiday around here as well, but if you let us know when you've initiated another run, we'll dig into it on the Cloud side. Thanks!
@rockhold, I started a new run connected to the Cypress Cloud. I will do some more testing and running today. I will keep you updated.
@TomdeHaan How many times did you run without recording to the dashboard? Was each run successful? When recording to the dashboard, does it always hang or does it ever pass?
Also are you using a custom preprocessor? I am wondering what
testFilter
is in the example.Recap of the deep dive into the logs... I am noticing your second test is not sending the mocha pass event or the mocha test end event. It seems the test is either 1-finishing and we aren't correctly wrapping up the test (seems unlikely) or 2- the browser tab is hanging or crashing and test runner and the test is hanging waiting on the test results to be returned.
Has anyone on the team been able to reproduce this locally when running the the docker image you use in CI? When able to repro, have you been able to run in run mode with the headed browser to try & observe what might be happening?
@rockhold, @chrisbreiding, @emilyrohrbough. I did some testing myself today, these are the results until now.
It did not matter if I run the test with, or without connection to the Cypress Cloud. The Webkit test did fail all the time with 7 runs total.
In between I also update the cypress version 12.3.0, this did not influence to outcome. The test still failed.
failed-log-with-cypress-cloud.txt failed-log-witout-cypress-cloud.txt
We update our Cypress version to 12.3.0 and make use use of the cypress docker image: 12.3 based on:
Now our Webkit tests could not connect to the browser. Cypress Cloud shows the message: The browser never connected. Something is wrong. The tests cannot run. Aborting...
Attached the error log. Pleas contact us if you need more information or extra runs.
Our Dockerfile looks like this:
FROM cypress/browsers:latest
RUN groupadd --gid 36030 cypress \ && useradd --uid 36030 --gid cypress --shell /bin/bash --create-home cypress
RUN npx playwright install-deps
RUN mkdir /cypress && chown cypress /cypress ENV PATH /cypress/node_modules/.bin:$PATH ENV NODE_PATH /cypress/node_modules/:$NODE_PATH WORKDIR /cypress
USER cypress
RUN npm install cypress@12.3.0
RUN DISPLAY= xvfb-run -a /cypress/node_modules/.bin/cypress verify
I started a new run connected to the Cypress Cloud. I will do some more testing and running today. I will keep you updated.
Chiming in here from the cloud side. Not much I can gather on my end. It does seem to be the first tests in both the webkit groups that never get far enough to report their results/tests. So @chrisbreiding not sure if knowing that it never calls /tests
or /results
for the first spec lowers the scope of where the issues might me.
I have a similar issue (https://github.com/cypress-io/cypress/discussions/25431), my tests are hanging in AzureDevops CI, but it's a different scenario. I'm using a WebAssembly app that downloads a bunch of .dll files in the browser and it gets stuck while downloading them. They work just fine locally.
Update: I just tested and as @me4502 said I can confirm that it works just fine with v10.10.0
but it doesn't work with any other higher version. Again, it's working just fine locally but it hangs on the CI. Not sure what's the difference though. Some changes introduced in v10.11.0
must cause these issues.
After reading the message from @sergiubologa we did a run with Cypress version 10.10.0. And we can confirm that we had a successful run. Meaning, that webkit and chrome both run, finished and send a report to cypress cloud.
We will do some more runs today, to further confirm this.
@chrisbreiding / @emilyrohrbough, there are a few points made within this thread that point to this not being a Cloud issue (David not finding anything in the logs, Tom indicating failed runs regardless of whether he was recording to Cypress Cloud, and Tom indicating that v10.10.0 allowed for successful completion of their jobs). Unless either of you has something additional that you feel we should investigate on the Cloud side, we're going to mark the investigation on our side complete. Before just disappearing from the conversation, though, I wanted to follow up with you to ensure this is understood (and agreed upon) to be on the App side again. I'm commenting here for visibility/transparency, but if you want to discuss more quickly than GH Issue back-and-forth comments, hit me up in Slack.
I'm going to try and spend some time this week trying to get a reproduction of this available running in gitlab CI. My guess is cypress:server:util:process_profiler
processes are still valid, but something has either crashed or has gotten into a state where a single process is hung up. @TomdeHaan were you able to reproduce the issue with a simpler test case or does it only seem to happen with the current test you have?
Hey all,
We did some more testing. When we run simple tests it runs correctly with 10.10, but when they become more complex they start get stuck again.
When we try with version 10.11 all the tests get stuck. the simple and the more complex
What more complex for us means is: Assertions to expect an outcome. Use the local and session storage to retrieve data and reuse it later. Add let's to store data and use it later. Functions to reduce re-use of code.
Summing up what we know so far:
@TomdeHaan To further narrow down this issue, the best thing would be if a reproduction could be shared with us, containing all required test code and app code to run these tests. If it's at all possible, sending a reproduction to support@cypress.io or sharing in this thread would be a huge step towards solving this.
If it's not possible to share a repro, here's some more avenues you could explore. I'm hoping to discover the specific testing steps that are causing a hang after 10.11.0:
tv-internet.cy.ts
.Hi all, @flotwig is there any news on this? We are seeing it in CircleCI, using the Cypress orb. Webkit hangs in CI but works fine locally (running a single spec file and test)
With debugging on, I am seeing a profiler constantly running until it times out. It ran for 2 hrs until I aborted it
cypress:server:util:process_profiler current & mean memory and CPU usage by process group:
cypress:server:util:process_profiler ┌─────────┬───────────────────┬──────────────┬──────────────────────────┬────────────┬────────────────┬──────────┬──────────────┬─────────────┐
cypress:server:util:process_profiler │ (index) │ group │ processCount │ pids │ cpuPercent │ meanCpuPercent │ memRssMb │ meanMemRssMb │ maxMemRssMb │
cypress:server:util:process_profiler ├─────────┼───────────────────┼──────────────┼──────────────────────────┼────────────┼────────────────┼──────────┼──────────────┼─────────────┤
cypress:server:util:process_profiler │ 0 │ 'WebKit' │ 4 │ '3667, 3672, 3733, 3736' │ 6.92 │ 6.56 │ 741.88 │ 753.25 │ 1445.46 │
cypress:server:util:process_profiler │ 1 │ 'cypress' │ 1 │ '2907' │ 0.03 │ 0.03 │ 402.34 │ 402.32 │ 420.86 │
cypress:server:util:process_profiler │ 2 │ 'plugin' │ 1 │ '3190' │ 0 │ 0 │ 194.47 │ 195.66 │ 430.13 │
cypress:server:util:process_profiler │ 3 │ 'electron-shared' │ 4 │ '2947, 3135, 2948, 3200' │ 0 │ 0 │ 181.88 │ 197.83 │ 198.87 │
cypress:server:util:process_profiler │ 4 │ 'other' │ 2 │ '42451, 42452' │ 0 │ 0 │ 3.34 │ 3.45 │ 3.59 │
cypress:server:util:process_profiler │ 5 │ 'TOTAL' │ 12 │ '-' │ 6.95 │ 6.58 │ 1523.91 │ 1551.53 │ 2493.82 │
cypress:server:util:process_profiler └─────────┴───────────────────┴──────────────┴──────────────────────────┴────────────┴────────────────┴──────────┴──────────────┴─────────────┘ +10s
I am using the following code to install webkit on a cypress docker image:
start: npx playwright install && npx playwright install-deps webkit && npm run start:test
Orb version is 2.2.0 Cypress is 12.7.0
Summing up what we know so far:
- The issue still seems to occur even after reverting 10.11.0's video refactor: [Cypress Webkit Ci Run] Test stuck during Ci run #24896 (comment)
- The issue could possibly, maybe, also be occurring on Chrome, though this could also be a red herring/different issue: [Cypress Webkit Ci Run] Test stuck during Ci run #24896 (comment)
- The issue seems to only crop up on "complex" test runs - although we also run "complex" tests in WebKit. So it seems more likely that this is a specific test case that is now broken in WebKit in 10.11.0.
- Issue seems to occur whether or not we are recording to Cypress Cloud.
@TomdeHaan To further narrow down this issue, the best thing would be if a reproduction could be shared with us, containing all required test code and app code to run these tests. If it's at all possible, sending a reproduction to support@cypress.io or sharing in this thread would be a huge step towards solving this.
If it's not possible to share a repro, here's some more avenues you could explore. I'm hoping to discover the specific testing steps that are causing a hang after 10.11.0:
- Is it failing on the same test file every time? For example, in the OP, it seems to hang on
tv-internet.cy.ts
.- Can you try to bisect to a specific test that causes the failure? Ex. skip/delete half of the tests, run CI, see if it fails, and repeat until a problematic test has been isolated.
We made contact with Brittani within Cypress regarding the sharing of our code. She will probably make contact with you about this.
Hi all, We have the same issue as this topic. We used:
FROM cypress/browsers:node16.18.0-chrome107-ff106-edge
RUN npx playwright install-deps webkit
RUN npm install --save-dev playwright-webkit
Cypress: 12.8.1
Browser: WebKit 16 (headless)
Node Version: v16.18.0 (/usr/local/bin/node)
When we run test:
DEBUG=cypress:server:* npx cypress run --browser webkit
We tried many proposed solutions, but they didn't work:
WEBKIT_DISABLE_COMPOSITING_MODE=1
CYPRESS_NO_COMMAND_LOG=1
and use --shm-size 2G
Please help, I have recorded the behavior of webkit and I am sending the file with the test for analysis The test also freezes on Ci run,
Hi @ggrek1988. Is there anything special about your config? Would you be able to share that?
@AtofStryker , uploading cypress.config.js and package.json fileConfig.zip
@AtofStryker Hi, Maybe you noticed something that could help me run the tests?
Also have issues with running webkit on CICD, test just hang randomly
We have the same/similar sporadic failures with Webkit on GHA. I set up a temp workflow where 7 Webkit jobs are running in parallel (on our self-hosted runners) every hour. And just sometimes, one of the jobs fails due to timeout
Run details:
Run history:
We just hit (and resolved) an issue with the symptom; we be left with the process_profiler
spamming the console with status tables until GitLab kills the process.
The source had ended with two tsconfig.json
files in the working folder. One a sibling of cypress
and thea child of cypress
. The content of these files was almost (but not quite) identical.
I am not sure if Cypress outputs an warning of some kind when it encounters two, or if it should throw a hard failure, but after removing the errant file things started working.
Please note: I am not Cypress expert, but I hope this is helpful to someone.
Edit: It seems that one of the two tsconfig.json
are create some kind of conflict.
@roadSurfer Can you write more about your solution?
Hi, I solved the problem in my project I used baseUrl in the configuration file, then cypress stopped crashing during CI/CD Maybe I can help someone, best regards:) https://docs.cypress.io/guides/references/best-practices#Setting-a-Global-baseUrl
Current behavior
We are currently experimenting with cross browser testing within the CiCd pipeline. Our main goal is to run Cypress with Webkit and Chrome and run it in multiple viewports.
We run Cypress on multiple machines within Gitlab, adding the --parallel to connect to the Cypress Dashboard. We found out that with every run the Webkit tests got stuck and eventually timed out.
Example of one of the files:
Example of what it looks like within Gitlab:
Example of timeout log within gitlab:
We enabled the debugger, and when analysing it, we see that the cypress:server:util:process_profiler keeps repeating itself in the end
Desired behavior
All tests run and finish correctly.
Test code to reproduce
Cypress Version
10.11.0
Node version
v16.14.2
Operating System
cypress-image/browsers:latest-cypress-10.11.0 docker image
Debug Logs
Other
No response