rubycdp / ferrum

Headless Chrome Ruby API
https://ferrum.rubycdp.com
MIT License
1.7k stars 122 forks source link

Ferrum::ProcessTimeoutError since cuprite bump from 0.13 to 0.14.3 #319

Open filipefurtad0 opened 1 year ago

filipefurtad0 commented 1 year ago

Hello :wave:

We're getting inconsistent failures on our build, since we've bumped Cuprite from 0.13to 0.14.3.

The error occurs when attempting to visit a URL, on headless chrome (/account in the example below):

     Failure/Error: visit "/account"

     Ferrum::ProcessTimeoutError:
       Browser did not produce websocket url within 20 seconds, try to increase `:process_timeout`. See https://github.com/rubycdp/ferrum#customization

This seems like a concurrency issue as increasing a number of parallel tests also increases the chances that this error occurs - we use Knapsack Pro to run parallel tests on Github Actions.

However, the issue was already present, when running the build without the parallel spec strategy. Re-running the spec always makes it pass.

Any ideas/suggestions how fix this issue?

Thanks in advance, Filipe

andrewhavens commented 1 year ago

We're also running into this problem. We're also using GitHub Actions for our CI. Randomly, some tests fail with this error. I'm not sure if it's more common when running specs in parallel. I've tried increasing the process timeout to 30 seconds the problem still occurs, so the process timeout config isn't the problem in this particular case. If there was a way to retry a certain number of times, that would probably solve this issue, but I'm not sure how best to do that.

route commented 1 year ago

@filipefurtad0 do you still have issues or that was RAM error? @andrewhavens did you consider it to be RAM error as well?

andrewhavens commented 1 year ago

@route Seems like it could be a possibility, but how would you go about confirming that it's a RAM error, and how would you fix it? According to the GitHub docs, the ubuntu-latest runner provides 7 GB of RAM (which seems like it would be enough?). The output of the test run looks like this:

2 processes for 123 specs, ~ 61 specs per process

Randomized with seed 49860

Randomized with seed 34500
...........................................F............................F.....................................F......................

Finished in 3 minutes 26.5 seconds (files took 11.24 seconds to load)
128 examples, 0 failures

Randomized with seed 34500

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF*FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
route commented 1 year ago

@andrewhavens if you could turn on debug output of ferrum we could see where it stopped and why.