public class TraderWebStories extends JUnitStories {
private WebDriverProvider driverProvider = new PropertyWebDriverProvider();
private WebDriverSteps lifecycleSteps = new PerStoriesWebDriverSteps(driverProvider);
private Pages pages = new Pages(driverProvider);
private SeleniumContext context = new SeleniumContext();
private ContextView contextView = new LocalFrameContextView().sized(500, 100);
public TraderWebStories() {
if ( lifecycleSteps instanceof PerStoriesWebDriverSteps ){
configuredEmbedder().useExecutorService(MoreExecutors.sameThreadExecutor());
}
}
@Override
public Configuration configuration() {
Class<? extends Embeddable> embeddableClass = this.getClass();
return new SeleniumConfiguration()
.useSeleniumContext(context)
.useWebDriverProvider(driverProvider)
.useStepMonitor(new SeleniumStepMonitor(contextView, context, new SilentStepMonitor()))
.useStoryLoader(new LoadFromClasspath(embeddableClass))
.useStoryReporterBuilder(new StoryReporterBuilder()
.withCodeLocation(codeLocationFromClass(embeddableClass))
.withDefaultFormats()
.withFormats(CONSOLE, TXT, HTML, XML));
}
@Override
public InjectableStepsFactory stepsFactory() {
Configuration configuration = configuration();
return new InstanceStepsFactory(configuration,
new TraderWebSteps(pages),
lifecycleSteps,
new WebDriverScreenshotOnFailure(driverProvider, configuration.storyReporterBuilder()));
}
@Override
protected List<String> storyPaths() {
return new StoryFinder()
.findPaths(codeLocationFromClass(this.getClass()).getFile(), asList("**/*.story"), null);
}
public static class SameThreadEmbedder extends Embedder {
public SameThreadEmbedder() {
useExecutorService(MoreExecutors.sameThreadExecutor());
}
}
}