Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
java: ["8", "11", "17"]
java: ["17", "21", "23"]

steps:
- uses: actions/checkout@v3
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/ci_integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,17 @@ jobs:

steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: 11
java-version: 17
distribution: "zulu"
- name: Remove Chrome
run: sudo apt purge google-chrome-stable
- name: Remove default Chromium
run: sudo apt purge chromium-browser
- name: Install a new Chromium
run: sudo apt install -y chromium-browser
- uses: nanasess/setup-chromedriver@v2
- name: Integration browser test with Maven
run: mvn -Dtest=TestBrowser test
30 changes: 20 additions & 10 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.testdevlab</groupId>
<artifactId>TestUI</artifactId>
<version>2.0.2</version>
<version>3.0.0</version>

<developers>
<developer>
Expand All @@ -25,10 +25,15 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin> <!-- Create sources.jar -->
Expand Down Expand Up @@ -135,7 +140,7 @@
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.11.0</version>
<version>4.28.0</version>
</dependency>
<dependency>
<groupId>io.appium</groupId>
Expand All @@ -154,7 +159,7 @@
<artifactId>selenium-support</artifactId>
</exclusion>
</exclusions>
<version>8.5.0</version>
<version>9.3.0</version>
</dependency>
<dependency>
<groupId>net.lightbody.bmp</groupId>
Expand All @@ -169,12 +174,17 @@
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>6.17.2</version>
<version>7.7.0</version>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide-proxy</artifactId>
<version>7.7.0</version>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.5.2</version>
<version>5.9.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
Expand Down Expand Up @@ -217,8 +227,8 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>test</scope>
<version>1.18.28</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
Expand Down
40 changes: 19 additions & 21 deletions src/main/java/testUI/AndroidUtils/AndroidCapabilities.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package testUI.AndroidUtils;

