package ru.stqa.trainings.testng.tricky2.sample30; import java.lang.reflect.Method; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import ru.stqa.selenium.factory.WebDriverFactory; public class SeleniumFixture { protected WebDriver driver; @BeforeClass public void startDriver() { driver = WebDriverFactory.getDriver(DesiredCapabilities.chrome()); } @BeforeMethod public void refreshDriver(Method m) { System.out.println("Before method " + m.getName()); if (m.getAnnotation(NeedsFreshDriver.class) != null) { System.out.println("Restarting the browser"); WebDriverFactory.dismissDriver(driver); driver = WebDriverFactory.getDriver(DesiredCapabilities.chrome()); } } @AfterClass(alwaysRun = true) public void stopDriver() { WebDriverFactory.dismissDriver(driver); } }