On Fri, Dec 19, 2008 at 1:09 AM, Andrew Premdas <aprem...@gmail.com> wrote: > Hi All, > > Wanted to put this idea forward, see what you think of it. I'm using Aslaks > lorry feature to illustrate this. See > http://github.com/aslakhellesoy/cucumber_rails/tree/master/features/step_definitions/lorry_steps.rb. > > In particular > > within("table > tr:nth-child(#{pos.to_i+1})") do > click_link "Destroy" > and > > Then /^I should see the following lorries:$/ do |lorries| > lorries.raw[1..-1].each_with_index do |row, i| > row.each_with_index do |cell, j| > response.should have_selector("table > tr:nth-child(#{i+2}) > > td:nth-child(#{j+1})") { |td| > td.inner_text.should == cell > } > end > end > Now imagine this is a real project, and your designer comes along and > decides that lorries really should be shown in a horizontal scrolling > zoomable javascript widgity thing. Now out go the tables and the scenario > breaks. > > However if we use something like > > within("#lorries > .lorry:nth-child # not tested this syntax, > hope the meaning is clear > > then we have > > 1) Defined semantic tags that the designer should not touch > 2) Not relied on any html elements that a designer might change > 3) Created a step that works with the meaning of the UI not its presentation > > So what do you think? >
I agree with your sentiments. It's how I access (and encourage others to access) the views (both in step definitions and in view specs). -- Zach Dennis http://www.continuousthinking.com http://www.mutuallyhuman.com _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users