David, Can you provide any more info? Is it just being talked about or are people actively working on it now? I would be interested in assisting. I've done a lot with Selenium and the ruby driver and would be interested in providing beautiful high level helpers that allow people switch from non-Selenium based specs to Selenium-based specs with more ease. I know this can be a barrier for people.
Zach On Thu, May 8, 2008 at 11:15 AM, David Chelimsky <[EMAIL PROTECTED]> wrote: > Just an FYI - spec-ui, an rspec extension that supports integration with > selenium and watir, has been under some discussion lately and should see > some new life soon. > > On May 8, 2008, at 10:10 AM, Zach Dennis wrote: > > I've had really iffy luck with Selenium plugins in the past > (selenium-on-rails, seleniumfu_rc, selenium_rc, etc.) so I've started to > write a RailsSeleniumStory. I also had to remove the > ActiveRecordSafetyListener in my efforts. > > The RailsSeleniumStory is a part of the mhs_testing plugin [0] and it > provides higher level helpers. For example I love how form-test-helper is > used to select and submit forms: > > # option 1 > form = select_form 'expense_form' > form.expense.amount = 12.99 > form.submit > > # option 2 > submit_form 'expense_form' do |form| > form.expense.amount = 12.99 > form.expense.category_id = 2 > form.expense.comments = "map for trip" > end > > You can use this same syntax within RailsSeleniumStories. Right now you can > also use "have_tag" and "with_tag" matchers with Selenium. It supports basic > matching (I wouldn't get to crazy with nesting or lots of > assert-select/have-tag options), but it will be supporting more options > shortly. > > So your login example could just look like: > > Given('log in as a admin user') > open "/admin/login" > submit_form "login_form" do |form| > form.login = 'developer' > form.password = 'test' > end > end > > Which IMO I really like because if you need variations of that you can pull > out a helper method like: > > def submit_login_form(user, password='test') > submit_form "login_form" do |form| > form.login = user.login > form.password = passsword > end > end > > And you could push your open into a helper as well: > def go_to_login_page > open "/admin/login" > end > > And now your Given could look like: > Given('log in as a admin user') > go_to_login_page > submit_login_form @user, 'test' > end > > Now granted submit_form and select_form both take a form's id, so each of > your forms need to have one. > > If you are interested and have the time please check it out. Granted it's > in its infancy and there's not a whole lot of docs right now (there is a > README.Selenium for instructions on how-to setup in your project), but you > can find me on GTalk or in irc.freenode.net (zdennis) and of course right > here on the rspec ML. I am have 33 scenarios using the RailsSeleniumStory, > > ttyl, > > Zach > > 0 - http://github.com/mvanholstyn/mhs_testing/tree/master > > > > On Thu, May 8, 2008 at 8:22 AM, Joseph Wilk <[EMAIL PROTECTED]> wrote: > >> I have been using Rspec stories with Webrat feeling very productive and >> happy. >> >> Then I needed to do something with Selenium (Webrat could have done what >> I needed but it does not yet have the functionality). >> >> Selenium-core as part of a rails plugin looked nice but did not seem to >> fit with rspec stories. So I went the Selenium-rc route. >> >> Since Selenium uses a separate instance of rails >> (http://www.nabble.com/stories-with-selenium-and-the-db-td16190686.html) >> I had to turn off the ActiveRecordSafetyListener used in rspec to make >> sure the db writes committed. >> >> Which in turn left me having to manually cleanup my selenium stories :( >> >> So that required writing a new, rather gritty scenario listener which >> dealt with the cleaning operation. It has to do lots of horrible things >> like remove all listeners for a selenium story and then re-add them all >> for the others stories. >> >> *Code Extract* >> >> def story_ended(title, narrative) >> case title >> when 'Edit a page' >> >> #We have finished the selenium story >> $selenium_driver.stop >> >> #Do we need to re-add some listeners >> if [EMAIL PROTECTED] >> >> >> Spec::Story::Runner.scenario_runner.add_listener(ActiveRecordSafetyListener.instance) >> @listener_reloaded=true >> end >> end >> end >> >> >> I had to duplicate a lot of the story steps since now any previous >> post/gets did not work since they post to the test instance and not the >> selenium rails instance. >> >> I also needed to invoke against the selenium driver so even when the >> steps would work I had to duplicate them with >> $selenium_driver.do_something() >> >> >> This nice Given: >> >> Given('log in as a admin user') >> post '/admin/sessions/create', :login => @user.login, :password => >> @user.password >> end >> >> Being duplicated with this >> >> Given('log in as a admin user') >> $selenium_driver.open '/admin/login' >> $selenium_driver.type 'login', 'developer' >> $selenium_driver.type 'password', 'test' >> $selenium_driver.click 'commit' >> end >> >> After some very painful testing and a lot of time I got my Selenium-rc >> and Webrat stories working. This experience really opened my eyes to the >> big void introduced by Selenium-rc running outside of the test instance. >> >> This has made me wonder whether I should have rspec stories stepping >> outside of the test rails instance to drive Selenium tests. >> >> Has anyone managed to make this process easier? >> >> I'm hoping I'm doing something silly which is making it all harder! >> >> Is it feasible to bring selenium into the test rails instances? >> >> Is it just always going to be painful? >> >> I was skipping along having a lot of fun with stories and Webrat, now >> I'm face down in a puddle of mud, dreading that Selenium moment. >> >> -- >> Joseph Wilk >> http://www.joesniff.co.uk >> -- >> Posted via http://www.ruby-forum.com/. >> _______________________________________________ >> rspec-users mailing list >> rspec-users@rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users >> > > > > -- > Zach Dennis > http://www.continuousthinking.com_______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > -- Zach Dennis http://www.continuousthinking.com
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users