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.
- carina-dataprovider see (maven-central) - to use csv/xls data providers.
Test classes that use/will use such dataproviders should implement
com.zebrunner.carina.dataprovider.IAbstractDataProvider
interface. For more info check documentation. Also when adding carina-dataprovider dependency exclude testng dependency as the only source of testng should be carina-core. - carina-api see (maven-central) - for API testing.
- carina-appcenter see (maven-central) - if the application is stored using AppCenter.
- carina-azure see (maven-central) - if the application/files are stored using Azure.
- carina-aws-s3 see (maven-central) - if the application/files are stored using Amazon S3.
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 be1.12.10
. - The
com.zebrunner.agent-core
version should be1.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 version31.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 theExtendedWebElement
class now works with localization and the CaseInsensitiveXpath annotation.