diff --git a/pom.xml b/pom.xml
index f335250..aa618dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -147,7 +147,7 @@
com.codeborne
selenide
- 5.10.0
+ 5.13.0
org.slf4j
diff --git a/src/main/java/testUI/SelenideConfiguration.java b/src/main/java/testUI/SelenideConfiguration.java
index 34aa3de..63f52e9 100644
--- a/src/main/java/testUI/SelenideConfiguration.java
+++ b/src/main/java/testUI/SelenideConfiguration.java
@@ -4,6 +4,7 @@
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
+import org.openqa.selenium.safari.SafariOptions;
public class SelenideConfiguration {
@@ -19,6 +20,7 @@ public class SelenideConfiguration {
public static String browserPosition = "";
public static boolean startMaximized = false;
public static DesiredCapabilities selenideBrowserCapabilities = new DesiredCapabilities();
+ public static SafariOptions safariOptions = new SafariOptions();
// public static String pageLoadStrategy;
// public static boolean clickViaJs;
// public static boolean screenshots;
diff --git a/src/main/java/testUI/UIUtils.java b/src/main/java/testUI/UIUtils.java
index 2ff2df6..7351ccf 100644
--- a/src/main/java/testUI/UIUtils.java
+++ b/src/main/java/testUI/UIUtils.java
@@ -5,9 +5,11 @@
import io.appium.java_client.service.local.AppiumDriverLocalService;
import io.qameta.allure.Allure;
import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
+import org.openqa.selenium.safari.SafariDriver;
import testUI.Utils.TestUIException;
import java.net.MalformedURLException;
@@ -208,8 +210,8 @@ private static void setChromeDriver() {
}
} else driver = new ChromeDriver(Configuration.chromeOptions);
setDriver(driver);
- Runtime.getRuntime().addShutdownHook(new Thread(driver::close));
- Runtime.getRuntime().addShutdownHook(new Thread(driver::quit));
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> tryCloseDriver(driver)));
+ Runtime.getRuntime().addShutdownHook(new Thread(new Thread(() -> tryQuitpDriver(driver))));
}
}
@@ -221,14 +223,47 @@ private static void setFirefoxDriver() {
if (Configuration.remote != null && !Configuration.remote.isEmpty()) {
try {
driver = new RemoteWebDriver(
- new URL(Configuration.remote), Configuration.chromeOptions
+ new URL(Configuration.remote), Configuration.firefoxOptions
);
} catch (MalformedURLException e) {
throw new TestUIException(e.getMessage());
}
} else driver = new FirefoxDriver(Configuration.firefoxOptions);
setDriver(driver);
- Runtime.getRuntime().addShutdownHook(new Thread(driver::close));
+ Runtime.getRuntime().addShutdownHook(new Thread(new Thread(() -> tryCloseDriver(driver))));
+ }
+ }
+
+ private static void setSafariDriver() {
+ if (Configuration.browser.toLowerCase().equals("safari")) {
+ RemoteWebDriver driver;
+ if (Configuration.remote != null && !Configuration.remote.isEmpty()) {
+ try {
+ driver = new RemoteWebDriver(
+ new URL(Configuration.remote), Configuration.safariOptions
+ );
+ } catch (MalformedURLException e) {
+ throw new TestUIException(e.getMessage());
+ }
+ } else driver = new SafariDriver(Configuration.safariOptions);
+ setDriver(driver);
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> tryCloseDriver(driver)));
+ }
+ }
+
+ private static void tryQuitpDriver(WebDriver driver) {
+ try {
+ driver.quit();
+ } catch (Exception e) {
+ System.err.println("Could not quit driver, probably already stopped");
+ }
+ }
+
+ private static void tryCloseDriver(WebDriver driver) {
+ try {
+ driver.close();
+ } catch (Exception e) {
+ System.err.println("Could not close driver, probably already stopped");
}
}
@@ -236,6 +271,7 @@ protected static void startSelenideDriver(String urlOrRelativeUrl) {
setUpSelenideVariables();
setChromeDriver();
setFirefoxDriver();
+ setSafariDriver();
open(urlOrRelativeUrl);
}
diff --git a/src/test/java/TestRunners/TestBrowser.java b/src/test/java/TestRunners/TestBrowser.java
index e7cfd0a..c36b418 100644
--- a/src/test/java/TestRunners/TestBrowser.java
+++ b/src/test/java/TestRunners/TestBrowser.java
@@ -3,8 +3,10 @@
import io.netty.handler.logging.LogLevel;
import io.qameta.allure.junit4.DisplayName;
import org.junit.Test;
+import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
+import org.openqa.selenium.safari.SafariDriver;
import pages.GoogleLandingPage;
import testUI.Configuration;
import testUI.Utils.GridTestUI;