Skip to content

Migration Guide (7.4.31 -> 1.0.0)

Migration guide from 7.4.31 to 1.0.0.

Selenium/Appium versions updated

The Selenium version has been updated from 3.141.59 to 4.4.0. Check out the official migration guide.

The Appium version has been updated from 7.6.0 to 8.2.0. Check out the official migration guide.

Renamed packages

com.qaprosoft.carina.core.foundation.utils.ownership.* -> com.zebrunner.carina.core.registrar.ownership.*
com.qaprosoft.carina.core.foundation.utils.tag.* -> com.zebrunner.carina.core.registrar.tag.*
com.qaprosoft.carina.core.foundation.utils.Messager -> com.zebrunner.carina.utils.messager.Messager
com.qaprosoft.carina.core.foundation.utils.ZebrunnerNameResolver -> com.zebrunner.carina.core.testng.ZebrunnerNameResolver
com.qaprosoft.carina.core.foundation.utils.ParameterGenerator -> com.zebrunner.carina.utils.ParameterGenerator
com.qaprosoft.carina.core.foundation.utils.* -> com.zebrunner.carina.utils.*
com.qaprosoft.carina.core.foundation.report.* -> com.zebrunner.carina.utils.report.*
com.qaprosoft.carina.core.foundation.retry.* -> com.zebrunner.carina.utils.retry.*
com.qaprosoft.carina.core.foundation.commons.SpecialKeywords -> com.zebrunner.carina.utils.commons.SpecialKeywords
com.qaprosoft.carina.core.foundation.listeners.TestnamingService -> com.zebrunner.carina.core.testng.TestNamingService
com.qaprosoft.carina.core.foundation.exception.* -> com.zebrunner.carina.utils.exception.*
com.qaprosoft.carina.core.foundation.performance.* -> com.zebrunner.carina.utils.performance.*
com.qaprosoft.carina.browserupproxy.* -> com.zebrunner.carina.proxy.browserup.*
com.qaprosoft.carina.proxy.SystemProxy -> com.zebrunner.carina.proxy.SystemProxy
com.qaprosoft.amazon.* -> com.zebrunner.carina.amazon.*
com.qaprosoft.azure.* -> com.zebrunner.carina.azure.*
com.qaprosoft.appcenter.* -> com.zebrunner.carina.appcenter.*
com.qaprosoft.apitools.* -> com.zebrunner.carina.api.apitools.*
com.qaprosoft.carina.core.foundation.api.* -> com.zebrunner.carina.api.*
com.qaprosoft.carina.core.foundation.webdriver.* -> com.zebrunner.carina.webdriver.*
com.qaprosoft.carina.core.gui.* -> com.zebrunner.carina.webdriver.gui.*
com.qaprosoft.carina.core.foundation.dataprovider.parser.XLSCache -> com.zebrunner.carina.utils.parser.xls.XLSCache
com.qaprosoft.carina.core.foundation.dataprovider.parser.XLSChildTable -> com.zebrunner.carina.utils.parser.xls.XLSChildTable
com.qaprosoft.carina.core.foundation.dataprovider.parser.XLSParser -> com.zebrunner.carina.utils.parser.xls.XLSParser
com.qaprosoft.carina.core.foundation.dataprovider.parser.XLSTable -> com.zebrunner.carina.utils.parser.xls.XLSTable
com.qaprosoft.carina.core.foundation.dataprovider.* -> com.zebrunner.carina.dataprovider.*
com.qaprosoft.carina.core.foundation.* -> com.zebrunner.carina.core.*

Separated optional dependencies

These dependencies can be added in addition to the carina-core dependency.

Redesigned the encryption process

  • The support of crypto key as a file, as well as the actual crypto_key_path parameter, have been removed.
  • The crypto_key_value parameter is added to specify the crypto key (specified in configuration).
  • The presence of a crypto key is optional, as long as there is no encrypted data.

Since a file was used as a key before, you can use the following code to get the key from it and writing it to the crypto_key_value parameter (for example, in beforeSuite):

R.CONFIG.put("crypto_key_value", Files.readString(Path.of(R.CONFIG.get("crypto_key_path")), StandardCharsets.UTF_8));

However, this approach is not recommended. It is recommended to put crypto_key_value in environment variables.

For more info check documentation.

Changed the process of creating capabilities for a session

In connection with the update of Selenium / Appium, the rules for specifying capabilities have changed. Check the documentation.

Screenshots

Screenshot rules redesigned, check the documentation.

Driver event listeners

In connection with the update of Selenium, the use of a org.openqa.selenium.support.events.WebDriverEventListener event listener has been removed and accordingly removed the wrapper based on the org.openqa.selenium.support.events.EventFiringWebDriver class. Instead, use an event listener based on the org.openqa.selenium.support.events.WebDriverListener interface (as an example, take a look at Carina Framework DriverListener event listener).

Important: it is strongly not recommended to use methods of drivers by casting to the driver implementations, drivers implement interfaces with appropriate methods, up to which you need to cast the driver to gain access to the method. For example, if you want to call the method executeScript of the org.openqa.selenium.remote.RemoteWebDriver class, you can execute the following code:

((JavascriptExecutor)getDriver()).executeScript(...);

However, there are methods that cannot be accessed using the interface. In such situation you can use the castDriver method of the com.zebrunner.carina.webdriver.listener.DriverListener class. However, if you are casting to AndroidDriver for example, you must be sure it's AndroidDriver.

Project side dependency requirements

  • The net.bytebuddy.byte-buddy version should be 1.12.10.
  • The com.zebrunner.agent-core version should be 1.9.3.
  • When specifying carina-... dependencies, it is desirable that carina-core be the first among them.
  • The explicit com.google.guava.guava dependency must be removed from the project, and guava must be pulled from carina-webdriver (you can check it using mvn dependency:tree) and should match version 31.1-jre.

Proxy

Changed BrowserMob proxy to BrowserUp proxy, added different proxy modes from Selenium. For more info check the documentation.

Element search process

  • Added support for annotations FindBys, FindAll, AndroidFindBy and so on. However, using features such as CaseInsensitiveXpath annotation, L10N in locator, format method and so on is currently not supported with FindBys, FindAny, FindAll and Appium ..Bys, ..All, ...AllSet, ..ChainSet annotations.
  • The format method of the ExtendedWebElement class now works with localization and the CaseInsensitiveXpath annotation.