I found a solution, which works for me at least.
In that article I mentioned a while back it talks about how
wait_for_ajax really isn’t the right solution anyway and that the right approach was to use Capybara’s
find which will wait for the elements to come into view. I didn’t really understand how this works at first, but I’ve been playing around with it, and it is starting to make sense to me.
So what I’ve been doing is this - when I want to wait for Turbo to load a new view, I identify an element that only appears on the to-be-loaded view, and I set up a
find for that element - something like this
find will wait until the element comes into view, which is pretty much what
wait_for_ajax is trying to do anyway, but this is more specific and works really well once you start down this path.
I’m mostly using this with turbo-frames rather than turbo-streams but I think it will work the same way
with anything that changes the dom. You just need to know what you’re going to be looking for.