Comments (11)
Fixed via 2537511 - Thanks for reporting and the help in verifying the fix!
from apparition.
@jordanfbrown It could be the script is running while the page is changing (which would an apparition bug), what are the tests where it occurs doing around the script evaluation?
Note: with all drivers using Capybara you're going to be much better off using visual change assertions rather than pending Ajax hacks if at all possible.
from apparition.
The flow for the relevant part of the test is:
- User clicks a button
- The button triggers an AJAX call
- Our
wait_for_ajax
helper method is invoked - Upon completion of the call, the page refreshes
- The above error is thrown at some point between 3 and 4
The test was initially written to use a helper, wait_for_ajax
, which executes some Javascript code. My guess is that the page refresh is interrupting the assertion. I ended up just removing the wait_for_ajax
call entirely in this case, but I wonder if there may actually be a bug here like you said where the script is running as the page refreshes. What do you think? Is there any more information I can provide? I can try and reproduce in this project's test suite if that would be helpful.
And to follow up on your comment - we definitely don't use this helper for any new specs, but it's a massive test suite so going through and updating all old cases to use visual assertion is unfortunately quite tedious.
from apparition.
Ok, so it probably is the script being run across two different contexts due to page refresh. If you could produce a reproducing test case that would be a great help 👍I’ll probably get to look at this Sunday or Monday
from apparition.
@twalpole I was able to come up with a test case that reproduces the error consistently: jordanfbrown@627a948
from apparition.
@jordanfbrown Great - could you please submit that test as a PR, and I'll take a look at fixing it Sunday/Monday -- thanks!
from apparition.
PR opened: #13
Thanks again!
from apparition.
@jordanfbrown I merged in the test and have been playing with it. Unfortunately the only reason it's consistently failing is because Capybara.default_max_wait_time
is set to 0 seconds in that test (which it should never be in real usage) and it fails on the have_content('Clicked')
not on the evaluate_script. If Capybara.default_max_wait_time` is set to a normal number of 2 seconds everything passes. I haven't been able to come up with a way that will reliably fail under normal usage. I'm going to add retrying for execute/evaluate_script and we'll see if that fixes the issue.
from apparition.
@jordanfbrown Could you please try using the retry_script_on_wrong_world
branch and see if that fixes your issue.
from apparition.
@twalpole I'm not seeing any additional changes in the retry_script_on_wrong_world
branch. Did you push your changes up?
from apparition.
@jordanfbrown Whoops -- forgot to actually commit -- sorry about that -- should be there now
from apparition.
Related Issues (20)
- [feature request] Support more structured logging from the browser HOT 2
- Screenshots occasionally have a blank white rectangle at the top HOT 1
- Does not submit empty form parameters HOT 1
- Chrome Version 85 fails to load resources HOT 14
- Unable to get all cookies HOT 1
- Using `.option_select` causes test to never finish HOT 2
- Window management not working /window handles not returned when headless=false HOT 1
- `attach_file` not working with remote browser HOT 1
- Hangs with no output HOT 1
- Capybara::Apparition::CDPError Invalid parameters HOT 1
- Node#click is flaky? HOT 2
- page.evaluate_script doesn't wait for page to be ready?
- apparition doesn't play nice with byebug HOT 1
- Unexpected inner loop exception: unknown keyword: :type: unknown keyword: :type HOT 2
- Request: A new version bump that includes PR #79 HOT 5
- DOMException: Failed to execute 'querySelectorAll' on 'Element': The provided selector is empty.
- Can't connect to remote Chrome by name
- Bad URI Exception for WebSocket while running tests
- Can't read clipboard HOT 1
- Is this gem still maintained?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apparition.