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

Note:

All breaking changes introduced by Selenium 4 and Appium 2.0 are applicable. Make sure to implement appropriate fixes or changes at the project level.

  • Platform-specific methods (such as hideKeyboard) has moved from the Appium Driver to a Platform Specific Driver.

  • The MobileElement class is deprecated and removed. Use WebElement class instead.

  • The MobileElement class had a setValue method. Because the MobileElement class is now deprecated, use the sendKey method of the WebElement class instead.

  • The findElementByXXX methods are deprecated and removed. Use the findElement(By.xxx(“”)) methods instead.

  • The MobileBy class is deprecated and removed. Use the AppiumBy class instead.

  • Timeouts used to be specified using long values. Now, the Wait methods with parameter long are deprecated and removed. Use Duration.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. Use Driver.getCapabilities().getPlatformName() instead.

  • The io.appium.java_client.TouchAction class is deprecated. Use the Sequence class instead.

  • Opera browser support is deprecated. This is not relevant for Perfecto.

Upgrade steps

  1. 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 the pom.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>
  2. Perform a Maven install/uninstall of the project.

    Note:

    Due to breaking changes introduced at the level of the Appium/Selenium API, you will observe errors in the Java files located in the src/main/java folder. The issues will be fixed at a later stage.

  3. In the resources folder, edit the application.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 to perfecto.capabilities.xxx.

      For example: perfecto.capabilities.securityToken

    • Set the driver.name property value to perfectoRemoteDriver.

  4. In the src/main/resources/config folder, edit the testng.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 to yyy.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 to yyy.capabilities.perfecto:xxx.

      For example: {'perfecto:useVirtualDevice':true}

    • Set the driver.name property value to perfectoRemoteDriver.

  5. In the src/main/java folder, fix any code-related issues. Use the following table for reference. This table lists the known breaking changes.

    Note:

    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 with perfecto:. For example: perfecto:useVirtualDevice

    5

    The MobileElement class is removed from the Appium client.

    Replace MobileElement with WebElement.

    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 the Sequence 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 the MobileElement is not available for setting a value.

    Use the sendKey method of the WebElement.

    11

    MobileBy is showing a deprecation warning.

    Use AppiumBy instead of MobileBy.

    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 to driver.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 using driver.capabilities.xxx, update them to perfecto.capabilities.xxx.