On 1 May 2009, at 03:32, Julian Leviston wrote:
Hey ben,
Selenium is slow, and we have a lot of
Ajax, so I'm just looking at ways to speed it up. Tags will be my
first port of call and splitting out between automated and
simulated. It irks me we can't then simply run all our tests with
one simple cucumber command -we need two. It'd be nice if webrat
could switch between browser types per scenario or per feature. Sigh.
Have you looked at celerity? I'm not sure if webrat has an adapter for
it yet, but it's a 'headless' browser which drives a lot faster than
selenium. Some people on this list are getting a lot of joy out of it.
Blog: http://random8.zenunit.com/
Learn rails: http://sensei.zenunit.com/
On 29/04/2009, at 3:47 PM, Ben Mabey <b...@benmabey.com> wrote:
Julian Leviston wrote:
Hey Ben,
It'd be kinda cool if there was a sort of before and after for a
feature rather than each scenario. Is there?
Nope. There is no before(:all) equivalent in cucumber. Just the
Before and After hooks, which are for scenarios.. and Backgrounds
which are just for scenarios on the given feature.
(Rails context) We often need this. It'd be really helpful for
things like when we want to test about 15 things on a particular
web page, and they don't require fresh data. We end up with a
login and setup type background which gets run every time rather
than simply once.
In the context of webrat a before(:all) would not help you a whole
lot since each scenario starts with a new session (so you have to
login each time, for example). I understand the argument for
complex data setup though. Having the same setup ran for each
scenario can get costly. I haven't felt enough pain though to
really justify adding something like that. Cleanup would be messy
because we couldn't wrap it all in a transaction AFAIK, so you
would have to have an after(:all) like method to clean up the
feature. For complex data that I rely on all the time I tend to
load it once with fixtures at boot up time within env.rb. This is
usually for look-up data... but if you were really concerned about
record creation you could do something similar. The question is if
the additional complexity of keeping all that global state in your
head worth the faster execution time. For me it generally is not.
I guess we could refactor it into a set of examples perhaps...
would that work? It just strikes me as quite complicated. It'd be
awesome if we had sub-scenarios (and they could be specified to
levels) ;-) Perhaps I'm just being too complicated.
I would need more context to really answer your question. However,
can I ask if your scenarios are written in a declarative or
imperative fashion[1]? If they are written declaratively, or at
least partly, then you can specify a lot more behavior in a step
without adding too much noise to the scenario. Another thing I
should point out is that you don't need to, and you shouldn't, test
everything on the Cucumber level. For complex views, for example,
it may be easier to do RSpec
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
Matt Wynne
http://blog.mattwynne.net
http://www.songkick.com
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users