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.
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