_рдЕрд╕реНрд╡реАрдХрд░рдг: рдпрд╣ рдЕрдиреБрд░реЛрдз рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Capybara рдХреЗ рд╕рд╛рде JavaScript рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдЙрдкрдЬрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред_
рдореЗрд░реЗ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдбрд┐рдд рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЬреЗрдПрд╕ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЬреЗрдПрд╕ рдХреЗ _on_ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрдЪреНрдЫреА рдШрдВрдЯрд┐рдпрд╛рдБ рдФрд░ рд╕реАрдЯреА рдорд┐рд▓рддреА рд╣реИрдВред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреАрдЬреЛрдВ рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ; рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдбрдмреНрд▓реНрдпреВ/рдФрд░ рдбрдмреНрд▓реНрдпреВ/рдУ рдЬреЗрдПрд╕ рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЬреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ рдХрд┐ рдЖрд░рдПрд╕рдкреАрдИрд╕реА рдХреЛ рдПрдХ рд╣реА рд╕реНрдкреЗрдХ рдХреЛ рджреЛ рдмрд╛рд░ рдбрдмреНрд▓реНрдпреВ/рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
it 'does this same thing with and without JS enabled', :run_with => [{:js => true}, {:js => false}] do
# stuff here
end
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдмрд╣реБрдд рд╣реА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ (рд╕реЗрд▓реЗрдирд┐рдпрдо) рдкрд░ рдбрдмреНрд▓реНрдпреВ/рдУ рдЬреЗрдПрд╕ (рд░реИрдХ рдЯреЗрд╕реНрдЯ) рдбрдмреНрд▓реНрдпреВ/рдЬреЗрдПрд╕ рдФрд░ рд╡реЗрдмрдХрд┐рдЯ (рдХреИрдкреАрдмрд╛рд░рд╛-рд╡реЗрдмрдХрд┐рдЯ) рдкрд░ рдбрдмреНрд▓реНрдпреВ/рдЬреЗрдПрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
it 'does this same thing with and without JS enabled', :run_with => [{:js => false}, {:driver => :selenium}, {:driver => :webkit}] do
# stuff here
end
рдореИрдВ run_with
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╡рд░реНрдмреЛрдЬрд╝ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ:
it 'does this same thing with and without JS enabled', :run_with_all_drivers => true do
# stuff here
end
рд╡рд┐рдЪрд╛рд░? рдореИрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдФрд░ рдХреЛрдб рдХреЛ рджреЗрдЦрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджреЗрдЦрд╛ред
рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЖрд░рдПрд╕рдкреАрд╕реА рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
[true, false].each do |js|
it 'does this same thing with and without JS enabled', :run_with => {:js => js } do
# stuff here
end
end
рдпрджрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рдбреАрдПрд╕рдПрд▓ рд╡рд┐рдзрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
module WithAndWithoutJS
def with_and_without_js(&block)
[true, false].each do |js|
context "with :js => #{js}", :run_with => { :js => js } do
module_eval(&block)
end
end
end
RSpec.configure { |c| c.extend self }
end
рдлрд┐рд░ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
describe "My integration spec" do
with_and_without_js do
it "does something with and without js" do
end
end
end
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИред рдЖрдк рдЬреЛ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдмрджрд▓рдирд╛ рдПрдХ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрд░рдПрд╕рдкреАрд╕реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХрд╛ рдмреЛрдЭ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдкреНрд░рд╡реГрддреНрддрд┐ рдЗрд╕реЗ рдореВрд▓ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ .
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдпрджрд┐ рдЖрдк рдПрдХ rspec-multi-filters
рд░рддреНрди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ :)ред
@myronmarston рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдереА рдХрд┐ рдЖрд░рдПрд╕рдкреАрд╕реА рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред :)
:+1: рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЖрд░рдПрд╕рдкреАрд╕реА рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
рдпрджрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рдбреАрдПрд╕рдПрд▓ рд╡рд┐рдзрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдлрд┐рд░ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИред рдЖрдк рдЬреЛ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдмрджрд▓рдирд╛ рдПрдХ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрд░рдПрд╕рдкреАрд╕реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХрд╛ рдмреЛрдЭ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдкреНрд░рд╡реГрддреНрддрд┐ рдЗрд╕реЗ рдореВрд▓ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ .
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдпрджрд┐ рдЖрдк рдПрдХ
rspec-multi-filters
рд░рддреНрди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ :)ред