Quantum 1.30.0 release notes
This document introduces changes made in version 1.30 (following version 1.23.0) and also includes upgrade instructions.
Upgrades
-
Upgraded the Selenium version from 3.141.59 to 4.2.2 (Selenium 4)
-
Upgraded the Appium client version from 7.6.0 to 8.1.1 (Appium 2.0 compliant)
-
Implemented vendor-specific desired capabilities introduced in Appium 2.0
-
Upgraded the perfectomobile.version from 18.3.0.3 to 18.6.0.0
-
Upgraded the QAF and QAF support versions from 3.0.0 to 3.1.0
New features
-
Added support for Appium 2.0-compliant clients and Selenium 4.0
-
Attached Quantum Source to the Quantum support jar for ease of debugging
-
Added support for parallel download of multiple Perfecto reports for the same test case
-
Introduced a new interface VendorPrefixPatch that lets you implement the vendor-specific desired capabilities required by Appium 2.0
-
Added a NettyClientFactory client
Breaking changes
-
Platform-specific methods (such as
hideKeyboard) has moved from the Appium Driver to a Platform Specific Driver. -
The
MobileElementclass is deprecated and removed. UseWebElementclass instead. -
The
MobileElementclass had asetValuemethod. Because theMobileElementclass is now deprecated, use thesendKeymethod of theWebElementclass instead. -
The
findElementByXXXmethods are deprecated and removed. Use thefindElement(By.xxx(“”))methods instead. -
The
MobileByclass is deprecated and removed. Use theAppiumByclass instead. -
Timeouts used to be specified using long values. Now, the
Waitmethods with parameterlongare deprecated and removed. UseDuration.ofXXX(value)instead. -
Applicable only to mobile execution (of web, hybrid, or native apps): All Perfecto-specific desired capabilities in the
configfile (testng.xml) need to be prefixed with:perfecto:For example:
perfecto:securityToken -
Applicable only to mobile execution (of web, hybrid, or native apps): All Perfecto-specific desired capabilities in the
application.propertiesfile need to have a key starting with:perfecto.capabilities.xxxFor example:
perfecto.capabilites.securityToken -
Log4j dependencies are removed from the framework. Provide log4j-related dependencies in your
pom.xmlfile.
Deprecation warnings
-
The
Driver.getCapabilities().getPlatform()method is deprecated. UseDriver.getCapabilities().getPlatformName()instead. -
The
io.appium.java_client.TouchActionclass is deprecated. Use theSequenceclass instead. -
Opera browser support is deprecated. This is not relevant for Perfecto.
Upgrade steps
-
Edit the
pom.xmlfile as follows:-
Change the Quantum Support Dependency to 1.30.0.
-
Remove all existing log4j- and SL4J-related dependencies.
-
Add the following property in the
propertiessection (usually found at the top of thepom.xmlfile):Copy<log4j.version>2.19.0</log4j.version> -
Add the following dependencies related to log4j in the
dependenciessection:Copy<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.version}</version>
</dependency>
-
-
Perform a Maven install/uninstall of the project.
Due to breaking changes introduced at the level of the Appium/Selenium API, you will observe errors in the Java files located in thesrc/main/javafolder. The issues will be fixed at a later stage. -
In the
resourcesfolder, edit theapplication.propertiesfile as follows:-
Applicable only to mobile execution (of web, hybrid, or native apps): Update the property names of all Perfecto-related desired capabilities from
driver.capabilities.xxxtoperfecto.capabilities.xxx.For example:
perfecto.capabilities.securityToken
-
-
In the
src/main/resources/configfolder, edit thetestng.xmlfile as follows:-
Applicable only to mobile execution (of web, hybrid, or native apps): Update the property names of all Perfecto-related desired capabilities from
xxx.capabilities.xxxtoyyy.capabilities.perfecto:xxx.For example:
driver.capabilities.perfecto:model -
Applicable only to mobile execution (of web, hybrid, or native apps): Update the property value of all additional Perfecto-related desired capabilities from
yyy.capabilities.xxxtoyyy.capabilities.perfecto:xxx.For example:
{'perfecto:useVirtualDevice':true}
-
-
In the
src/main/javafolder, fix any code-related issues. Use the following table for reference. This table lists the known breaking changes.For any issues not listed here, contact Perfecto Support.
Solution number
Breaking change
Solution
1
The
hideKeyboardmethod is moved to a driver-level method.Move the
hideKeyboardcalls to the driver object.2
Command-level logs are not displayed during the execution.
Add log4j-related dependencies to their project POM file.
3
findElementByXXXmethods are removed from the Appium client.Convert them to respective
findElement(By.xxx(""))calls.4
Unable to execute tests on virtual devices.
Prefix
useVirtualDevicewithperfecto:. For example:perfecto:useVirtualDevice5
The
MobileElementclass is removed from the Appium client.Replace
MobileElementwithWebElement.6
The
TouchActionclass doe not have a constructor with Appium driver argument.Replace the instantiation of the
TouchActionclass with the respecting Android or iOS driver.7
A deprecation warning occurs for the
TouchActionclass.If you have implemented the
TouchActionclass in your scripts, consider migrating to theSequenceclass.8
waitfunctions are not accepting a long value.Instead of a long value, use the
Durationclass.9
Opera browser is showing a deprecation warning.
Remove support for the Opera browser.
10
The
setValuemethod of theMobileElementis not available for setting a value.Use the
sendKeymethod of theWebElement.11
MobileByis showing a deprecation warning.Use
AppiumByinstead ofMobileBy.12
Perfecto-related desired capabilities do not work.
Applicable only to mobile execution (of web, hybrid, or native apps): Use
perfecto.capabilities.xxxto provide Perfecto-related capabilities. For example:perfecto.capabilities.securityToken13
driver.getCapabilities().getPlatform()shows a deprecation warning.the
driver.getCapabilities().getPlatform()class should be changed todriver.getCapabilities().getPlatformName().14
Getting Error while executing tests - java.lang.NoClassDefFoundError: org/apache/log4j/Level
In the
pom.xmlfile, remove any additional SLF4J or Log4j dependencies except the ones added in row 2.15
A 401 HTTP error occurs when the mobile driver is initialized.
Applicable only to mobile execution (of web, hybrid, or native apps): Update Perfecto-specific desired capabilities in the
application.propertiesfile. If the existing capabilities are provided usingdriver.capabilities.xxx, update them toperfecto.capabilities.xxx.