[rspec-users] Using semantics in steps

Aslak Hellesøy aslak.hellesoy at gmail.com
Fri Dec 19 12:01:59 EST 2008


> On Fri, Dec 19, 2008 at 1:09 AM, Andrew Premdas <apremdas at 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?
>>
>

Feel free to submit a patch.

Aslak

> 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 at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list