c is undefined Johnson Error clicking a Jquery Tab
I'm getting this error:
When I click the "Users" tab # features/step_definitions/users/User_Access_steps.rb:64
c is undefined (Johnson::Error)
inline:690 [JavaScript]
inline:699 [JavaScript]
inline:55 [JavaScript]
inline:49 [JavaScript]
./features/step_definitions/users/User_Access_steps.rb:65:in `/^I click the "([^"]*)" tab$/'
features/users/Permissions.feature:75:in `When I click the "Users" tab'
With a custom step that I defined:
When /^I click the "([^"]*)" tab$/ do |arg1| page.locate(:css, ".tabs > ul > li > a:contains('" + arg1 + "')").click(); end
However, this also fails if I use the usual click_link on the link. The link is generated as part of Jquery UI's tabs code, but the html for the link is simply: Users
I'd be happy to give any more information needed... I am just getting up to speed on the framework and am not sure what's relevant.
I've found some more info.
The error boils down to something going on deep in the Jquery UI code. If I run the un minified version of the JQuery UI Tabs code, then I get slightly better information:
WARNIING: [Wed Aug 04 2010 12:00:18 GMT-0400 (EST)] {ENVJS} Exception while dispatching events: TypeError: hash is undefined
When I click the "Users" tab # features/step_definitions/users/User_Access_steps.rb:64
hash is undefined (Johnson::Error)
inline:71 [JavaScript]
inline:330 [JavaScript]
inline:55 [JavaScript]
inline:49 [JavaScript]
./features/step_definitions/users/User_Access_steps.rb:65:in /^I click the "([^"]*)" tab$/' features/users/Permissions.feature:74:inWhen I click the "Users" tab'
That line that is blowing up refers to the tab's hash in jquery.
_sanitizeSelector: function(hash) {
return hash.replace(/:/g, '\\:'); // we need this because an id may contain a ":"
},
Which is called from the onclick handler for the tab. Doing some searching around in the code for how they use the term "hash" it looks like they've had to allow for some browser specific functionality, so there is probably a collision between technologies going on.
Probably can't do anything about it. But it's out there as one thing that envjs stutters on that selenium and non-headless seems to catch. For now I'll just use selenium for this scenario, but if anyone wants to try to debug and tackle this and wants more info, let me know.
If you have some way I can simply recreate this, I can at least triage it, to see if it's an easy fix ... or a hard one.