I Spent some time yesterday tracking down a bizarre bug which was causing some of our Selenium tests to fail. Watching the browser running the tests, I could see that occasionally a page would fail to render, with an “invalid argument” error and a stack trace. The line in question was an
<%= end_form_tag %> in a layout. The strange thing was, it didn’t display the same behaviour when I ran the single failing test on its own, or when I viewed the page myself.
Or at least, I thought it didn’t. Because it seemed intermittent, I tried reloading the page a few times, and sure enough, the error appeared. Once. Then the page reloaded successfully six times, before failing again. This was completely repeatable – six times OK; one stack trace. Regular as clockwork.
Completely stumped, I thought I might as well at least replace the deprecated
<%= start_form_tag %> … <%= end_form_tag %> with
<% form_tag do %> … <% end %>, and lo and behold, that fixed it.
Unfortunately, I have no idea why. An imaginary prize to whoever can explain it!