Carina automation framework (TestNG): Web, Mobile, API, DB etc testing...
APACHE-2.0 License
Bot releases are hidden (Show)
Published by vdelendik over 5 years ago
N/A
N/A
Published by vdelendik over 5 years ago
Published by vdelendik over 5 years ago
#618 Update appium java client to the latest version (7.0.0)
#622 Create Zoom in/out in MobileUtils/IMobileUtils
#534, #563 Improved BrowserMob proxy coverage by unit tests including example for secure traffic sniffer.
Take a look for example.
Also disabled proxy_set_to_system=false property by default. It should be enabled only if you have to use your internal corporate proxy to have access to internet.
#436, #326 Registering device information for unsuccessful driver start. Available only in scope of https://www.qps-infra.io and https://mobiletesting.farm
Note: Appium should be patched to incorporate custom details into the exception (system-calls.js)
Published by maksimsarychau almost 6 years ago
CustomTypePageFactory.initPage(….);
// it should be replaced in most cases by
initPage(…);
#608 update copyright info using 2019
#612 Test execution by filter rules.
Annotations for future filtering can be set in tests in following way:
@TestPriority(Priority.P1)
@MethodOwner(owner = "owner")
@TestTag(name = "feature", value = "reg")
And setup in config.properties
test_run_rules=PRIORITY=>P1&&P2;;OWNER=>owner;;TAGS=>tag1=temp&&feature=reg
rules logic: test_run_rules={RULE_NAME_ENUM}=>{RULE_VALUE1}&&{RULE_VALUE2};;...
Listener should be added in pom.xml or in required suite
<listener class-name="com.qaprosoft.carina.core.foundation.listeners.FilterTestsListener" />
Published by vdelendik almost 6 years ago
DevicePool.getDevice();
// it should be replaced in most cases by
getDevice();
// for the use-case when you need it in static way use
IDriverPool.getDefaultDevice();
// Also we have new methods to get device by driver name!
getDevice("default"); // return device assigned to "default" driver
getDevice("custom"); //return device addigned to "custom" driver.
// if no driver discovered in the pool with provided name then nullDevice will be returned
// Execute as only you would like to disable automatic drivers quit
CarinaListener.disableDriversCleanup();
Published by vdelendik almost 6 years ago
Published by vdelendik almost 6 years ago
Published by vdelendik almost 6 years ago
#570 Updated iDriverPool returning back automatic driver quit onto AfterMethod phase as it was in 5.3.x core. New approach was rejected due to the discovered regressions
#567 Added new browsermob_host parameter to override automatically detected IP address for embedded proxy. Updated manual accordingly http://qaprosoft.github.io/carina/proxy
#568 Returned Chrome browser maximize to the default method removing old workaround with hardcoded dimension
576 Removed sensitive information from logs during onType and onAttachFile operations
#574 Removed invalid log4j appender and hide noisy log messages on startup
Adjust custom_capabilities usage allowing not only define it globally but generate for each driver session
// start new driver with generated capabilities based on capabilities inside
// Samsung_Galaxy_S8.properties property file
WebDriver drv = getDriver("name", new CapabilitiesLoader().getCapabilities("browserstack/android/Samsung_Galaxy_S8.properties"))
Removed obsolete extra_capabilities configuration parameter
Declared Spring Plugins repository in pom.xml to download from scratch monte-repack (javax.media.jai) dependency
Published by vdelendik almost 6 years ago
Starting from 6.0.x carina-core became a listener with unified CarinaListener class:
Migrated to the latest 6.14.3 TestNG version with fully supported retry execution feature
Updated build numbering structure according all qaprosoft projects:
Finalized integration rules for Zafira integration:
Refactored DriverPool class and deliver it as functional IDriverPool interface
Example:
@Test()
public void test1() {
getDriver(); //start new driver
...
}
@Test(dependsOnMethods="test1")
public void test2() {
getDriver(); //get existing driver started in test1 as test2 depends on test1
...
}
@Test()
public void test3() {
getDriver(); //start new driver as no dependencies detected
...
}
Moved unit tests into the valid modules to be able to track coverage results in Sonar: https://ci.qaprosoft.com/sonarqube/dashboard/index?did=2
Move some noisy log messages onto the DEBUG level
added possibility to redefine log level for explicit sub-modules/classes
core_log_level=DEBUG
core_log_packages=IDriverPool,ZafiraConfigurator
added support for Opera browser. For now both variants are ok:
Removed all TestRail updaters from Carina and all required dto classes. Integration with 3rd party testcase management tools will be allowed through the https://github.com/qaprosoft/zafira only!
Removed SMTP integration settings from Carina. All notification methods will be concentrated in Zafira Reporting Tool. Carina could only run and generate local report in ./reports/qa folder.
Removed completely JUnit libraries from classpath to avoid invalid asserts import inside the test classes on projects level
Removed cucumber integration as not used feature
Removed all deprecated methods in DriverHelper
Removed deprecated constructors in ExtendedWebElement class
TestNG 6.8.8->6.14.3
zafira-client 3.3.37->3.3.68-SNAPSHOT (due to the changed TestNG)
selenium-server 3.14.0->3.141.59
selenium-java 3.14.0->3.141.59
due to the security alerts bumped up:
jackson-databind.version 2.8.9->2.8.11.1
org.apache.pdfbox 1.8.7->1.8.16
org.testng 6.8.8->6.14.3
org.seleniumhq.selenium 3.12.0->3.14.0
Published by vdelendik almost 6 years ago
Published by vdelendik almost 6 years ago
Published by vdelendik almost 6 years ago
core_log_level=DEBUG
core_log_packages=IDriverPool,ZafiraConfigurator
zafira-client 3.3.37->3.3.68-SNAPSHOT (based on TestNG 6.14.3)
6.8.8->6.14.3
due to the security alerts bumped up:
jackson-databind.version 2.8.9->2.8.11.1
org.apache.pdfbox 1.8.7->1.8.16
org.testng 6.8.8->6.14.3
org.seleniumhq.selenium 3.12.0->3.14.0
Published by vdelendik almost 6 years ago
N/A
Published by vdelendik about 6 years ago
Published by vdelendik about 6 years ago
Published by vdelendik over 6 years ago
Published new article for API and Mobile automation approaches:
http://qaprosoft.github.io/carina/automation/api/
http://qaprosoft.github.io/carina/automation/mobile/
Improved actual browser_version identification and it's registration in Zafira Reporting Tool
Introduced new DisableCacheLookup annotation to ExtendedWebElement to disable automatic caching and use object as locator proxy only
Introduced @CaseInsensitiveXPath annotation (mostly for Android where different frameworks can recognize locator in different way)
Split click operation for separated Web and Mobile actions to minimize negative side-effects
MobileUtils - migrated tap etc operations onto the TouchOptions etc
Note: if in your code thera direct references onto the TouchActions->tap operations you should update them as well because in 6.0.0 java appium client deprecated methods were removed.
Example: https://github.com/qaprosoft/carina/commit/859d1f0d284462733e2c2ddf005bad3f48b41711
Introduced AndroidUtils.pressKeyboardKey(...) method
Enabled logcat extractor for Android devices. Copying system device logs for each tests to capture crashes much easier
Finalized with UI Dump generation utility (generating screenshot and metadata information on Android devices to be able to analyze xpath values in offline mode using uiautomator viewer)
Improved integration with qps-pipeline to support demo screenshots publishing to CI for aborted testruns as well
Published by vdelendik over 6 years ago
Detailed documentation prepared and published:
http://qaprosoft.github.io/carina/
Enabled elements caching for discovered elements by default.
Minimized selenium/appium calls
Details: https://github.com/qaprosoft/carina/pull/286
Major Removed 16 unused dependencies from the core.
It could affect test code if such dependencies were imported transitively. Please review below pull request and add explicit dependency on project layer in case of compilation failure or NoSuchMethod exception during runtime
Details: https://github.com/qaprosoft/carina/pull/285/files
Migrated to fluent waits for the operating with ExtendedWebElement(s):
Example of the complicated wait until conditions combined into the single method which wait until element is present with exact text on page object layer:
waitUntil(ExpectedConditions.and(ExpectedConditions.presenceOfAllElementsLocatedBy(element.getBy()), ExpectedConditions.textToBe(element.getBy(), myText)), timeout)
Enabled default core performance metrics trackers (feature is available only in integration with Zafira Reporting Tool: https://github.com/qaprosoft/zafira):
ExtendedWebElement - added sendKeys method:
public void sendKeys(Keys keys)
AndroidUtils - added scroll till text using native functionality
public static ExtendedWebElement scroll(String scrollToElement, ExtendedWebElement container)
HockeyApp Tweaks to allow for pulling of ESPN based iOS and Android builds.
Descriptive Test Names
Published by vdelendik over 6 years ago
Setup integration with maven central for releases distribution:
https://repo.maven.apache.org/maven2/com/qaprosoft/carina-core/
core engine refactored using multi-maven module structure. Below there are modules which are bundled with carina-core:
|-- carina-commons
|-- carina-api
|-- carina-dataprovider
|-- carina-proxy
|-- carina-utils
|-- carina-reporting
|-- carina-crypto
|-- carina-webdriver
|-- carina-aws-s3
|-- carina-hockeyapp
|-- carina-core
Extra modules
|-- archetype
|-- carina-grid
|-- carina-jenkins
Redesigned capabilities manipulation for web/mobile tests
Migrated onto the cross independent mobile appium java-client 5.0.4 using Touch Actions
Integrated loggers listener with rabbitmq for run-time logs analysis
Introduced new screen shooting functionality based on driver listeners and extra rules.
Delivered fixes to WebDriver factories to restore support with 3rd party clouds like BrowserStack, Sauce Labs etc.
Published by vdelendik about 7 years ago