diff --git a/src/main/java/entities/Browser.java b/src/main/java/entities/Browser.java index 1089734..04c7b50 100644 --- a/src/main/java/entities/Browser.java +++ b/src/main/java/entities/Browser.java @@ -2,6 +2,7 @@ import enums.BrowserType; import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; public interface Browser { @@ -10,4 +11,6 @@ public interface Browser { MutableCapabilities getBrowserOptions(); RemoteWebDriver getDriver(); + + DesiredCapabilities getCapabilities(); } diff --git a/src/main/java/entities/ChromeBrowser.java b/src/main/java/entities/ChromeBrowser.java index ddc6b55..0b3918e 100644 --- a/src/main/java/entities/ChromeBrowser.java +++ b/src/main/java/entities/ChromeBrowser.java @@ -3,8 +3,8 @@ import enums.BrowserType; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; -import utils.OptionsManager; public class ChromeBrowser implements Browser { @Override @@ -14,11 +14,22 @@ public BrowserType getType() { @Override public ChromeOptions getBrowserOptions() { - return OptionsManager.getChromeOptions(); + return new ChromeOptions(); } @Override public RemoteWebDriver getDriver() { return new ChromeDriver(getBrowserOptions()); } + + @Override + public DesiredCapabilities getCapabilities() { + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setBrowserName("chrome"); + capabilities.setVersion("84.0"); + capabilities.setCapability(ChromeOptions.CAPABILITY, getBrowserOptions()); + capabilities.setCapability("enableVNC", true); + capabilities.setCapability("enableVideo", false); + return capabilities; + } } diff --git a/src/main/java/entities/FirefoxBrowser.java b/src/main/java/entities/FirefoxBrowser.java index 714c983..6e6adc4 100644 --- a/src/main/java/entities/FirefoxBrowser.java +++ b/src/main/java/entities/FirefoxBrowser.java @@ -3,8 +3,8 @@ import enums.BrowserType; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; +import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; -import utils.OptionsManager; public class FirefoxBrowser implements Browser { @Override @@ -14,11 +14,22 @@ public BrowserType getType() { @Override public FirefoxOptions getBrowserOptions() { - return OptionsManager.getFirefoxOptions(); + return new FirefoxOptions(); } @Override public RemoteWebDriver getDriver() { return new FirefoxDriver(getBrowserOptions()); } -} + + @Override + public DesiredCapabilities getCapabilities() { + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setBrowserName("firefox"); + capabilities.setVersion("79.0"); + capabilities.setCapability(FirefoxOptions.FIREFOX_OPTIONS, getBrowserOptions()); + capabilities.setCapability("enableVNC", true); + capabilities.setCapability("enableVideo", false); + return capabilities; + } +} \ No newline at end of file diff --git a/src/main/java/utils/BaseTest.java b/src/main/java/utils/BaseTest.java index 9738949..6cb9e8f 100644 --- a/src/main/java/utils/BaseTest.java +++ b/src/main/java/utils/BaseTest.java @@ -27,16 +27,19 @@ public class BaseTest { public void setup(String browserName) { LOGGER.trace("Setting up {} driver", browserName); - BrowserType browserType = BrowserType.valueOf(browserName.toUpperCase()); - switch (browserType) { - case CHROME: - setupDriver(new ChromeBrowser()); - break; - case FIREFOX: - setupDriver(new FirefoxBrowser()); - break; - default: - throw new NotFoundException("Desired browser not found. Please add"); + try { + BrowserType browserType = BrowserType.valueOf(browserName.toUpperCase()); + switch (browserType) { + case CHROME: + setupDriver(new ChromeBrowser()); + break; + case FIREFOX: + setupDriver(new FirefoxBrowser()); + break; + } + } catch (IllegalArgumentException exception) { + LOGGER.error("BROWSER NOT FOUND"); + throw new NotFoundException(String.format("Browser '%s' not found. Please add", browserName)); } } @@ -73,6 +76,7 @@ public IndexPage openStartPage() { } private WebDriver setupWebDriverWithWebDriverManager(Browser browser) { + LOGGER.trace("Setting up driver with WebDriverManager"); BrowserType browserType = browser.getType(); DriverManagerType driverManagerType = DriverManagerType.valueOf(browserType.name()); WebDriverManager.getInstance(driverManagerType).setup(); @@ -80,9 +84,10 @@ private WebDriver setupWebDriverWithWebDriverManager(Browser browser) { } private WebDriver setupWebDriverWithSelenoid(Browser browser) { + LOGGER.trace("Setting up driver with Selenoid"); WebDriver webDriver = null; String selenoidHubAddress = System.getProperty("selenoid.hub.address"); - DesiredCapabilities capabilities = CapabilitiesManager.getCapabilities(browser.getBrowserOptions()); + DesiredCapabilities capabilities = browser.getCapabilities(); try { webDriver = new RemoteWebDriver(URI.create(selenoidHubAddress + "/wd/hub").toURL(), capabilities); } catch (MalformedURLException e) { diff --git a/src/main/java/utils/CapabilitiesManager.java b/src/main/java/utils/CapabilitiesManager.java deleted file mode 100644 index 039ef4e..0000000 --- a/src/main/java/utils/CapabilitiesManager.java +++ /dev/null @@ -1,28 +0,0 @@ -package utils; - -import enums.BrowserType; -import org.openqa.selenium.MutableCapabilities; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.firefox.FirefoxOptions; -import org.openqa.selenium.remote.DesiredCapabilities; - -public class CapabilitiesManager { - public static DesiredCapabilities getCapabilities(MutableCapabilities browserOptions) { - DesiredCapabilities capabilities = new DesiredCapabilities(); - BrowserType browserType = BrowserType.valueOf(browserOptions.getBrowserName().toUpperCase()); - switch (browserType) { - case CHROME: - capabilities.setBrowserName("chrome"); - capabilities.setVersion("84.0"); - capabilities.setCapability(ChromeOptions.CAPABILITY, browserOptions); - break; - case FIREFOX: - capabilities.setBrowserName("firefox"); - capabilities.setVersion("79.0"); - capabilities.setCapability(FirefoxOptions.FIREFOX_OPTIONS, browserOptions); - } - capabilities.setCapability("enableVNC", true); - capabilities.setCapability("enableVideo", false); - return capabilities; - } -} diff --git a/src/main/java/utils/LoadingPageFactory.java b/src/main/java/utils/LoadingPageFactory.java index 94c9d81..ae294c2 100644 --- a/src/main/java/utils/LoadingPageFactory.java +++ b/src/main/java/utils/LoadingPageFactory.java @@ -27,7 +27,7 @@ public static T get(Class pageObjectClass) { if (!expectedPageTitle.equals(Verify.INVALID_TITLE)) { String actualPageTitle = driver.getTitle(); - Assert.assertEquals(expectedPageTitle, actualPageTitle, "Page title is correct."); + Assert.assertEquals(actualPageTitle, expectedPageTitle, "Page title is correct."); } String xpath = verify.xpath(); diff --git a/src/main/java/utils/OptionsManager.java b/src/main/java/utils/OptionsManager.java deleted file mode 100644 index f8a7566..0000000 --- a/src/main/java/utils/OptionsManager.java +++ /dev/null @@ -1,17 +0,0 @@ -package utils; - -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.firefox.FirefoxOptions; - -/* - * This class is dedicated for setting custom options if needed - */ -public class OptionsManager { - public static ChromeOptions getChromeOptions() { - return new ChromeOptions(); - } - - public static FirefoxOptions getFirefoxOptions() { - return new FirefoxOptions(); - } -} \ No newline at end of file diff --git a/src/test/java/testcases/FailingCases.java b/src/test/java/testcases/FailingCases.java index 1dab5a2..29bb42c 100644 --- a/src/test/java/testcases/FailingCases.java +++ b/src/test/java/testcases/FailingCases.java @@ -30,4 +30,9 @@ public void testShouldFailWhenTryingToClickAbsentElement() { SelenideElement tShirtsButton = Selenide.$(By.xpath(".//ul[not(contains(@style, 'display: none'))]/li/a[@title='T-shirts']/span")); tShirtsButton.click(); } + + @Test + public void testShouldFailBecauseOfIncorrectBrowser() { + openStartPage(); + } } diff --git a/src/test/resources/failing.xml b/src/test/resources/failing.xml index f2312d9..a0f1e7a 100644 --- a/src/test/resources/failing.xml +++ b/src/test/resources/failing.xml @@ -4,7 +4,21 @@ - + + + + + + + + + + + + + + + diff --git a/update_browsers.sh b/update_browsers.sh index 6ace152..85266f9 100755 --- a/update_browsers.sh +++ b/update_browsers.sh @@ -1 +1,2 @@ -cat config/browsers.json | jq -r '..|.image?|strings' | xargs -I{} docker pull {} +#!/bin/bash +cat config/browsers.json | jq -r '..|.image?|strings' | xargs -I{} docker pull {}