- Revision
- 1598
- Author
- paul
- Date
- 2010-03-13 12:04:53 -0600 (Sat, 13 Mar 2010)
Log Message
tear down selenium after story (alternate to after scenario) + compile fixes
Modified Paths
- trunk/web/pom.xml
- trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/controllers/ScenarioController.java
- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumSteps.java
Added Paths
- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerScenarioSteps.java
- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerStorySteps.java
- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerScenarioStepsTest.java
- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerStoryStepsTest.java
Removed Paths
Diff
Modified: trunk/web/pom.xml (1597 => 1598)
--- trunk/web/pom.xml 2010-03-13 15:58:41 UTC (rev 1597) +++ trunk/web/pom.xml 2010-03-13 18:04:53 UTC (rev 1598) @@ -16,7 +16,7 @@ </modules> <properties> - <jbehave.version>2.5-SNAPSHOT</jbehave.version> + <jbehave.version>2.6-SNAPSHOT</jbehave.version> <jbehave.webapp.name>jbehave-web-runner</jbehave.webapp.name> </properties>
Modified: trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/controllers/ScenarioController.java (1597 => 1598)
--- trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/controllers/ScenarioController.java 2010-03-13 15:58:41 UTC (rev 1597) +++ trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/controllers/ScenarioController.java 2010-03-13 18:04:53 UTC (rev 1598) @@ -1,11 +1,5 @@ package org.jbehave.web.runner.waffle.controllers; -import static org.apache.commons.lang.StringUtils.isNotBlank; - -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; -import java.util.Properties; - import org.codehaus.waffle.action.annotation.ActionMethod; import org.codehaus.waffle.action.annotation.PRG; import org.codehaus.waffle.menu.Menu; @@ -20,6 +14,12 @@ import org.jbehave.scenario.reporters.ScenarioReporter; import org.jbehave.scenario.steps.CandidateSteps; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Properties; + +import static org.apache.commons.lang.StringUtils.isNotBlank; + public class ScenarioController extends MenuAwareController { private final ScenarioParser scenarioParser; @@ -64,7 +64,7 @@ try { outputStream.reset(); scenarioContext.clearFailureCause(); - scenarioRunner.run(storyDefinition(), configuration, steps); + scenarioRunner.run(storyDefinition(), configuration, true, steps); } catch (Throwable e) { scenarioContext.runFailedFor(e); }
Added: trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerScenarioSteps.java (0 => 1598)
--- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerScenarioSteps.java (rev 0) +++ trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerScenarioSteps.java 2010-03-13 18:04:53 UTC (rev 1598) @@ -0,0 +1,37 @@ +package org.jbehave.web.selenium; + +import com.thoughtworks.selenium.Selenium; +import org.jbehave.scenario.annotations.AfterScenario; +import org.jbehave.scenario.annotations.BeforeScenario; +import org.jbehave.scenario.steps.StepsConfiguration; + +public abstract class SeleniumPerScenarioSteps extends SeleniumSteps { + + public SeleniumPerScenarioSteps() { + } + + public SeleniumPerScenarioSteps(StepsConfiguration configuration) { + super(configuration); + } + + public SeleniumPerScenarioSteps(Selenium selenium) { + super(selenium); + } + + public SeleniumPerScenarioSteps(SeleniumStepsConfiguration configuration) { + super(configuration); + } + + @BeforeScenario + public void beforeScenario() throws Exception { + selenium.start(); + } + + @AfterScenario + public void afterScenario() throws Exception { + selenium.close(); + selenium.stop(); + } + + +}
Added: trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerStorySteps.java (0 => 1598)
--- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerStorySteps.java (rev 0) +++ trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerStorySteps.java 2010-03-13 18:04:53 UTC (rev 1598) @@ -0,0 +1,37 @@ +package org.jbehave.web.selenium; + +import com.thoughtworks.selenium.Selenium; +import org.jbehave.scenario.annotations.AfterStory; +import org.jbehave.scenario.annotations.BeforeStory; +import org.jbehave.scenario.steps.StepsConfiguration; + +public abstract class SeleniumPerStorySteps extends SeleniumSteps { + + public SeleniumPerStorySteps() { + } + + public SeleniumPerStorySteps(StepsConfiguration configuration) { + super(configuration); + } + + public SeleniumPerStorySteps(Selenium selenium) { + super(selenium); + } + + public SeleniumPerStorySteps(SeleniumStepsConfiguration configuration) { + super(configuration); + } + + @BeforeStory + public void beforeStory() throws Exception { + selenium.start(); + } + + @AfterStory + public void afterStory() throws Exception { + selenium.close(); + selenium.stop(); + } + + +} \ No newline at end of file
Modified: trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumSteps.java (1597 => 1598)
--- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumSteps.java 2010-03-13 15:58:41 UTC (rev 1597) +++ trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumSteps.java 2010-03-13 18:04:53 UTC (rev 1598) @@ -1,17 +1,14 @@ package org.jbehave.web.selenium; -import java.util.concurrent.TimeUnit; - -import org.jbehave.scenario.annotations.AfterScenario; -import org.jbehave.scenario.annotations.BeforeScenario; -import org.jbehave.scenario.steps.Steps; -import org.jbehave.scenario.steps.StepsConfiguration; - import com.thoughtworks.selenium.DefaultSelenium; import com.thoughtworks.selenium.Selenium; import com.thoughtworks.selenium.condition.ConditionRunner; import com.thoughtworks.selenium.condition.JUnitConditionRunner; +import org.jbehave.scenario.steps.Steps; +import org.jbehave.scenario.steps.StepsConfiguration; +import java.util.concurrent.TimeUnit; + /** * Steps implementation that can be used in Selenium-based scenarios. It * provides annotated methods to start and stop Selenium before and after @@ -21,7 +18,7 @@ * * @author Mauro Talevi */ -public class SeleniumSteps extends Steps { +public abstract class SeleniumSteps extends Steps { protected final Selenium selenium; protected final ConditionRunner runner; @@ -46,17 +43,6 @@ this.runner = createConditionRunner(selenium); } - @BeforeScenario - public void beforeScenario() throws Exception { - selenium.start(); - } - - @AfterScenario - public void afterScenario() throws Exception { - selenium.close(); - selenium.stop(); - } - /** * Creates Selenium used by the Steps, by default {...@link DefaultSelenium} * using "*firefox" as browser on localhost.
Added: trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerScenarioStepsTest.java (0 => 1598)
--- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerScenarioStepsTest.java (rev 0) +++ trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerScenarioStepsTest.java 2010-03-13 18:04:53 UTC (rev 1598) @@ -0,0 +1,97 @@ +package org.jbehave.web.selenium; + +import org.jbehave.scenario.Configuration; +import org.jbehave.scenario.MostUsefulConfiguration; +import org.jbehave.scenario.ScenarioRunner; +import org.jbehave.scenario.annotations.Given; +import org.jbehave.scenario.annotations.Then; +import org.jbehave.scenario.annotations.When; +import org.jbehave.scenario.definition.StoryDefinition; +import org.jbehave.scenario.parser.PatternScenarioParser; +import org.jbehave.scenario.parser.ScenarioParser; +import org.jbehave.scenario.steps.Steps; +import org.jmock.Expectations; +import org.jmock.Mockery; +import org.junit.Test; + +import com.thoughtworks.selenium.Selenium; +import com.thoughtworks.selenium.condition.ConditionRunner; + +public class SeleniumPerScenarioStepsTest { + + private Mockery mockery = new Mockery(); + + private static final String NL = "\n"; + + private final Configuration configuration = new MostUsefulConfiguration(); + private final ScenarioParser parser = new PatternScenarioParser(); + private final ScenarioRunner runner = new ScenarioRunner(); + private final Selenium selenium = mockery.mock(Selenium.class); + private final ConditionRunner conditionRunner = mockery + .mock(ConditionRunner.class); + + @Test + public void canRunSuccessfulScenario() throws Throwable{ + String input = "Scenario: A simple web test" + NL + + NL + + "Given a test" + NL + + "When a test is executed" + NL + + "Then a tester is a happy hopper"; + String path = "/path/to/input"; + mockery.checking(new Expectations(){{ + exactly(3).of(selenium).setContext(with(any(String.class))); + one(selenium).start(); + one(selenium).close(); + one(selenium).stop(); + }}); + Steps steps = new MySteps(selenium){ + + @Override + protected ConditionRunner createConditionRunner(Selenium selenium) { + return conditionRunner; + } + + @Override + protected Selenium createSelenium() { + return selenium; + } + + }; + StoryDefinition definition = parser.defineStoryFrom(input, path); + runner.run(definition, configuration, true, steps); + } + + + public static class MySteps extends SeleniumPerScenarioSteps { + + public MySteps() { + } + + public MySteps(Selenium selenium) { + super(selenium); + } + + @Given("a test") + public void aTest() { + } + + @When("a test is executed") + public void aTestIsExecuted() { + } + + @When("a test fails") + public void aTestFails() { + throw new RuntimeException("Test failed"); + } + + @When("a wait is requested") + public void aWaitIsRequested() { + waitFor(1); + } + + @Then("a tester is a happy hopper") + public void aTesterIsHappy() { + } + }; + +}
Added: trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerStoryStepsTest.java (0 => 1598)
--- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerStoryStepsTest.java (rev 0) +++ trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerStoryStepsTest.java 2010-03-13 18:04:53 UTC (rev 1598) @@ -0,0 +1,96 @@ +package org.jbehave.web.selenium; + +import com.thoughtworks.selenium.Selenium; +import com.thoughtworks.selenium.condition.ConditionRunner; +import org.jbehave.scenario.Configuration; +import org.jbehave.scenario.MostUsefulConfiguration; +import org.jbehave.scenario.ScenarioRunner; +import org.jbehave.scenario.annotations.Given; +import org.jbehave.scenario.annotations.Then; +import org.jbehave.scenario.annotations.When; +import org.jbehave.scenario.definition.StoryDefinition; +import org.jbehave.scenario.parser.PatternScenarioParser; +import org.jbehave.scenario.parser.ScenarioParser; +import org.jbehave.scenario.steps.Steps; +import org.jmock.Expectations; +import org.jmock.Mockery; +import org.junit.Test; + +public class SeleniumPerStoryStepsTest { + + private Mockery mockery = new Mockery(); + + private static final String NL = "\n"; + + private final Configuration configuration = new MostUsefulConfiguration(); + private final ScenarioParser parser = new PatternScenarioParser(); + private final ScenarioRunner runner = new ScenarioRunner(); + private final Selenium selenium = mockery.mock(Selenium.class); + private final ConditionRunner conditionRunner = mockery + .mock(ConditionRunner.class); + + @Test + public void canRunSuccessfulScenario() throws Throwable{ + String input = "Scenario: A simple web test" + NL + + NL + + "Given a test" + NL + + "When a test is executed" + NL + + "Then a tester is a happy hopper"; + String path = "/path/to/input"; + mockery.checking(new Expectations(){{ + exactly(3).of(selenium).setContext(with(any(String.class))); + one(selenium).start(); + one(selenium).close(); + one(selenium).stop(); + }}); + Steps steps = new MySteps(selenium){ + + @Override + protected ConditionRunner createConditionRunner(Selenium selenium) { + return conditionRunner; + } + + @Override + protected Selenium createSelenium() { + return selenium; + } + + }; + StoryDefinition definition = parser.defineStoryFrom(input, path); + runner.run(definition, configuration, true, steps); + } + + + public static class MySteps extends SeleniumPerStorySteps { + + public MySteps() { + } + + public MySteps(Selenium selenium) { + super(selenium); + } + + @Given("a test") + public void aTest() { + } + + @When("a test is executed") + public void aTestIsExecuted() { + } + + @When("a test fails") + public void aTestFails() { + throw new RuntimeException("Test failed"); + } + + @When("a wait is requested") + public void aWaitIsRequested() { + waitFor(1); + } + + @Then("a tester is a happy hopper") + public void aTesterIsHappy() { + } + }; + +} \ No newline at end of file
Deleted: trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumStepsTest.java (1597 => 1598)
--- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumStepsTest.java 2010-03-13 15:58:41 UTC (rev 1597) +++ trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumStepsTest.java 2010-03-13 18:04:53 UTC (rev 1598) @@ -1,95 +0,0 @@ -package org.jbehave.web.selenium; - -import org.jbehave.scenario.Configuration; -import org.jbehave.scenario.MostUsefulConfiguration; -import org.jbehave.scenario.ScenarioRunner; -import org.jbehave.scenario.annotations.Given; -import org.jbehave.scenario.annotations.Then; -import org.jbehave.scenario.annotations.When; -import org.jbehave.scenario.parser.PatternScenarioParser; -import org.jbehave.scenario.parser.ScenarioParser; -import org.jbehave.scenario.steps.Steps; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.junit.Test; - -import com.thoughtworks.selenium.Selenium; -import com.thoughtworks.selenium.condition.ConditionRunner; - -public class SeleniumStepsTest { - - private Mockery mockery = new Mockery(); - - private static final String NL = "\n"; - - private final Configuration configuration = new MostUsefulConfiguration(); - private final ScenarioParser parser = new PatternScenarioParser(); - private final ScenarioRunner runner = new ScenarioRunner(); - private final Selenium selenium = mockery.mock(Selenium.class); - private final ConditionRunner conditionRunner = mockery - .mock(ConditionRunner.class); - - @Test - public void canRunSuccessfulScenario() throws Throwable{ - String input = "Scenario: A simple web test" + NL - + NL - + "Given a test" + NL - + "When a test is executed" + NL - + "Then a tester is a happy hopper"; - String path = "/path/to/input"; - mockery.checking(new Expectations(){{ - exactly(3).of(selenium).setContext(with(any(String.class))); - one(selenium).start(); - one(selenium).close(); - one(selenium).stop(); - }}); - Steps steps = new MySteps(selenium){ - - @Override - protected ConditionRunner createConditionRunner(Selenium selenium) { - return conditionRunner; - } - - @Override - protected Selenium createSelenium() { - return selenium; - } - - }; - runner.run(parser.defineStoryFrom(input, path), configuration, steps); - } - - - public static class MySteps extends SeleniumSteps { - - public MySteps() { - } - - public MySteps(Selenium selenium) { - super(selenium); - } - - @Given("a test") - public void aTest() { - } - - @When("a test is executed") - public void aTestIsExecuted() { - } - - @When("a test fails") - public void aTestFails() { - throw new RuntimeException("Test failed"); - } - - @When("a wait is requested") - public void aWaitIsRequested() { - waitFor(1); - } - - @Then("a tester is a happy hopper") - public void aTesterIsHappy() { - } - }; - -}
To unsubscribe from this list please visit:
