Skip to content

Commit

Permalink
Fix issue with Cucumber driverLifecycle and move integration test to …
Browse files Browse the repository at this point in the history
…right package
  • Loading branch information
Toilal committed Aug 24, 2016
1 parent cb73bfe commit dd5e191
Show file tree
Hide file tree
Showing 19 changed files with 75 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,14 @@ protected void starting(Class<?> testClass) {
* @param testName Test name
*/
protected void starting(Class<?> testClass, String testName) {
EffectiveParameters<?> sharedParameters = this.sharedMutator.getEffectiveParameters(testClass, testName, getDriverLifecycle());
EffectiveParameters<?> parameters = this.sharedMutator.getEffectiveParameters(testClass, testName, getDriverLifecycle());

SharedWebDriver sharedWebDriver = SharedWebDriverContainer.INSTANCE.getOrCreateDriver(new Supplier<WebDriver>() {
@Override
public WebDriver get() {
return FluentTestRunnerAdapter.this.newWebDriver();
}
}, testClass, testName, sharedParameters.getDriverLifecycle());
}, parameters.getTestClass(), parameters.getTestName(), parameters.getDriverLifecycle());

initFluent(sharedWebDriver.getDriver());
}
Expand Down Expand Up @@ -109,9 +109,9 @@ protected void finished(Class<?> testClass, String testName) {
DriverLifecycle driverLifecycle = getDriverLifecycle();

if (driverLifecycle == DriverLifecycle.METHOD) {
EffectiveParameters<?> sharedParameters = this.sharedMutator.getEffectiveParameters(testClass, testName, driverLifecycle);
EffectiveParameters<?> parameters = this.sharedMutator.getEffectiveParameters(testClass, testName, driverLifecycle);

SharedWebDriver sharedWebDriver = SharedWebDriverContainer.INSTANCE.getDriver(sharedParameters.getTestClass(), sharedParameters.getTestName(), sharedParameters.getDriverLifecycle());
SharedWebDriver sharedWebDriver = SharedWebDriverContainer.INSTANCE.getDriver(parameters.getTestClass(), parameters.getTestName(), parameters.getDriverLifecycle());
if (sharedWebDriver != null) {
SharedWebDriverContainer.INSTANCE.quit(sharedWebDriver);
}
Expand Down
2 changes: 1 addition & 1 deletion fluentlenium-cucumber/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
</executions>
<configuration>
<includes>
<include>**/BasicRunner.java</include>
<include>**/integration/**/*</include>
</includes>
</configuration>
</plugin>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
package org.fluentlenium.cucumber.adapter;

import org.fluentlenium.adapter.SharedMutator;
import org.fluentlenium.configuration.ConfigurationException;
import org.fluentlenium.configuration.ConfigurationProperties;
import org.fluentlenium.configuration.ConfigurationProperties.DriverLifecycle;

/**
* Cucumber implementation of {@link SharedMutator}, replacing testClass with a null reference as it doesn't make sense
* and raising a {@link org.fluentlenium.configuration.ConfigurationException} when {@link DriverLifecycle#CLASS} is given.
* to link {@link org.openqa.selenium.WebDriver} instances with classes defining Step.
*/
public class FluentCucumberSharedMutator implements SharedMutator {
@Override
public <T> EffectiveParameters<T> getEffectiveParameters(Class<T> testClass, String testName, DriverLifecycle driverLifecycle) {
if (driverLifecycle == DriverLifecycle.METHOD) {
// It has no sense to use METHOD lifecycle in Cucumber.
driverLifecycle = DriverLifecycle.CLASS;
if (driverLifecycle == DriverLifecycle.CLASS) {
throw new ConfigurationException("Cucumber doesn't support CLASS driverLifecycle.");
}
return new EffectiveParameters<>(null, testName, driverLifecycle);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package org.fluentlenium.cucumber.adapter;

import org.assertj.core.api.Assertions;
import org.assertj.core.api.ThrowableAssert;
import org.fluentlenium.adapter.SharedMutator;
import org.fluentlenium.configuration.ConfigurationException;
import org.fluentlenium.configuration.ConfigurationProperties;
import org.fluentlenium.configuration.ConfigurationProperties.DriverLifecycle;
import org.fluentlenium.cucumber.adapter.FluentCucumberSharedMutator;
import org.junit.Before;
import org.junit.Test;

public class FluentCucumberSharedMutatorTest {
private FluentCucumberSharedMutator sharedMutator;

@Before
public void before() {
sharedMutator = new FluentCucumberSharedMutator();
}

@Test
public void testCucumberMutator() {
final Class<?> testClass = Object.class;
final String testName = "test";
DriverLifecycle driverLifecycle = DriverLifecycle.JVM;

SharedMutator.EffectiveParameters<?> parameters = sharedMutator.getEffectiveParameters(testClass, testName, driverLifecycle);

Assertions.assertThat(parameters.getTestClass()).isNull();
Assertions.assertThat(parameters.getTestName()).isEqualTo(testName);
Assertions.assertThat(parameters.getDriverLifecycle()).isEqualTo(DriverLifecycle.JVM);
}

@Test
public void testCucumberMutatorWithClassLifecycle() {
final Class<?> testClass = Object.class;
final String testName = "test";
final DriverLifecycle driverLifecycle = DriverLifecycle.CLASS;

Assertions.assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() throws Throwable {
sharedMutator.getEffectiveParameters(testClass, testName, driverLifecycle);
}
}).isExactlyInstanceOf(ConfigurationException.class).hasMessage("Cucumber doesn't support CLASS driverLifecycle.");
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package org.fluentlenium.cucumber;
package org.fluentlenium.cucumber.integration;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:org/fluentlenium/cucumber", format = {"pretty", "html:target/cucumber", "json:target/cucumber.json"})
@CucumberOptions(features = "classpath:org/fluentlenium/cucumber/integration", format = {"pretty", "html:target/cucumber", "json:target/cucumber.json"})
public class BasicRunner {


Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.fluentlenium.cucumber.page;
package org.fluentlenium.cucumber.integration.page;

import org.fluentlenium.core.FluentPage;
import org.fluentlenium.integration.util.UrlUtil;
import org.fluentlenium.cucumber.integration.utils.UrlUtil;

public class LocalPage extends FluentPage {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.fluentlenium.cucumber.page;
package org.fluentlenium.cucumber.integration.page;

import org.fluentlenium.core.FluentPage;
import org.fluentlenium.integration.util.UrlUtil;
import org.fluentlenium.cucumber.integration.utils.UrlUtil;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
package org.fluentlenium.cucumber.step;
package org.fluentlenium.cucumber.integration.step;

import cucumber.api.Scenario;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import org.fluentlenium.configuration.ConfigurationProperties;
import org.fluentlenium.configuration.FluentConfiguration;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.cucumber.adapter.FluentCucumberTest;
import org.fluentlenium.cucumber.page.LocalPage;
import org.fluentlenium.cucumber.integration.page.LocalPage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

@FluentConfiguration(driverLifecycle = ConfigurationProperties.DriverLifecycle.CLASS)
public class SimpleFeatureMultiStep1 extends FluentCucumberTest {

@Page
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
package org.fluentlenium.cucumber.step;
package org.fluentlenium.cucumber.integration.step;

import cucumber.api.Scenario;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import org.fluentlenium.configuration.ConfigurationProperties;
import org.fluentlenium.configuration.FluentConfiguration;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.cucumber.adapter.FluentCucumberTest;
import org.fluentlenium.cucumber.page.LocalPage2;
import org.fluentlenium.cucumber.integration.page.LocalPage2;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

@FluentConfiguration(driverLifecycle = ConfigurationProperties.DriverLifecycle.METHOD)
public class SimpleFeatureMultiStep2 extends FluentCucumberTest {

@Page
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.fluentlenium.cucumber.step;
package org.fluentlenium.cucumber.integration.step;

import cucumber.api.Scenario;
import cucumber.api.java.After;
Expand All @@ -10,7 +10,7 @@
import org.fluentlenium.configuration.FluentConfiguration;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.cucumber.adapter.FluentCucumberTest;
import org.fluentlenium.cucumber.page.LocalPage;
import org.fluentlenium.cucumber.integration.page.LocalPage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.fluentlenium.cucumber.step;
package org.fluentlenium.cucumber.integration.step;

import cucumber.api.Scenario;
import cucumber.api.java.After;
Expand All @@ -8,7 +8,7 @@
import org.fluentlenium.configuration.FluentConfiguration;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.cucumber.adapter.FluentCucumberTest;
import org.fluentlenium.cucumber.page.LocalPage;
import org.fluentlenium.cucumber.integration.page.LocalPage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.fluentlenium.cucumber.step;
package org.fluentlenium.cucumber.integration.step;

import cucumber.api.Scenario;
import cucumber.api.java.After;
Expand All @@ -9,7 +9,7 @@
import org.fluentlenium.configuration.FluentConfiguration;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.cucumber.adapter.FluentCucumberTest;
import org.fluentlenium.cucumber.page.LocalPage;
import org.fluentlenium.cucumber.integration.page.LocalPage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
package org.fluentlenium.cucumber.step;
package org.fluentlenium.cucumber.integration.step;

import cucumber.api.Scenario;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import org.fluentlenium.configuration.ConfigurationProperties;
import org.fluentlenium.configuration.FluentConfiguration;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.cucumber.adapter.FluentCucumberTest;
import org.fluentlenium.cucumber.page.LocalPage;
import org.fluentlenium.cucumber.integration.page.LocalPage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

@FluentConfiguration(driverLifecycle = ConfigurationProperties.DriverLifecycle.CLASS)
public class SimpleScenarioStep extends FluentCucumberTest {

@Page
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.fluentlenium.integration.util;
package org.fluentlenium.cucumber.integration.utils;

import java.net.URL;

Expand Down

This file was deleted.

0 comments on commit dd5e191

Please sign in to comment.