All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.rationaleemotions.cucumber.BrowserSpawningFormatter Maven / Gradle / Ivy

package com.rationaleemotions.cucumber;

import com.rationaleemotions.web.DriverFactory;
import com.rationaleemotions.web.Browser;
import gherkin.formatter.Formatter;
import gherkin.formatter.model.Background;
import gherkin.formatter.model.Examples;
import gherkin.formatter.model.Feature;
import gherkin.formatter.model.Scenario;
import gherkin.formatter.model.ScenarioOutline;
import gherkin.formatter.model.Step;
import gherkin.formatter.model.Tag;
import java.util.List;
import java.util.logging.Logger;

public class BrowserSpawningFormatter implements Formatter {

  private static final Logger LOG = Logger.getLogger(BrowserSpawningFormatter.class.getName());

  private static boolean needsBrowser(Scenario scenario) {
    return scenario.getTags().contains(new Tag("@" + Browser.class.getSimpleName(), 0));
  }

  @Override
  public void syntaxError(
      String state, String event, List legalEvents, String uri, Integer line) {}

  @Override
  public void uri(String uri) {}

  @Override
  public void feature(Feature feature) {}

  @Override
  public void scenarioOutline(ScenarioOutline scenarioOutline) {}

  @Override
  public void examples(Examples examples) {}

  @Override
  public void startOfScenarioLifeCycle(Scenario scenario) {
    if (needsBrowser(scenario)) {
      LOG.info("Auto Spawning a browser for the scenario : [" + scenario.getName() + "]");
      DriverFactory.createDriver();
    }
  }

  @Override
  public void background(Background background) {}

  @Override
  public void scenario(Scenario scenario) {}

  @Override
  public void step(Step step) {}

  @Override
  public void endOfScenarioLifeCycle(Scenario scenario) {
    if (needsBrowser(scenario)) {
      LOG.info(
          "Cleaning up the Auto Spawned browser for the scenario : [" + scenario.getName() + "]");
      DriverFactory.quitDriver();
    }
  }

  @Override
  public void done() {}

  @Override
  public void close() {}

  @Override
  public void eof() {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy