Pivotal Labs

Main menu

Skip to primary content
Skip to secondary content
  • About
  • Case Studies
  • Team
    • Executives
    • Locations
      • San Francisco (HQ)
      • Boston
      • Boulder
      • Denver
      • London
      • Los Angeles
      • New York
  • Community
    • Blogs
    • Tech Talks
    • Events
  • Careers
    • Lifestyle
    • Principles & Practices
    • Benefits
    • FAQ
    • Apply
  • Tools
  • Contact
    • Press Room
    • Press Releases
    • In The News
    • Press Kit
  • All
  • Labs
  • Standup
  • Tracker

[Standup][SG] 2011-11-17 – Chock-full of JavaScript

Pivotal Labs
Thursday, November 17, 2011

Helps

“Adding a JS alert box (with remote:true, confirm: 'Are you sure?' on a link_to) causes the cucumber feature to fail. It looks like, after we accept the alert with page.page.driver.browser.switch_to.alert.accept, the browser runs much slower than the cucumber feature, so while everything technically works, the feature fails. We worked around this by delaying cucumber with page.should have_no_content('content inside removed li') but it feels like a hack. Does anyone know what could be wrong with our setup, or is this to be expected?”

  • There were no comments other than the work-around we’re already using.

“The pattern we use when testing ajax calls in Jasmine feels unsatisfactory because expect($.ajax).toHaveBeenCalledWith({ /* all params here */}); requires all the parameters passed to the ajax call to be specified in the expectation. This includes parameters we don’t care about, such as beforeSend (which is passed by Rails’ remote: true). There must be a better way?”

  • One suggestion was to use something like RSpec’s hash_including, or building it if it doesn’t exist. Turns out, there’s a pull request from earlier this year with just this improvement.

Interestings

  • To get the html of an element (ie: a ‘ul’) including itself, append the element to a new element (ie: an empty div), then get the html of the new element. For example: $('<div>').append($('ul')).html(). The element’s parent could also be used if the element is an only child.

  • When appending an element which already exists in the DOM to another element, it will be moved from its present location in the DOM. This can be problematic when using the trick above to generate an element’s html, and is fixed by cloning the element.

  • If you see ‘Timezone Displacement out of range’ when doing a heroku db:push, it’s probably because you’re using Ruby 1.9.3 in development while Heroku runs 1.9.2. Don’t do that.

Events

  • GOV Camp at Suntec City TODAY, November 18, 2-10pm
  • 0 Shares
  • Share on Facebook
  • Share on Twitter

2 Comments

  1. Brennan Falkner says:

    function($node) {
    var node = $node[0];

    var attrs = “”;
    for (var i=0;i < node.attributes.length;i++) {
    var attr = node.attributes.item(i);
    attrs += " " + attr.nodeName + '="' + attr.nodeValue + '"';
    }
    return "<" + node.nodeName + attrs + ">” + node.innerHTML + ““;
    }

    Generally creating things in order to do a read would be considered a hack.

    November 18, 2011 at 2:34 am

  2. Dmytrii Nagirniak says:

    Don’t bother stubbing `$.ajax`.
    Just use https://github.com/pivotal/jasmine-ajax and write spec like so:

    data = JSON.parse(mostRecentAjaxRequest().params)
    expect(data.yourStuff).toBe(“YourStuff”)

    The `mostRecentAjaxRequest()` returns the full XHR object so you can any type of assertions on it.

    Here’s one more example: http://dev.approache.com/testing-your-javascript/#slide21

    Cheers.

    November 20, 2011 at 9:29 pm

Add New Comment Cancel reply

Your email address will not be published.

Pivotal Labs

Pivotal Labs

Recent Posts

  • Does the set of all sets contain itself?
  • Standup 3/8/2012
  • Standup 3/7/2012
Subscribe to Pivotal's Feed

Author Topics

riddles (1)
agile (167)
capistrano (2)
rails (26)
movember (1)
git (10)
railsdoc (1)
object-design (1)
bdd (3)
cucumber (3)
linkedin (1)
oauth (1)
ruby (17)
tdd (2)
lvh.me (1)
rails 3.1.1 (1)
selenium (6)
homebrew (1)
mysql (5)
rvm (1)
sproutcore (1)
paperclip (2)
pry (1)
amazon (1)
heroku (1)
rails3 (2)
jasmine (3)
design (3)
process (12)
productivity (8)
learning (1)
olin (1)
migrations (2)
mongodb (2)
devise (2)
javascript (13)
rubymine (4)
ipad (1)
whurl (1)
head.js (1)
pairing (2)
tools (4)
pair programming (1)
rspec (10)
rspec2 (1)
ruby19 (1)
incubation (3)
startup (5)
api (1)
presenter (1)
vanna (1)
pivotal tracker (5)
capybara (1)
fakeweb (1)
webmock (1)
intern (1)
ruby on rails (25)
meetup (1)
textmate (1)
testing (20)
solr (4)
nyc-standup (11)
community (1)
opensource (3)
activerecord (4)
chrome (1)
mp4 (1)
activeresource (1)
flash (3)
neo4j (1)
nginx (1)
rsoc (1)
meta programming (1)
agile standup (7)
government (3)
webos (4)
xss (1)
jquery (1)
bundler (2)
ci (3)
gems (5)
postgresql (1)
geminstaller (1)
gemcutter (1)
cloud (2)
rack (2)
refraction (1)
gem (5)
refactoring (1)
validations (1)
webrat (1)
engine-yard (1)
firefox (2)
jsunit (1)
mongrel (2)
thin (1)
unicorn (1)
facebook (1)
rubygems (5)
jruby (1)
actioncontroller (1)
rails 2.3 (1)
palmpre (1)
autotest (1)
mac (2)
hosting (1)
goruco (11)
database (3)
railsconf (11)
gogaruco (4)
deployment (4)
github (1)
ie (1)
ajax (1)
intellij (1)
json (1)
asset packaging (1)
polonium (1)
character encoding (1)
utf-8 (1)
test (3)
civics (1)
hpricot (1)
rake (3)
sms (1)
unicode (1)
iphone (1)
java (1)
safari (1)
memory leaks (1)
rr (3)
editor (1)
css (1)
nyc (3)
performance (5)
fun (5)
enterprise rails (1)
health (1)
new and cool (1)
general (2)
treetop (1)
errors (1)
stack (1)
trace (1)
cache (1)
cookies (1)
freesoftware (1)
conferences (1)
development (1)
driven (1)
proxy (1)
caching (1)
peertopatent (1)
languages (1)
rest (2)
rubyforge (1)
sake (1)
file (1)
upload (1)
constants (1)
osx (1)
terminal (1)
pairprogramming (2)
  • About
  • Case Studies
  • Team
  • Community
  • Careers
  • Tools
  • Contact
  • Labs
  • Events

Contact Us

contact@pivotallabs.com
+1 415-77-PIVOT
TwitterLinkedInFacebook

Pivotal Tracker

Tracker is the award-winning agile project management tool that enables real-time collaboration around a shared, prioritized backlog.
Visit pivotaltracker.com >