From 60eed5d41594133fd56b11895675f351db48b03e Mon Sep 17 00:00:00 2001 From: Alvaro Laserna Date: Tue, 15 Nov 2022 09:13:44 +0100 Subject: [PATCH 1/4] fix appium bugs --- pom.xml | 2 +- .../java/testUI/AndroidUtils/ADBUtils.java | 19 ++++++++----------- .../java/testUI/AndroidUtils/AndroidOpen.java | 15 ++++++++++----- src/main/java/testUI/Configuration.java | 1 + src/main/java/testUI/TestUIConfiguration.java | 5 +++++ src/main/java/testUI/TestUIServer.java | 1 + .../java/TestRunners/TestAndroidLocal.java | 1 + 7 files changed, 27 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 86a298d..f801a0c 100644 --- a/pom.xml +++ b/pom.xml @@ -135,7 +135,7 @@ io.appium java-client - 8.0.0 + 8.1.1 net.lightbody.bmp diff --git a/src/main/java/testUI/AndroidUtils/ADBUtils.java b/src/main/java/testUI/AndroidUtils/ADBUtils.java index 8ca0271..9ea8c44 100644 --- a/src/main/java/testUI/AndroidUtils/ADBUtils.java +++ b/src/main/java/testUI/AndroidUtils/ADBUtils.java @@ -18,12 +18,9 @@ import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import static testUI.UIUtils.getDevice; import static testUI.UIUtils.putLog; -import static testUI.Utils.Logger.putLogInfo; import static testUI.Utils.Logger.putLogWarn; public class ADBUtils { @@ -32,8 +29,7 @@ public class ADBUtils { private static String platformTools = "/platform-tools/"; private static String emulatorFolder = "/emulator/"; public static String MAC_CHROME_DRIVER = - "/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac" + - "/chromedriver*"; + "/usr/local/bin/chromedriver"; public static String LNX_CHROME_DRIVER = "/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver" + "/linux/chromedriver*"; @@ -238,21 +234,22 @@ public void checkAndInstallChromedriver() { putLog("Detected Chrome version = " + chromeVersion + " matches with the actual chromedriver: " + ActualVersion); - } else if (!doesFileExists(chromeDriverPath)) { - putLog("Detected Chrome version = " + chromeVersion - + " but the Appium ChromeDriver is unknown, " - + "maybe you should check the appium " - + "installation or run npm install appium -g"); } else if (getTargetDirectory(configuration, chromeVersion.split("\\.")[0])) { putLog("Detected Chrome driver already installed " + "for this device, placed in target directory"); } else { + if (!doesFileExists(chromeDriverPath)) { + putLog("Detected Chrome version = " + chromeVersion + + " but the ChromeDriver is unknown, " + + "maybe you should check the appium/chromedriver " + + "installation"); + } putLog("Detected Chrome version = " + chromeVersion + ". Installing the ChromeDriver: " + chromeDriverVersion); WebDriverManager.chromedriver().driverVersion(chromeDriverVersion).setup(); configuration.setChromeDriverPath( - copyFileToCustomFolder(WebDriverManager.chromedriver().getDownloadedDriverPath(), + copyFileToCustomFolder(System.getProperty("webdriver.chrome.driver"), chromeVersion.split("\\.")[0])); } } catch (IOException e) { diff --git a/src/main/java/testUI/AndroidUtils/AndroidOpen.java b/src/main/java/testUI/AndroidUtils/AndroidOpen.java index 1ecdaf1..5894004 100644 --- a/src/main/java/testUI/AndroidUtils/AndroidOpen.java +++ b/src/main/java/testUI/AndroidUtils/AndroidOpen.java @@ -34,7 +34,8 @@ public void openApp(TestUIConfiguration configuration) { setEmulatorIfNeeded(configuration); putAllureParameter( "Version", - getDriver().getCapabilities().asMap().get("platformVersion").toString() + getDriver().getCapabilities().asMap() + .getOrDefault("appium:platformVersion", "Unknown").toString() ); } else { driver = 1; @@ -47,7 +48,8 @@ public void openApp(TestUIConfiguration configuration) { startFirstAndroidDriver(cap); putAllureParameter( "Version", - getDriver().getCapabilities().asMap().get("platformVersion").toString() + getDriver().getCapabilities().asMap() + .getOrDefault("appium:platformVersion", "Unknown").toString() ); } Configuration.emulatorName = ""; @@ -63,7 +65,8 @@ public void openNewApp(TestUIConfiguration configuration) { setEmulatorIfNeeded(configuration); putAllureParameter( "Version", - getDriver().getCapabilities().asMap().get("platformVersion").toString() + getDriver().getCapabilities().asMap() + .getOrDefault("appium:platformVersion", "Unknown").toString() ); Configuration.emulatorName = ""; } @@ -87,7 +90,8 @@ public void openBrowser(String urlOrRelativeUrl, TestUIConfiguration configurati setEmulatorIfNeeded(configuration); putAllureParameter( "Version", - getDriver().getCapabilities().asMap().get("platformVersion").toString() + getDriver().getCapabilities().asMap() + .getOrDefault("appium:platformVersion", "Unknown").toString() ); } else { Configuration.driver = 1; @@ -99,7 +103,8 @@ public void openBrowser(String urlOrRelativeUrl, TestUIConfiguration configurati startFirstAndroidBrowserDriver(urlOrRelativeUrl, configuration); putAllureParameter( "Version", - getDriver().getCapabilities().asMap().get("platformVersion").toString() + getDriver().getCapabilities().asMap() + .getOrDefault("appium:platformVersion", "Unknown").toString() ); } putAllureParameter("Browser", "Chrome"); diff --git a/src/main/java/testUI/Configuration.java b/src/main/java/testUI/Configuration.java index 6aeafc0..5eef95a 100644 --- a/src/main/java/testUI/Configuration.java +++ b/src/main/java/testUI/Configuration.java @@ -11,6 +11,7 @@ public class Configuration extends SelenideConfiguration { public static final String ANDROID_PLATFORM = "android"; public static final String IOS_PLATFORM = "ios"; public static final String DESKTOP_PLATFORM = "desktop"; + public static final String BASE_APPIUM_PATH = "/wd/hub/"; // IOS CAPABILITIES public static int wdaPort = 8100; diff --git a/src/main/java/testUI/TestUIConfiguration.java b/src/main/java/testUI/TestUIConfiguration.java index 3cf558e..5749eec 100644 --- a/src/main/java/testUI/TestUIConfiguration.java +++ b/src/main/java/testUI/TestUIConfiguration.java @@ -37,6 +37,7 @@ public class TestUIConfiguration { private final String serverLogLevel = Configuration.serverLogLevel; // private final String screenshotPath = Configuration.screenshotPath; private final int timeStartAppiumServer = Configuration.timeStartAppiumServer; + private final String BASE_APPIUM_PATH = Configuration.BASE_APPIUM_PATH; public TestUIConfiguration() { if (!Configuration.chromeDriverPath.isEmpty()) { @@ -123,4 +124,8 @@ public String getServerLogLevel() { return serverLogLevel; } + public String getBaseAppiumPath() { + return BASE_APPIUM_PATH; + } + } diff --git a/src/main/java/testUI/TestUIServer.java b/src/main/java/testUI/TestUIServer.java index cf38826..d290bb9 100644 --- a/src/main/java/testUI/TestUIServer.java +++ b/src/main/java/testUI/TestUIServer.java @@ -44,6 +44,7 @@ protected static void startServer( builder.withArgument(GeneralServerFlag.SESSION_OVERRIDE); builder.withArgument(GeneralServerFlag.LOG_LEVEL, "info"); builder.withArgument(AndroidServerFlag.BOOTSTRAP_PORT_NUMBER, Bootstrap); + builder.withArgument(GeneralServerFlag.BASEPATH, configuration.getBaseAppiumPath()); //Start the server with the builder TestUIServer.serviceRunning.set(false); boolean slowResponse = false; diff --git a/src/test/java/TestRunners/TestAndroidLocal.java b/src/test/java/TestRunners/TestAndroidLocal.java index cc8d3a4..dc75367 100644 --- a/src/test/java/TestRunners/TestAndroidLocal.java +++ b/src/test/java/TestRunners/TestAndroidLocal.java @@ -20,6 +20,7 @@ public class TestAndroidLocal { public void testAndroidBrowser() { Configuration.testUILogLevel = LogLevel.DEBUG; Configuration.automationType = ANDROID_PLATFORM; + Configuration.installMobileChromeDriver = true; open("https://www.google.com"); E(byMobileCss("#SIvCob")).click(); googleLandingPage.getGoogleSearchInput().scrollTo().view(true) From dad811c27e504b79fe68c6dadd26bbc8b0b6eb50 Mon Sep 17 00:00:00 2001 From: Alvaro Laserna Date: Tue, 22 Nov 2022 12:30:24 +0100 Subject: [PATCH 2/4] fix issues with chromedriver and update pach version --- pom.xml | 2 +- .../java/testUI/AndroidUtils/ADBUtils.java | 1 + .../java/testUI/AndroidUtils/AndroidOpen.java | 12 ++-- src/main/java/testUI/TestUIServer.java | 9 ++- .../java/TestRunners/TestAndroidLocal.java | 35 ++--------- src/test/java/TestRunners/TestBrowser.java | 58 +++-------------- src/test/java/TestRunners/TestIOS.java | 62 ------------------- src/test/java/TestRunners/TestJUnit.java | 43 ++++--------- .../java/stepDefinitions/simpleSteps.java | 13 ---- 9 files changed, 41 insertions(+), 194 deletions(-) diff --git a/pom.xml b/pom.xml index f801a0c..3f6d906 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.testdevlab TestUI - 2.0.0 + 2.0.1 diff --git a/src/main/java/testUI/AndroidUtils/ADBUtils.java b/src/main/java/testUI/AndroidUtils/ADBUtils.java index 9ea8c44..35ab99f 100644 --- a/src/main/java/testUI/AndroidUtils/ADBUtils.java +++ b/src/main/java/testUI/AndroidUtils/ADBUtils.java @@ -234,6 +234,7 @@ public void checkAndInstallChromedriver() { putLog("Detected Chrome version = " + chromeVersion + " matches with the actual chromedriver: " + ActualVersion); + configuration.setChromeDriverPath(chromeDriverPath); } else if (getTargetDirectory(configuration, chromeVersion.split("\\.")[0])) { putLog("Detected Chrome driver already installed " + "for this device, placed in target directory"); diff --git a/src/main/java/testUI/AndroidUtils/AndroidOpen.java b/src/main/java/testUI/AndroidUtils/AndroidOpen.java index 5894004..c546f28 100644 --- a/src/main/java/testUI/AndroidUtils/AndroidOpen.java +++ b/src/main/java/testUI/AndroidUtils/AndroidOpen.java @@ -137,7 +137,8 @@ public void openNewBrowser(String urlOrRelativeUrl, TestUIConfiguration configur setEmulatorIfNeeded(configuration); putAllureParameter( "Version", - getDriver().getCapabilities().asMap().get("platformVersion").toString() + getDriver().getCapabilities().asMap() + .getOrDefault("appium:platformVersion", "emulator").toString() ); } else { startSelenideDriver(urlOrRelativeUrl); @@ -147,13 +148,16 @@ public void openNewBrowser(String urlOrRelativeUrl, TestUIConfiguration configur private void setEmulatorIfNeeded(TestUIConfiguration configuration) { if (!configuration.getEmulatorName().isEmpty()) { + System.out.println(getDriver().getCapabilities().asMap()); setDevice( - getDriver().getCapabilities().asMap().get("deviceUDID").toString(), - getDriver().getCapabilities().asMap().get("deviceUDID").toString() + getDriver().getCapabilities().asMap() + .getOrDefault("appium:deviceUDID", "emulator").toString(), + getDriver().getCapabilities().asMap() + .getOrDefault("appium:deviceUDID", "emulator").toString() ); attachShutDownHookStopEmulator( getAppiumServices(), - getDriver().getCapabilities().asMap().get("deviceUDID").toString() + getDriver().getCapabilities().asMap().get("appium:deviceUDID").toString() ); } } diff --git a/src/main/java/testUI/TestUIServer.java b/src/main/java/testUI/TestUIServer.java index d290bb9..99b966f 100644 --- a/src/main/java/testUI/TestUIServer.java +++ b/src/main/java/testUI/TestUIServer.java @@ -289,11 +289,14 @@ public static void stop(int driver) { removeUsePort(driver - 1); removeUseBootstrapPort(driver - 1); if (Configuration.automationType.equals(IOS_PLATFORM)) { - getDrivers().get(driver - 1).close(); + if (getDrivers().size() != 0) + getDrivers().get(driver - 1).close(); sleep(500); } - getDrivers().get(driver - 1).quit(); - removeDriver(driver - 1); + if (getDrivers().size() != 0) { + getDrivers().get(driver - 1).quit(); + removeDriver(driver - 1); + } getAppiumServices().get(driver - 1).stop(); getAppiumServices().remove(driver - 1); if (getDevices().size() != 0) { diff --git a/src/test/java/TestRunners/TestAndroidLocal.java b/src/test/java/TestRunners/TestAndroidLocal.java index dc75367..7f7c223 100644 --- a/src/test/java/TestRunners/TestAndroidLocal.java +++ b/src/test/java/TestRunners/TestAndroidLocal.java @@ -5,6 +5,7 @@ import org.junit.Test; import pages.GoogleLandingPage; import testUI.Configuration; +import testUI.TestUIDriver; import static testUI.Configuration.ANDROID_PLATFORM; import static testUI.TestUIServer.stop; @@ -22,25 +23,16 @@ public void testAndroidBrowser() { Configuration.automationType = ANDROID_PLATFORM; Configuration.installMobileChromeDriver = true; open("https://www.google.com"); - E(byMobileCss("#SIvCob")).click(); googleLandingPage.getGoogleSearchInput().scrollTo().view(true) .given("Check search input visible and set value").waitFor(5) - .untilIsVisible().then().setValueJs("TestUI") - .shouldHave().not().emptyAttribute("value"); + .untilIsVisible(); googleLandingPage.getGoogleSearch().then("Check that search button visible") - .waitFor(1).untilIsVisible() - .and("Click on search button").click(); + .waitFor(1).untilIsVisible(); stop(); Configuration.testUILogLevel = LogLevel.DEBUG; open("https://www.google.com"); - E(byMobileCss("#SIvCob")).click(); googleLandingPage.getGoogleSearchInput().scrollTo().view(true) - .given("Check search input visible and set value").waitFor(5) - .untilIsVisible().then().setValueJs("TestUI") - .shouldHave().not().emptyAttribute("value"); - googleLandingPage.getGoogleSearch().then("Check that search button visible") - .waitFor(10).untilIsVisible() - .and("Click on search button").click(); + .given("Check search input visible and set value"); } @Test @@ -50,24 +42,5 @@ public void testAndroidBrowser2() { Configuration.appiumUrl = ""; Configuration.androidDeviceName = ""; open("https://www.google.com"); - googleLandingPage.getGoogleSearchInput() - .given("Check search input visible and set value").waitFor(5) - .untilIsVisible().then().sendKeys("TestUI"); - googleLandingPage.getGoogleSearch().then("Check that search button visible") - .waitFor(10).untilIsVisible() - .and("Click on search button").click(); - } - - @Test - @DisplayName("Test cli testUI") - public void testCliTestUI() { - Configuration.testUILogLevel = LogLevel.INFO; - open("https://www.google.com"); - googleLandingPage.getGoogleSearchInput() - .given("Check search input visible and set value").waitFor(5) - .untilIsVisible().then().sendKeys("TestUI"); - googleLandingPage.getGoogleSearch().then("Check that search button visible") - .waitFor(10).untilIsVisible() - .and("Click on search button").click(); } } diff --git a/src/test/java/TestRunners/TestBrowser.java b/src/test/java/TestRunners/TestBrowser.java index 214be3f..77d21d6 100644 --- a/src/test/java/TestRunners/TestBrowser.java +++ b/src/test/java/TestRunners/TestBrowser.java @@ -3,14 +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.firefox.FirefoxOptions; -import org.openqa.selenium.safari.SafariDriver; import pages.GoogleLandingPage; import testUI.Configuration; -import testUI.Utils.GridTestUI; import static testUI.TestUIDriver.*; import static testUI.TestUIServer.stop; @@ -20,6 +16,7 @@ import static testUI.Utils.By.*; import static testUI.Utils.Performance.getListOfCommandsTime; import static testUI.Utils.Performance.logAverageTime; +import static testUI.elements.TestUI.E; import static testUI.elements.TestUI.raiseSoftAsserts; public class TestBrowser { @@ -35,15 +32,9 @@ public void testDesktopBrowser() { open("https://www.google.com"); UIAssert("the url is not correct", getSelenideDriver().getCurrentUrl().equals("https://www.google.com/")); - googleLandingPage.getGoogleCookies().click(); - googleLandingPage.getGoogleSearchInput().given() - .waitFor(5).untilIsVisible(); executeJs("arguments[0].value='TestUI';", googleLandingPage.getGoogleSearchInput() .getSelenideElement().getWrappedElement()); - googleLandingPage.getGoogleSearchInput().given().shouldBe().visible().sendKeys("TestUI"); - googleLandingPage.getGoogleSearchInput().waitFor(5).untilHasValue("TestUI"); - googleLandingPage.getGoogleSearch().shouldHave().not().emptyText(); - googleLandingPage.getGoogleSearch().given().waitFor(10).untilIsVisible() + googleLandingPage.getGoogleSearch() .then().saveScreenshot("~/Documents" + "/screen" + ".png"); @@ -57,11 +48,12 @@ public void testDesktopBrowser() { public void setDriverTest() { ChromeOptions options = new ChromeOptions(); Configuration.softAsserts = false; - options.addArguments("--user-agent=" + "Agent", "--ignore-certificate-errors"); - selenideBrowserCapabilities.setCapability(ChromeOptions.CAPABILITY, options); + options.addArguments("--user-agent=Agent", "--ignore-certificate-errors"); + Configuration.chromeOptions = options; selenideBrowserCapabilities.setBrowserName("chrome"); open("https://www.whatsmyua.info/"); - sleep(10000); + E(byCssSelector("textarea")).waitFor(10).untilHasText("Agent"); + sleep(1000); } @Test @@ -73,22 +65,13 @@ public void testDesktopBrowserSafari() { Configuration.softAsserts = true; open("https://www.google.com"); System.out.println(getTestUIDriver().getCurrentUrl()); - googleLandingPage.getGoogleSearchInput().given().waitFor(5).untilIsVisible(); - googleLandingPage.getGoogleCookies().click(); executeJs("arguments[0].value='TestUI';", googleLandingPage.getGoogleSearchInput() .getSelenideElement().getWrappedElement()); - googleLandingPage.getGoogleSearchInput().given().shouldBe().visible().sendKeys("TestUI"); - googleLandingPage.getGoogleSearch().shouldHave().not().emptyText(); - googleLandingPage.getGoogleSearch().given().waitFor(10).untilIsVisible() + googleLandingPage.getGoogleSearch().given() .then().click().saveScreenshot("/Users/alvarolasernalopez/Documents/screen" + ".png"); stop(); open("https://www.google.com"); - googleLandingPage.getGoogleSearchInput().given().waitFor(5).untilIsVisible(); - executeJs("arguments[0].value='TestUI';", googleLandingPage.getGoogleSearchInput() - .getSelenideElement().getWrappedElement()); - googleLandingPage.getGoogleSearchInput().given().shouldBe().visible().sendKeys("TestUI"); - googleLandingPage.getGoogleSearch().shouldHave().not().emptyText(); googleLandingPage.getGoogleSearch().given().waitFor(10).untilIsVisible() .then().click().saveScreenshot("/Users/alvarolasernalopez/Documents/screen" + ".png"); @@ -103,7 +86,6 @@ public void testDesktopBrowserStatusCode() { Configuration.automationType = DESKTOP_PLATFORM; Configuration.logNetworkCalls = true; Configuration.browser = "chrome"; - Configuration.remote = "http://localhost:4444/wd/hub"; open("https://www.google.com") .getNetworkCalls().logAllCalls().filterByExactUrl("https://www.google.com/") .logFilteredCalls() @@ -124,33 +106,18 @@ public void testDesktopBrowserStatusCode() { @DisplayName("Laptop browser test case") public void testDesktopCustomDriverBrowser() { Configuration.automationType = DESKTOP_PLATFORM; - open("https://www.google.com"); Configuration.browser = "chrome"; - googleLandingPage.getGoogleSearchInput().given().waitFor(5).untilIsVisible(); - executeJs("arguments[0].value='TestUI';", googleLandingPage.getGoogleSearchInput() - .getSelenideElement().getWrappedElement()); - googleLandingPage.getGoogleSearchInput().given().shouldBe().visible().sendKeys("TestUI"); - googleLandingPage.getGoogleSearch().shouldHave().not().emptyText().shouldHave() - .currentUrlEqualTo("https://www.google.com/") - .shouldHave().currentUrlContains("https://www.google"); - googleLandingPage.getGoogleSearch().given().waitFor(10).untilIsVisible() - .then().click().saveScreenshot("/Users/alvarolasernalopez/Documents/screen" + - ".png"); - + open("https://www.google.com"); stop(); ChromeOptions options = new ChromeOptions(); String userAgent = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"; options.addArguments("--user-agent=" + userAgent); ChromeDriver chromeDriver = new ChromeDriver(options); setDriver(chromeDriver); - open("https://www.google.com"); + open("https://www.whatsmyua.info/"); + E(byCssSelector("textarea")).waitFor(10).untilHasText(userAgent); stop(); open("https://www.google.com"); - googleLandingPage.getGoogleSearchInput().given().waitFor(5).untilIsVisible(); - executeJs("arguments[0].value='TestUI';", googleLandingPage.getGoogleSearchInput() - .getSelenideElement().getWrappedElement()); - googleLandingPage.getGoogleSearchInput().given().shouldBe().visible().sendKeys("TestUI"); - googleLandingPage.getGoogleSearch().shouldHave().not().emptyText(); stop(); } @@ -161,12 +128,7 @@ public void testAndroidBrowserOneLine() { Configuration.useAllure = false; Configuration.softAsserts = true; Configuration.browser = "chrome"; - GridTestUI gridTestUI = new GridTestUI(); - gridTestUI.setServerURL("http://admin:admin@localhost:8000") - .setPlatform("linux") - .setConfiguration(); Configuration.testUILogLevel = LogLevel.DEBUG; -// Configuration.browserLogs = true; open("https://loadero.com/login") .given("I set element").setElement(byCssSelector("#username")) .and("I check if visible").waitFor(5).untilIsVisible() diff --git a/src/test/java/TestRunners/TestIOS.java b/src/test/java/TestRunners/TestIOS.java index 85f75ec..bc75cae 100644 --- a/src/test/java/TestRunners/TestIOS.java +++ b/src/test/java/TestRunners/TestIOS.java @@ -4,7 +4,6 @@ import org.junit.Test; import pages.FacebookLandingPage; import testUI.Configuration; -import testUI.Utils.GridTestUI; import static testUI.TestUIDriver.getIOSTestUIDriver; import static testUI.UIOpen.open; @@ -15,70 +14,9 @@ public class TestIOS { @Test @DisplayName("IOS browser test case") public void testIOSBrowser() { -// GridTestUI gridTestUI = new GridTestUI(); -// gridTestUI.setPlatform(gridTestUI.IOS_PLATFORM).setConfiguration(); Configuration.automationType = Configuration.IOS_PLATFORM; Configuration.serverLogLevel = "all"; open("https://www.facebook.com"); System.out.println(getIOSTestUIDriver().getBatteryInfo().getState()); - facebookLandingPage.getSafariFacebookEmailDiv().click(); - facebookLandingPage.getSafariFacebookEmailInput() - .given().waitFor(5).untilIsVisible() - .when().sendKeys("email@email.com") - .then().shouldHave().theAttribute("value") - .and().shouldHave().value("email@email.com") - .and().shouldHave().attribute("value").not().equalTo("whatever"); - facebookLandingPage.getSafariFacebookEmailInput() - .then().waitFor(5).untilHasAttribute("value") - .equalTo("email@email.com"); - facebookLandingPage.getSafariFacebookPasswordInput() - .given().sendKeys("password") - .then().shouldHave().value("password") - .then().clear(); - } - - @Test - @DisplayName("IOS browser test case") - public void testIOSBrowser2() { - Configuration.automationType = Configuration.IOS_PLATFORM; - Configuration.serverLogLevel = "all"; - open("https://www.facebook.com"); - System.out.println(getIOSTestUIDriver().getBatteryInfo().getState()); - facebookLandingPage.getSafariFacebookEmailDiv().click(); - facebookLandingPage.getSafariFacebookEmailInput() - .given().waitFor(5).untilIsVisible() - .when().sendKeys("email@email.com") - .then().shouldHave().theAttribute("value") - .and().shouldHave().value("email@email.com") - .and().shouldHave().attribute("value").not().equalTo("whatever"); - facebookLandingPage.getSafariFacebookEmailInput() - .then().waitFor(5).untilHasAttribute("value") - .equalTo("email@email.com"); - facebookLandingPage.getSafariFacebookPasswordInput() - .given().sendKeys("password") - .then().shouldHave().value("password") - .then().clear(); - } - - @Test - @DisplayName("IOS browser test case") - public void testIOSBrowser3() { - Configuration.automationType = Configuration.IOS_PLATFORM; - open("https://www.facebook.com"); - System.out.println(getIOSTestUIDriver().getBatteryInfo().getState()); - facebookLandingPage.getSafariFacebookEmailDiv().click(); - facebookLandingPage.getSafariFacebookEmailInput() - .given().waitFor(5).untilIsVisible() - .when().sendKeys("email@email.com") - .then().shouldHave().theAttribute("value") - .and().shouldHave().value("email@email.com") - .and().shouldHave().attribute("value").not().equalTo("whatever"); - facebookLandingPage.getSafariFacebookEmailInput() - .then().waitFor(5).untilHasAttribute("value") - .equalTo("email@email.com"); - facebookLandingPage.getSafariFacebookPasswordInput() - .given().sendKeys("password") - .then().shouldHave().value("password") - .then().clear(); } } diff --git a/src/test/java/TestRunners/TestJUnit.java b/src/test/java/TestRunners/TestJUnit.java index 1cc501d..5943ee0 100644 --- a/src/test/java/TestRunners/TestJUnit.java +++ b/src/test/java/TestRunners/TestJUnit.java @@ -1,49 +1,41 @@ package TestRunners; +import io.netty.handler.logging.LogLevel; import io.qameta.allure.junit4.DisplayName; import org.junit.Test; -import pages.FacebookLandingPage; import pages.GoogleLandingPage; -import pages.LandingPage; import testUI.Configuration; import static testUI.UIOpen.open; public class TestJUnit { - private LandingPage landingPage = new LandingPage(); private GoogleLandingPage googleLandingPage = new GoogleLandingPage(); - private FacebookLandingPage facebookLandingPage = new FacebookLandingPage(); @Test @DisplayName("Android app test case") public void testAndroidApp() { - Configuration.androidAppPath = "1188.apk"; + Configuration.appPackage = "com.android.vending"; + Configuration.appActivity = ".AssetBrowserActivity"; + Configuration.automationType = Configuration.ANDROID_PLATFORM; open(); - landingPage.getCatering().given().waitFor(10).untilIsVisible().then().click(); - landingPage.getNearMeCollection().get(1).then().waitFor(5).untilIsVisible() - .and().click(); - System.out.println(landingPage.getSuggestedCollection().findByVisible().and().getText()); } @Test @DisplayName("Android browser test case") public void testAndroidBrowser() { + Configuration.automationType = Configuration.ANDROID_PLATFORM; + Configuration.testUILogLevel = LogLevel.DEBUG; + Configuration.installMobileChromeDriver = true; open("https://www.google.com") - .given().setElement(googleLandingPage.getGoogleSearchInput()) - .and().waitFor(5).untilIsVisible().then().sendKeys("TestUI") - .when().setElement(googleLandingPage.getGoogleSearch()) - .and().waitFor(10).untilIsVisible().then().click(); + .given().setElement(googleLandingPage.getGoogleSearchInput()); } @Test @DisplayName("IOS app test case") public void testIOSApp() { Configuration.automationType = Configuration.IOS_PLATFORM; - Configuration.iOSVersion = "12.2"; - Configuration.iOSAppPath - = "/Users/alvarolasernalopez/Documents/Automation/" + - "testapp/build/Release-iphonesimulator/testapp.app"; - Configuration.iOSDeviceName = "iPhone 6"; + Configuration.useNewWDA = false; + Configuration.bundleId = "com.apple.Preferences"; open(); } @@ -51,20 +43,7 @@ public void testIOSApp() { @DisplayName("IOS browser test case") public void testIOSBrowser() { Configuration.automationType = Configuration.IOS_PLATFORM; + Configuration.useNewWDA = false; open("https://www.facebook.com"); - facebookLandingPage.getSafariFacebookEmailDiv().click(); - facebookLandingPage.getSafariFacebookEmailInput() - .given().waitFor(5).untilIsVisible() - .when().sendKeys("email@email.com") - .then().shouldHave().theAttribute("value") - .and().shouldHave().value("email@email.com") - .and().shouldHave().attribute("value").not().equalTo("whatever"); - facebookLandingPage.getSafariFacebookEmailInput() - .then().waitFor(5) - .untilHasAttribute("value").equalTo("email@email.com"); - facebookLandingPage.getSafariFacebookPasswordInput() - .given().sendKeys("password") - .then().shouldHave().value("password") - .then().clear(); } } diff --git a/src/test/java/stepDefinitions/simpleSteps.java b/src/test/java/stepDefinitions/simpleSteps.java index 7d92da0..c774a8d 100644 --- a/src/test/java/stepDefinitions/simpleSteps.java +++ b/src/test/java/stepDefinitions/simpleSteps.java @@ -53,12 +53,6 @@ public void iClickOnMap(){ @When("I search for {word} in Google") public void iClickOnGoogleSearching(String search){ - googleLandingPage.getGoogleCookies().click(); - googleLandingPage.getGoogleSearchInput().given().waitFor(5) - .untilIsVisible().then().sendKeys(search); - googleLandingPage.getGoogleSearch().given().waitFor(30) - .untilIsEnabled().then().click(); - sleep(2000); } @Then("I take screenshot in all devices") @@ -68,13 +62,6 @@ public void iTakeScreenshotInAllDevices() { @When("I search for {word} in Google and fail assertion") public void iClickOnGoogleSearchingAndFail(String search){ - googleLandingPage.getGoogleSearchInput() - .given().waitFor(5).untilIsVisible() - .then().sendKeys(search) - .and().should().containText("fakeText"); - // Tailored assert that takes screenshot on failure: - UIAssert("Fail assert", - googleLandingPage.getGoogleSearchInput().getText().equals("fakeText")); } @Given("I am using {word} browser") From 9d27ef3ab8f24eb1329523074b536762b4e1fd05 Mon Sep 17 00:00:00 2001 From: Alvaro Laserna Date: Fri, 2 Dec 2022 14:58:41 +0100 Subject: [PATCH 3/4] fix selenium dependency mismatch --- pom.xml | 7 +++++++ src/test/java/TestRunners/TestJUnit.java | 1 + 2 files changed, 8 insertions(+) diff --git a/pom.xml b/pom.xml index 3f6d906..77ea6bf 100644 --- a/pom.xml +++ b/pom.xml @@ -135,6 +135,12 @@ io.appium java-client + + + org.seleniumhq.selenium + selenium-api + + 8.1.1 @@ -151,6 +157,7 @@ com.codeborne selenide 6.7.4 + org.slf4j diff --git a/src/test/java/TestRunners/TestJUnit.java b/src/test/java/TestRunners/TestJUnit.java index 5943ee0..cde2fb6 100644 --- a/src/test/java/TestRunners/TestJUnit.java +++ b/src/test/java/TestRunners/TestJUnit.java @@ -25,6 +25,7 @@ public void testAndroidApp() { public void testAndroidBrowser() { Configuration.automationType = Configuration.ANDROID_PLATFORM; Configuration.testUILogLevel = LogLevel.DEBUG; + Configuration.UDID = ""; Configuration.installMobileChromeDriver = true; open("https://www.google.com") .given().setElement(googleLandingPage.getGoogleSearchInput()); From 02840d8c482957c846c54f25c886e29fee251c64 Mon Sep 17 00:00:00 2001 From: Alvaro Laserna Date: Fri, 2 Dec 2022 16:48:01 +0100 Subject: [PATCH 4/4] fix deps problems --- pom.xml | 17 ++++++- .../AndroidUtils/AndroidCapabilities.java | 46 +++++++++---------- .../java/testUI/IOSUtils/IOCapabilities.java | 36 +++++++-------- src/main/java/testUI/TestUIServer.java | 2 +- src/main/java/testUI/elements/Element.java | 4 +- src/test/java/TestRunners/TestJUnit.java | 3 +- 6 files changed, 61 insertions(+), 47 deletions(-) diff --git a/pom.xml b/pom.xml index 77ea6bf..aaee65d 100644 --- a/pom.xml +++ b/pom.xml @@ -132,6 +132,11 @@ + + org.seleniumhq.selenium + selenium-java + 4.6.0 + io.appium java-client @@ -140,8 +145,16 @@ org.seleniumhq.selenium selenium-api + + org.seleniumhq.selenium + selenium-remote-driver + + + org.seleniumhq.selenium + selenium-support + - 8.1.1 + 8.1.0 net.lightbody.bmp @@ -156,8 +169,8 @@ com.codeborne selenide - 6.7.4 + 6.10.1 org.slf4j diff --git a/src/main/java/testUI/AndroidUtils/AndroidCapabilities.java b/src/main/java/testUI/AndroidUtils/AndroidCapabilities.java index fb731bb..92ebd74 100644 --- a/src/main/java/testUI/AndroidUtils/AndroidCapabilities.java +++ b/src/main/java/testUI/AndroidUtils/AndroidCapabilities.java @@ -23,27 +23,27 @@ public static DesiredCapabilities setAppAndroidCapabilities(TestUIConfiguration DesiredCapabilities cap = setChromeDriverCap(configuration); if (getDesiredCapabilities() == null) { cap.merge(setDeviceCapability(configuration)); - cap.setCapability(AndroidMobileCapabilityType.APP_WAIT_DURATION, + cap.setCapability("appium:" + AndroidMobileCapabilityType.APP_WAIT_DURATION, Configuration.launchAppTimeout); if (Configuration.automationName.isEmpty()) { - cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2"); + cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2"); } else { - cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, + cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME, Configuration.automationName); } - cap.setCapability(MobileCapabilityType.PLATFORM_NAME, Platform.ANDROID); + cap.setCapability("appium:platformName", Platform.ANDROID); if (!Configuration.appActivity.isEmpty() && !Configuration.appPackage.isEmpty()) { - cap.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, + cap.setCapability("appium:" + AndroidMobileCapabilityType.APP_ACTIVITY, Configuration.appActivity); - cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, + cap.setCapability("appium:" + AndroidMobileCapabilityType.APP_PACKAGE, Configuration.appPackage); } if (!Configuration.androidAppPath.isEmpty()) { String appPath = Configuration.androidAppPath.charAt(0) == '/' ? Configuration.androidAppPath : System.getProperty("user.dir") + "/" + Configuration.androidAppPath; - cap.setCapability("androidInstallPath", appPath); - cap.setCapability("app", appPath); + cap.setCapability("appium:androidInstallPath", appPath); + cap.setCapability("appium:app", appPath); } cap.merge(setPortCapabilities(configuration)); } else { @@ -69,16 +69,16 @@ public static DesiredCapabilities setAndroidBrowserCapabilities( if (getDesiredCapabilities() == null) { cap.merge(setDeviceCapability(configuration)); if (Configuration.automationName.isEmpty()) { - cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2"); + cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2"); } else { - cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, + cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME, Configuration.automationName); } cap.merge(setPortCapabilities(configuration)); - cap.setCapability(MobileCapabilityType.NO_RESET, true); - cap.setCapability(MobileCapabilityType.PLATFORM_NAME, Platform.ANDROID); - cap.setCapability(MobileCapabilityType.BROWSER_NAME, "chrome"); - cap.setCapability(AndroidMobileCapabilityType.NATIVE_WEB_SCREENSHOT, true); + cap.setCapability("appium:" + MobileCapabilityType.NO_RESET, true); + cap.setCapability("appium:" + MobileCapabilityType.PLATFORM_NAME, Platform.ANDROID); + cap.setCapability("appium:" + MobileCapabilityType.BROWSER_NAME, "chrome"); + cap.setCapability("appium:" + AndroidMobileCapabilityType.NATIVE_WEB_SCREENSHOT, true); if (!Configuration.useW3C) { ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setExperimentalOption("w3c", false); @@ -133,11 +133,11 @@ private static DesiredCapabilities setDeviceCapability(TestUIConfiguration confi if (configuration.getEmulatorName().isEmpty()) { String udid = configuration.getUDID().isEmpty() ? getDevice() : configuration.getUDID(); - cap.setCapability(MobileCapabilityType.UDID, udid); - cap.setCapability(MobileCapabilityType.DEVICE_NAME, udid); + cap.setCapability("appium:" + MobileCapabilityType.UDID, udid); + cap.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME, udid); } else { - cap.setCapability(AndroidMobileCapabilityType.AVD, configuration.getEmulatorName()); - cap.setCapability(MobileCapabilityType.DEVICE_NAME, configuration.getEmulatorName()); + cap.setCapability("appium:" + AndroidMobileCapabilityType.AVD, configuration.getEmulatorName()); + cap.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME, configuration.getEmulatorName()); } return cap; @@ -148,14 +148,14 @@ private static DesiredCapabilities setPortCapabilities(TestUIConfiguration confi if (configuration.getAppiumUrl().isEmpty()) { int systemPort = Integer.parseInt(getUsePort().get(getUsePort().size() - 1)) + 10; int chromeDriverPort = Integer.parseInt(getUsePort().get(getUsePort().size() - 1)) + 15; - cap.setCapability("chromedriverPort", chromeDriverPort); - cap.setCapability(AndroidMobileCapabilityType.SYSTEM_PORT, systemPort); + cap.setCapability("appium:" + "chromedriverPort", chromeDriverPort); + cap.setCapability("appium:" + AndroidMobileCapabilityType.SYSTEM_PORT, systemPort); } if (Configuration.chromeDriverPort != 0) { - cap.setCapability("chromedriverPort", chromeDriverPort); + cap.setCapability("appium:chromedriverPort", chromeDriverPort); } if (Configuration.systemPort != 0) { - cap.setCapability(AndroidMobileCapabilityType.SYSTEM_PORT, systemPort); + cap.setCapability("appium:" + AndroidMobileCapabilityType.SYSTEM_PORT, systemPort); } return cap; @@ -170,7 +170,7 @@ private static DesiredCapabilities setChromeDriverCap( configuration.getChromeDriverPath().startsWith("C:\\") ? configuration.getChromeDriverPath() : System.getProperty("user.dir") + slash + configuration.getChromeDriverPath(); - cap.setCapability(AndroidMobileCapabilityType.CHROMEDRIVER_EXECUTABLE, chromePath); + cap.setCapability("appium:" + AndroidMobileCapabilityType.CHROMEDRIVER_EXECUTABLE, chromePath); return cap; } diff --git a/src/main/java/testUI/IOSUtils/IOCapabilities.java b/src/main/java/testUI/IOSUtils/IOCapabilities.java index 960affb..90735c6 100644 --- a/src/main/java/testUI/IOSUtils/IOCapabilities.java +++ b/src/main/java/testUI/IOSUtils/IOCapabilities.java @@ -27,14 +27,14 @@ public static DesiredCapabilities setIOSCapabilities(boolean browser) { } // BROWSER OR APP if (browser) { - capabilities.setCapability(MobileCapabilityType.AUTO_WEBVIEW, true); - capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, + capabilities.setCapability("appium:" + MobileCapabilityType.AUTO_WEBVIEW, true); + capabilities.setCapability("appium:" + MobileCapabilityType.BROWSER_NAME, MobileBrowserType.SAFARI); } else if (!Configuration.iOSAppPath.isEmpty()) { String appPath = Configuration.iOSAppPath.charAt(0) == '/' ? Configuration.iOSAppPath : System.getProperty("user.dir") + "/" + Configuration.iOSAppPath; - capabilities.setCapability(MobileCapabilityType.APP, appPath); + capabilities.setCapability("appium:" + MobileCapabilityType.APP, appPath); } // IN CASE OF REAL DEVICE if (!Configuration.xcodeOrgId.isEmpty()) { @@ -44,11 +44,11 @@ public static DesiredCapabilities setIOSCapabilities(boolean browser) { Configuration.xcodeSigningId); } if (!Configuration.updatedWDABundleId.isEmpty()) { - capabilities.setCapability("updatedWDABundleId", + capabilities.setCapability("appium:updatedWDABundleId", Configuration.updatedWDABundleId); } if (!Configuration.bundleId.isEmpty()) { - capabilities.setCapability("bundleId", Configuration.bundleId); + capabilities.setCapability("appium:bundleId", Configuration.bundleId); } // DEFAULT THINGS int wdaLocalPort; @@ -60,11 +60,11 @@ public static DesiredCapabilities setIOSCapabilities(boolean browser) { wdaLocalPort = Configuration.wdaPort; } capabilities.setCapability(IOSMobileCapabilityType.WDA_LOCAL_PORT, wdaLocalPort); - capabilities.setCapability(MobileCapabilityType.NO_RESET, false); + capabilities.setCapability("appium:" + MobileCapabilityType.NO_RESET, false); capabilities.setCapability(IOSMobileCapabilityType.USE_NEW_WDA, Configuration.useNewWDA); - capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, Platform.IOS); - capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest"); + capabilities.setCapability("appium:platformName", Platform.IOS); + capabilities.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME, "XCUITest"); capabilities.setCapability(IOSMobileCapabilityType.START_IWDP, true); capabilities.setCapability(IOSMobileCapabilityType.WDA_LAUNCH_TIMEOUT, Configuration.launchAppTimeout); @@ -107,28 +107,28 @@ private static DesiredCapabilities getIOSDevice() { Configuration.iOSDeviceName; Configuration.iOSVersion = Configuration.iOSVersion.isEmpty() ? "13.2" : Configuration.iOSVersion; - capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, + capabilities.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME, Configuration.iOSDeviceName); - capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, + capabilities.setCapability("appium:" + MobileCapabilityType.PLATFORM_VERSION, Configuration.iOSVersion); - capabilities.setCapability("udid", Configuration.UDID); + capabilities.setCapability("appium:udid", Configuration.UDID); } else { if (Configuration.UDID.isEmpty()) { - capabilities.setCapability("udid", "auto"); + capabilities.setCapability("appium:udid", "auto"); } else { - capabilities.setCapability("udid", Configuration.UDID); + capabilities.setCapability("appium:udid", Configuration.UDID); } - capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, + capabilities.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME, Configuration.iOSDeviceName); - capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, + capabilities.setCapability("appium:" + MobileCapabilityType.PLATFORM_VERSION, Configuration.iOSVersion); } } else { - capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, + capabilities.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME, Configuration.iOSDeviceName); - capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, + capabilities.setCapability("appium:" + MobileCapabilityType.PLATFORM_VERSION, Configuration.iOSVersion); - capabilities.setCapability("udid", Configuration.UDID); + capabilities.setCapability("appium:udid", Configuration.UDID); } return capabilities; diff --git a/src/main/java/testUI/TestUIServer.java b/src/main/java/testUI/TestUIServer.java index 99b966f..2a64710 100644 --- a/src/main/java/testUI/TestUIServer.java +++ b/src/main/java/testUI/TestUIServer.java @@ -35,7 +35,7 @@ protected static void startServer( DesiredCapabilities cap; //Set Capabilities cap = new DesiredCapabilities(); - cap.setCapability("noReset", "false"); + cap.setCapability("appium:noReset", "false"); //Build the Appium service builder = new AppiumServiceBuilder(); builder.withIPAddress("127.0.0.1"); diff --git a/src/main/java/testUI/elements/Element.java b/src/main/java/testUI/elements/Element.java index 1d3e462..7af6aaf 100644 --- a/src/main/java/testUI/elements/Element.java +++ b/src/main/java/testUI/elements/Element.java @@ -7,7 +7,7 @@ import org.openqa.selenium.interactions.PointerInput; import org.openqa.selenium.interactions.Sequence; import org.openqa.selenium.io.FileHandler; -import org.openqa.selenium.support.ui.Quotes; +//import org.openqa.selenium.support.ui.Quotes; import testUI.Configuration; import testUI.BrowserLogs; import testUI.Utils.TestUIException; @@ -409,7 +409,7 @@ public UIElement sendKeys(CharSequence charSequence) { public UIElement selectElementByValue(String... values) { for (String value : values) { - UIElement e = E(By.xpath("//option[@value = " + Quotes.escape(value) + "]")); + UIElement e = E(By.xpath("//option[@value = " + value + "]")); e.waitFor(5).untilIsVisible(); if (Configuration.automationType.equals(Configuration.DESKTOP_PLATFORM)) { if (!e.getSelenideElement().isSelected()) { diff --git a/src/test/java/TestRunners/TestJUnit.java b/src/test/java/TestRunners/TestJUnit.java index cde2fb6..f8ef644 100644 --- a/src/test/java/TestRunners/TestJUnit.java +++ b/src/test/java/TestRunners/TestJUnit.java @@ -25,8 +25,9 @@ public void testAndroidApp() { public void testAndroidBrowser() { Configuration.automationType = Configuration.ANDROID_PLATFORM; Configuration.testUILogLevel = LogLevel.DEBUG; - Configuration.UDID = ""; + Configuration.UDID = "emulator-5554"; Configuration.installMobileChromeDriver = true; + Configuration.appiumUrl = "http://localhost:4723/wd/hub"; open("https://www.google.com") .given().setElement(googleLandingPage.getGoogleSearchInput()); }