The list of candidate steps can be created via multiple sources.
The groovy ones should be created via the GroovyStepsFactory, the Java
ones from the InstanceStepsFactory (or a DI-enabled factory).
BTW, we're in the process of writing a tutorial that will cover (amongst
other things) using WebDriver via Groovy.
Watch this space and we'll send out a notice as soon as it's been published.
Cheers
On 12/12/2010 23:05, Marcin Gryszko wrote:
> Hi,
>
> First, I created a testing project (using JBehave Web) written in
> Java. Then I wanted to switch completely to Groovy.
>
> My story class inherits from JUnitStories:
>
> public class InvoiceMeStories extends JUnitStories {
> ...
> }
>
> My first approach was quick and dirty: rename all .java to .groovy
> (with some minor changes, like replacing GStrings with Java strings).
> I was using still InstanceStepsFactory, because I thought that if I
> provide an instance of my steps (CustomerSteps in this case), it would
> work:
>
> @Override
> public List<CandidateSteps> candidateSteps() {
> return new InstanceStepsFactory(configuration(),
> new CustomerSteps(new CustomerPageFactory(driverProvider)),
> new PerStoriesWebDriverSteps(driverProvider), // or
> PerStoryWebDriverSteps or PerScenarioWebDriverSteps
> new
> WebDriverScreenshotOnFailure(driverProvider)).createCandidateSteps();
> }
>
> After running the tests, I got:
>
> invoice-me-test ---
> [INFO] Running stories using embedder Embedder[...]
> [INFO] Found class names: []
>
> No stories was found.
>
> Then, I had a look at the manual and I found an example with
> GroovyStepsFactory
>
> @Override
> public List<CandidateSteps> candidateSteps() {
> GroovyResourceFinder resourceFinder = new
> GroovyResourceFinder(codeLocationFromPath("src/main/groovy"),
> "**/*.story", "");
> return new GroovyStepsFactory(configuration(), new
> GroovyContext(resourceFinder)).createCandidateSteps();
> }
>
> But, I my case (I'm using Selenium with WebDriver), how do I add
> PerStoriesWebDriverSteps? GroovyStepsFactory constructor does not
> admit any additional steps.
>
> Or, should I add these two methods (copied from
> PerStoriesWebDriverSteps) to InvoiceMeStories? These methods will add
> the functionality of PerStoriesWebDriverSteps without explicitely
> instantiating these class:
>
> @BeforeStories
> public void beforeStories() throws Exception {
> driverProvider.initialize();
> }
>
> @AfterStories
> public void afterStories() throws Exception {
> driverProvider.get().quit();
> }
>
> Best regards/mit freundlichen GrĂ¼ssen/Saludos cordiales/Pozdrowienia
>
> Marcin Gryszko
> Freelance architect/developer; Sun/Oracle certified (OCM Java EE
> Enterprise Architect, SCEA,SCBCD,SCWCD,SCJP)
> Contact me for availability and rates:
> Mobile: +34658358605, Skype/Twitter: mgryszko
>
>
>
> On Fri, Dec 10, 2010 at 9:27 PM, Mauro Talevi
> <[email protected]> wrote:
>> Hi Marcin,
>>
>> web steps are qualitatively no different from core steps, the only
>> different being that they wrap Selenium (or other web tool).
>>
>> If you want to use groovy to write your steps, you should use the
>> GroovyStepsFactory.
>>
>> What is the problem you're finding?
>>
>> Cheers
>>
>> On 10/12/2010 09:44, Marcin Gryszko wrote:
>>> Is it possible to define JBehave Web steps in Groovy? There is an
>>> example in the user doc for the plain JBehave. But in case of JBehave
>>> Web, should I use GroovyStepsFactory or InstanceStepsFactory?
>>>
>>> When I try to use InstanceStepsFactory with steps defined in a Groovy
>>> class, no stories are found. In my naive approach I simply changed all
>>> .java source files to .groovy and compiled them with groovyc.
>>>
>>> If I try to use GroovyStepsFactory, how do I add
>>> PerStoriesWebDriverSteps and WebDriverScreenshotOnFailure?
>>>
>>> Below you find my preliminary code for JUnitStories.candidateSteps()
>>> for Groovy and Java:
>>>
>>> public class InvoiceMeStories extends JUnitStories {
>>>
>>> // GROOVY VERSION
>>>
>>> @Override
>>> public List<CandidateSteps> candidateSteps() {
>>> GroovyResourceFinder resourceFinder = new
>>> GroovyResourceFinder(codeLocationFromPath("src/main/groovy"),
>>> "**/*.story", "");
>>> return new GroovyStepsFactory(configuration(), new
>>> GroovyContext(resourceFinder)).createCandidateSteps();
>>> }
>>>
>>>
>>> // JAVA VERSION
>>>
>>> @Override
>>> public List<CandidateSteps> candidateSteps() {
>>> return new InstanceStepsFactory(configuration(),
>>> new CustomerSteps(new CustomerPageFactory(driverProvider)),
>>> new PerStoriesWebDriverSteps(driverProvider), // or
>>> PerStoryWebDriverSteps or PerScenarioWebDriverSteps
>>> new
>>> WebDriverScreenshotOnFailure(driverProvider)).createCandidateSteps();
>>> }
>>> }
>>>
>>> Best regards/mit freundlichen GrĂ¼ssen/Saludos cordiales/Pozdrowienia
>>>
>>> Marcin Gryszko
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>>
>>> http://xircles.codehaus.org/manage_email
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>> http://xircles.codehaus.org/manage_email
>>
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
>
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email