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
MobileElement
class is deprecated and removed. UseWebElement
class instead. -
The
MobileElement
class had asetValue
method. Because theMobileElement
class is now deprecated, use thesendKey
method of theWebElement
class instead. -
The
findElementByXXX
methods are deprecated and removed. Use thefindElement(By.xxx(“”))
methods instead. -
The
MobileBy
class is deprecated and removed. Use theAppiumBy
class instead. -
Timeouts used to be specified using long values. Now, the
Wait
methods with parameterlong
are 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
config
file (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.properties
file need to have a key starting with:perfecto.capabilities.xxx
For example:
perfecto.capabilites.securityToken
-
Log4j dependencies are removed from the framework. Provide log4j-related dependencies in your
pom.xml
file.
Deprecation warnings
-
The
Driver.getCapabilities().getPlatform()
method is deprecated. UseDriver.getCapabilities().getPlatformName()
instead. -
The
io.appium.java_client.TouchAction
class is deprecated. Use theSequence
class instead. -
Opera browser support is deprecated. This is not relevant for Perfecto.
Upgrade steps
-
Edit the
pom.xml
file 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
properties
section (usually found at the top of thepom.xml
file):Copy<log4j.version>2.19.0</log4j.version>
-
Add the following dependencies related to log4j in the
dependencies
section: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.
Important: 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/java
folder. The issues will be fixed at a later stage. -
In the
resources
folder, edit theapplication.properties
file 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.xxx
toperfecto.capabilities.xxx
.For example:
perfecto.capabilities.securityToken
-
-
In the
src/main/resources/config
folder, edit thetestng.xml
file 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.xxx
toyyy.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.xxx
toyyy.capabilities.perfecto:xxx
.For example:
{'perfecto:useVirtualDevice':true}
-
-
In the
src/main/java
folder, 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
hideKeyboard
method is moved to a driver-level method.Move the
hideKeyboard
calls to the driver object.2
Command-level logs are not displayed during the execution.
Add log4j-related dependencies to their project POM file.
3
findElementByXXX
methods are removed from the Appium client.Convert them to respective
findElement(By.xxx(""))
calls.4
Unable to execute tests on virtual devices.
Prefix
useVirtualDevice
withperfecto:
. For example:perfecto:useVirtualDevice
5
The
MobileElement
class is removed from the Appium client.Replace
MobileElement
withWebElement
.6
The
TouchAction
class doe not have a constructor with Appium driver argument.Replace the instantiation of the
TouchAction
class with the respecting Android or iOS driver.7
A deprecation warning occurs for the
TouchAction
class.If you have implemented the
TouchAction
class in your scripts, consider migrating to theSequence
class.8
wait
functions are not accepting a long value.Instead of a long value, use the
Duration
class.9
Opera browser is showing a deprecation warning.
Remove support for the Opera browser.
10
The
setValue
method of theMobileElement
is not available for setting a value.Use the
sendKey
method of theWebElement
.11
MobileBy
is showing a deprecation warning.Use
AppiumBy
instead ofMobileBy
.12
Perfecto-related desired capabilities do not work.
Applicable only to mobile execution (of web, hybrid, or native apps): Use
perfecto.capabilities.xxx
to provide Perfecto-related capabilities. For example:perfecto.capabilities.securityToken
13
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.xml
file, 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.properties
file. If the existing capabilities are provided usingdriver.capabilities.xxx
, update them toperfecto.capabilities.xxx
.