Bug #14340
Updated by Ivan Necas over 6 years ago
While debugging #13293, I've noticed, that it can take a while to load icons, when the machine
is under load. This can potentially lead to layout change (see the screenshots), that leads
https://github.com/teampoltergeist/poltergeist#mouseeventfailed-errors.
Debugging notes:
The issue is pretty hard to debug. Here are some hints to get some additional
tricks that can help to detect the issue:
I've used this snippet so see and compare how the page
looks right before the click event should happen
<pre>
20.times do
visit edit_host_path(host)
assert page.has_link?('Parameters', :href => '#params')
click_link 'Parameters'
save_screenshot
end
</pre>
Another good thing was looking into output of the `click` method
(it returns the coordinates that were clicked). Tracking that
for a while showed this:
<pre>
2016-03-23T19:14:37 [app] [D] ====== click: {"position"=>{"x"=>851, "y"=>385}}
2016-03-23T19:15:20 [app] [D] ====== click: {"position"=>{"x"=>851, "y"=>385}}
2016-03-23T19:15:48 [app] [D] ====== click: {"position"=>{"x"=>851, "y"=>365}}
</pre>
The coordinates of the event when the failure happened were different to the usual
values, which was a good indication that something is wrong with the layout.
Also, running it inside VM with 2GB of RAM and running 2 more tests suites in parallel
to simulate the load in Jenkins helped to reproduce the issue.
is under load. This can potentially lead to layout change (see the screenshots), that leads
https://github.com/teampoltergeist/poltergeist#mouseeventfailed-errors.
Debugging notes:
The issue is pretty hard to debug. Here are some hints to get some additional
tricks that can help to detect the issue:
I've used this snippet so see and compare how the page
looks right before the click event should happen
<pre>
20.times do
visit edit_host_path(host)
assert page.has_link?('Parameters', :href => '#params')
click_link 'Parameters'
save_screenshot
end
</pre>
Another good thing was looking into output of the `click` method
(it returns the coordinates that were clicked). Tracking that
for a while showed this:
<pre>
2016-03-23T19:14:37 [app] [D] ====== click: {"position"=>{"x"=>851, "y"=>385}}
2016-03-23T19:15:20 [app] [D] ====== click: {"position"=>{"x"=>851, "y"=>385}}
2016-03-23T19:15:48 [app] [D] ====== click: {"position"=>{"x"=>851, "y"=>365}}
</pre>
The coordinates of the event when the failure happened were different to the usual
values, which was a good indication that something is wrong with the layout.
Also, running it inside VM with 2GB of RAM and running 2 more tests suites in parallel
to simulate the load in Jenkins helped to reproduce the issue.