import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.Platform;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
Expand All @@ -23,19 +21,19 @@ public static DesiredCapabilities setAppAndroidCapabilities(TestUIConfiguration
DesiredCapabilities cap = setChromeDriverCap(configuration);
if (getDesiredCapabilities() == null) {
cap.merge(setDeviceCapability(configuration));
cap.setCapability("appium:" + AndroidMobileCapabilityType.APP_WAIT_DURATION,
cap.setCapability("appium:appWaitDuration",
Configuration.launchAppTimeout);
if (Configuration.automationName.isEmpty()) {
cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
cap.setCapability("appium:automationName", "UiAutomator2");
} else {
cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME,
cap.setCapability("appium:automationName",
Configuration.automationName);
}
cap.setCapability("appium:platformName", Platform.ANDROID);
if (!Configuration.appActivity.isEmpty() && !Configuration.appPackage.isEmpty()) {
cap.setCapability("appium:" + AndroidMobileCapabilityType.APP_ACTIVITY,
cap.setCapability("appium:appActivity",
Configuration.appActivity);
cap.setCapability("appium:" + AndroidMobileCapabilityType.APP_PACKAGE,
cap.setCapability("appium:appPackage",
Configuration.appPackage);
}
if (!Configuration.androidAppPath.isEmpty()) {
Expand Down Expand Up @@ -69,16 +67,16 @@ public static DesiredCapabilities setAndroidBrowserCapabilities(
if (getDesiredCapabilities() == null) {
cap.merge(setDeviceCapability(configuration));
if (Configuration.automationName.isEmpty()) {
cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
cap.setCapability("appium:automationName", "UiAutomator2");
} else {
cap.setCapability("appium:" + MobileCapabilityType.AUTOMATION_NAME,
cap.setCapability("appium:automationName",
Configuration.automationName);
}
cap.merge(setPortCapabilities(configuration));
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);
cap.setCapability("appium:noReset", true);
cap.setCapability("appium:platformName", Platform.ANDROID);
cap.setCapability("appium:browserName", "chrome");
cap.setCapability("appium:nativeWebScreenshot", true);
if (!Configuration.useW3C) {
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("w3c", false);
Expand Down Expand Up @@ -133,11 +131,11 @@ private static DesiredCapabilities setDeviceCapability(TestUIConfiguration confi
if (configuration.getEmulatorName().isEmpty()) {
String udid = configuration.getUDID().isEmpty() ? getDevice()
: configuration.getUDID();
cap.setCapability("appium:" + MobileCapabilityType.UDID, udid);
cap.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME, udid);
cap.setCapability("appium:udid", udid);
cap.setCapability("appium:deviceName", udid);
} else {
cap.setCapability("appium:" + AndroidMobileCapabilityType.AVD, configuration.getEmulatorName());
cap.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME, configuration.getEmulatorName());
cap.setCapability("appium:avd", configuration.getEmulatorName());
cap.setCapability("appium:deviceName", configuration.getEmulatorName());
}

return cap;
Expand All @@ -148,14 +146,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("appium:" + "chromedriverPort", chromeDriverPort);
cap.setCapability("appium:" + AndroidMobileCapabilityType.SYSTEM_PORT, systemPort);
cap.setCapability("appium:chromedriverPort", chromeDriverPort);
cap.setCapability("appium:systemPort", systemPort);
}
if (Configuration.chromeDriverPort != 0) {
cap.setCapability("appium:chromedriverPort", chromeDriverPort);
}
if (Configuration.systemPort != 0) {
cap.setCapability("appium:" + AndroidMobileCapabilityType.SYSTEM_PORT, systemPort);
cap.setCapability("appium:systemPort", systemPort);
}

return cap;
Expand All @@ -170,7 +168,7 @@ private static DesiredCapabilities setChromeDriverCap(
configuration.getChromeDriverPath().startsWith("C:\\")
? configuration.getChromeDriverPath()
: System.getProperty("user.dir") + slash + configuration.getChromeDriverPath();
cap.setCapability("appium:" + AndroidMobileCapabilityType.CHROMEDRIVER_EXECUTABLE, chromePath);
cap.setCapability("appium:chromedriverExecutable", chromePath);
return cap;
}

Expand Down
38 changes: 18 additions & 20 deletions src/main/java/testUI/IOSUtils/IOCapabilities.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package testUI.IOSUtils;

import io.appium.java_client.remote.IOSMobileCapabilityType;
import io.appium.java_client.remote.MobileBrowserType;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.Platform;
import org.openqa.selenium.remote.DesiredCapabilities;
import testUI.Configuration;
Expand All @@ -27,20 +25,20 @@ public static DesiredCapabilities setIOSCapabilities(boolean browser) {
}
// BROWSER OR APP
if (browser) {
capabilities.setCapability("appium:" + MobileCapabilityType.AUTO_WEBVIEW, true);
capabilities.setCapability("appium:" + MobileCapabilityType.BROWSER_NAME,
capabilities.setCapability("appium:autoWebview", true);
capabilities.setCapability("appium:browserName",
MobileBrowserType.SAFARI);
} else if (!Configuration.iOSAppPath.isEmpty()) {
String appPath = Configuration.iOSAppPath.charAt(0) == '/' ?
Configuration.iOSAppPath :
System.getProperty("user.dir") + "/" + Configuration.iOSAppPath;
capabilities.setCapability("appium:" + MobileCapabilityType.APP, appPath);
capabilities.setCapability("appium:app", appPath);
}
// IN CASE OF REAL DEVICE
if (!Configuration.xcodeOrgId.isEmpty()) {
capabilities.setCapability(IOSMobileCapabilityType.XCODE_ORG_ID,
capabilities.setCapability("xcodeOrgId",
Configuration.xcodeOrgId);
capabilities.setCapability(IOSMobileCapabilityType.XCODE_SIGNING_ID,
capabilities.setCapability("xcodeSigningId",
Configuration.xcodeSigningId);
}
if (!Configuration.updatedWDABundleId.isEmpty()) {
Expand All @@ -59,16 +57,16 @@ public static DesiredCapabilities setIOSCapabilities(boolean browser) {
} else {
wdaLocalPort = Configuration.wdaPort;
}
capabilities.setCapability(IOSMobileCapabilityType.WDA_LOCAL_PORT, wdaLocalPort);
capabilities.setCapability("appium:" + MobileCapabilityType.NO_RESET, false);
capabilities.setCapability(IOSMobileCapabilityType.USE_NEW_WDA,
capabilities.setCapability("wdaLocalPort", wdaLocalPort);
capabilities.setCapability("appium:noReset", false);
capabilities.setCapability("useNewWDA",
Configuration.useNewWDA);
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,
capabilities.setCapability("appium:automationName", "XCUITest");
capabilities.setCapability("startIWDP", true);
capabilities.setCapability("wdaLaunchTimeout",
Configuration.launchAppTimeout);
capabilities.setCapability(IOSMobileCapabilityType.COMMAND_TIMEOUTS, 30000);
capabilities.setCapability("commandTimeouts", 30000);
// ADD CUSTOM CAPABILITIES
if (!Configuration.addMobileDesiredCapabilities.asMap().isEmpty()) {
for (String key : addMobileDesiredCapabilities.asMap().keySet()) {
Expand Down Expand Up @@ -107,9 +105,9 @@ private static DesiredCapabilities getIOSDevice() {
Configuration.iOSDeviceName;
Configuration.iOSVersion = Configuration.iOSVersion.isEmpty() ? "13.2" :
Configuration.iOSVersion;
capabilities.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME,
capabilities.setCapability("appium:deviceName",
Configuration.iOSDeviceName);
capabilities.setCapability("appium:" + MobileCapabilityType.PLATFORM_VERSION,
capabilities.setCapability("appium:platformVersion",
Configuration.iOSVersion);
capabilities.setCapability("appium:udid", Configuration.UDID);
} else {
Expand All @@ -118,15 +116,15 @@ private static DesiredCapabilities getIOSDevice() {
} else {
capabilities.setCapability("appium:udid", Configuration.UDID);
}
capabilities.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME,
capabilities.setCapability("appium:deviceName",
Configuration.iOSDeviceName);
capabilities.setCapability("appium:" + MobileCapabilityType.PLATFORM_VERSION,
capabilities.setCapability("appium:platformVersion",
Configuration.iOSVersion);
}
} else {
capabilities.setCapability("appium:" + MobileCapabilityType.DEVICE_NAME,
capabilities.setCapability("appium:deviceName" ,
Configuration.iOSDeviceName);
capabilities.setCapability("appium:" + MobileCapabilityType.PLATFORM_VERSION,
capabilities.setCapability("appium:platformVersion",
Configuration.iOSVersion);
capabilities.setCapability("appium:udid", Configuration.UDID);
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/testUI/elements/AttributeImp.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package testUI.elements;

import com.codeborne.selenide.Condition;
import com.codeborne.selenide.WebElementCondition;
import org.openqa.selenium.By;
import testUI.Configuration;

Expand Down Expand Up @@ -40,7 +41,7 @@ protected AttributeImp(By AppiumElement,
this.collection = collection;
}

private Condition condition(boolean hasCondition, Condition condition) {
private WebElementCondition condition(boolean hasCondition, WebElementCondition condition) {
if (hasCondition)
return condition;
return Condition.not(condition);
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/testUI/elements/ShouldBe.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package testUI.elements;

import com.codeborne.selenide.Condition;
import com.codeborne.selenide.WebElementCondition;
import org.openqa.selenium.By;
import testUI.Configuration;

Expand Down Expand Up @@ -39,7 +40,7 @@ protected ShouldBe(By AppiumElement,
this.collection = collection;
}

private Condition condition(boolean hasCondition, Condition condition) {
private WebElementCondition condition(boolean hasCondition, WebElementCondition condition) {
if (hasCondition)
return condition;
return Condition.not(condition);
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/testUI/elements/TestUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.codeborne.selenide.Condition;
import com.codeborne.selenide.SelenideElement;
import com.codeborne.selenide.WebDriverRunner;
import com.codeborne.selenide.WebElementCondition;
import io.appium.java_client.AppiumBy;
import io.qameta.allure.Allure;
import io.qameta.allure.model.Status;
Expand Down Expand Up @@ -231,7 +232,7 @@ protected SelenideElement getSelenide(By element, int index, boolean collection)
return $(element);
}

protected void selenideAssert(Condition condition,
protected void selenideAssert(WebElementCondition condition,
int time,
By SelenideElement,
int index,
Expand Down
6 changes: 4 additions & 2 deletions src/test/java/TestRunners/TestAndroidLocal.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public void testAndroidBrowser() {
Configuration.testUILogLevel = LogLevel.DEBUG;
Configuration.automationType = ANDROID_PLATFORM;
Configuration.installMobileChromeDriver = true;
Configuration.UDID = "emulator-5554";
Configuration.appiumUrl = "http://localhost:4723/";
open("https://www.google.com");
executeJs("arguments[0].value='TestUI';", googleLandingPage.getGoogleSearchInput()
.getMobileElement());
Expand All @@ -39,8 +41,8 @@ public void testAndroidBrowser() {
@DisplayName("Android browser test case")
public void testAndroidBrowser2() {
Configuration.testUILogLevel = LogLevel.DEBUG;
Configuration.appiumUrl = "";
Configuration.androidDeviceName = "";
Configuration.appiumUrl = "http://localhost:4723/";
Configuration.UDID = "emulator-5554";
open("https://www.google.com");
}
}
Loading