Code Monkey home page Code Monkey logo

Comments (11)

twalpole avatar twalpole commented on June 3, 2024 1

Fixed via 2537511 - Thanks for reporting and the help in verifying the fix!

from apparition.

twalpole avatar twalpole commented on June 3, 2024

@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.

jordanfbrown avatar jordanfbrown commented on June 3, 2024

The flow for the relevant part of the test is:

  1. User clicks a button
  2. The button triggers an AJAX call
  3. Our wait_for_ajax helper method is invoked
  4. Upon completion of the call, the page refreshes
  5. 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.

twalpole avatar twalpole commented on June 3, 2024

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.

jordanfbrown avatar jordanfbrown commented on June 3, 2024

@twalpole I was able to come up with a test case that reproduces the error consistently: jordanfbrown@627a948

from apparition.

twalpole avatar twalpole commented on June 3, 2024

@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.

jordanfbrown avatar jordanfbrown commented on June 3, 2024

PR opened: #13

Thanks again!

from apparition.

twalpole avatar twalpole commented on June 3, 2024

@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.

twalpole avatar twalpole commented on June 3, 2024

@jordanfbrown Could you please try using the retry_script_on_wrong_world branch and see if that fixes your issue.

from apparition.

jordanfbrown avatar jordanfbrown commented on June 3, 2024

@twalpole I'm not seeing any additional changes in the retry_script_on_wrong_world branch. Did you push your changes up?

from apparition.

twalpole avatar twalpole commented on June 3, 2024

@jordanfbrown Whoops -- forgot to actually commit -- sorry about that -- should be there now

from apparition.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.