Giter VIP home page Giter VIP logo

carina's Introduction

Zebrunner CE (Community Edition) is a Test Automation Management Tool for continuous testing and continuous deployment. It allows you to run various kinds of tests and gain successive levels of confidence in the code quality. It is built in accordance with Infrastructure as Code processes.

Zebrunner is integrated by default with carina-core open source TestNG framework and uses Jenkins as a CI Tool.

It is built on top of popular docker solutions, it includes Postgres database, Zebrunner Reporting, Jenkins Master/Slaves Nodes, Selenium Hub, Mobile Device Farm (MCloud), SonarQube etc.

All components are deployed under NGINX WebServer which can be configured in a fully secured environment

Zebrunner subcomponents all together can be used as an effective Test Automation infrastructure for test automation development, execution, management, etc.

Support Zebrunner CE

Enjoy using Zebrunner Reporting in your testing process! Feel free to support the development with a donation for the next improvements.

Zebrunner

Hardware requirements

Requirements
Operating System Ubuntu 16.04 - 21.10
Linux CentOS 7+
Amazon Linux 2
CPU 8+ Cores
Memory 32 Gb RAM
Free space SSD 128Gb+ of free space

Software requirements

Initial setup

Visit Zebrunner Guide for detailed installation and configuration instructions.

  1. Clone Zebrunner CE recursively and launch setup procedure:

    git clone --recurse-submodule https://github.com/zebrunner/community-edition.git && cd community-edition && ./zebrunner.sh setup
    

    Provide required details and start services.

  2. After the startup, the following components might be available:

    Use your host address instead of hostname!

Components URL
Zebrunner Reporting http://hostname
Jenkins http://hostname/jenkins
SonarQube http://hostname/sonarqube
Web Selenium Hub http://hostname/selenoid/wd/hub
Mobile Selenium Hub http://hostname/mcloud/wd/hub
Mobile SmartTest Farm http://hostname/stf

admin/changeit crendetials should be used for Reporting and Jenkins, admin/admin for SonarQube.

Documentation and free support

License

Code - Apache Software License v2.0

Documentation and Site - Creative Commons Attribution 4.0 International License

carina's People

Contributors

akamarouski avatar akupriyanov avatar askomar avatar avabishchevich avatar brutskov avatar cboyle81 avatar crazypear avatar denatallia avatar denispitsul2020 avatar dependabot[bot] avatar dimagrinevich avatar dmitry-minchuk avatar dmtgrinevich avatar dprymudrau avatar eldarian avatar hursevich avatar igorv22 avatar kolyakrasnik avatar lryzhiko avatar maksimsarychau avatar mikalaibiazruchka avatar nsidorevich avatar patotskiy avatar sergeizagriychuk avatar sergeybrenko avatar siarhei-babich avatar tamikana avatar tsvrko avatar vdelendik avatar ykhudaleyeu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

carina's Issues

strange pause 10-13 seconds after suite execution

Need investigate and found a reason of pause of 10-13 seconds after tests execution.
Pay attention to the timestamp between two first lines
2017-09-17 18:20:54 AbstractTest [main] [DEBUG]Short suite file name: debug.xml
2017-09-17 18:21:11 Messager [main] [INFO]INFO: '**************** Test execution summary ****************'.
2017-09-17 18:21:11 Messager [main] [INFO]RESULT #1: TEST [User profile test - addFollowers] PASS [log=file://L:\smule\smule-qa.\reports\qa\1505661650340/User_profile_test_-_addFollowers/test.log]

testrail updater doesn't work in 5.2.0.2 core

no valuable stack trace, just error message:
2017-10-27 20:32:08 DefaultTestRailUpdater [TestNG] [INFO]Updater Thread: 17
2017-10-27 20:32:08 TestNamingUtil [TestNG] [WARN]Unable to find registered test name for threadId: 17. stack is null!
2017-10-27 20:32:08 DefaultTestRailUpdater [TestNG] [ERROR]Unable to identify test name by threadId: 17

desired capabilities annotation for tests needed

Sometimes we should execute test only on specific Android versions. For example we know that there are known automation limitations on Android versions <= 5.0.2, and some porblems on 5.1.1 but for 5.1 and 6+ everything is ok. To increase performance we can mark in annotation execution priority, or device os versions range, etc.

For example:
@SkipAndroidVersions("<5.1", "5.1.1")
@ExecutingPreorityOfAndroidVersions("7.0","6.0.1","7.1.1","6.0","5.1.1")
And in such case CI should try to execute this test first on first available device with os version 7.0, than if no such device - on 6.0.1 and so on. And skip all devices with os from Skip List. Postpond for availability any device from White list.

Similar thing can be used for iOS.

Mobile: provide possibility in debug to capture pages screenshots and sources and push them as single archive to artifacts

page source + screenshots are needed for UI Automator Viewer to be able to identify controls, their placement, id, xpath etc.
So after executing test in debug mode I'd like to have functionality which:

  1. generate page screenshot and page source as only page is initialized
  2. screen+page source for each failure
  3. all pages better to keep inside artifacts_folder/mobile_pages or test folder/mobile_pages
  4. after test method finish archive this folder content and add as single artifact to test metho into zafira

support custom mobile capabilities logic on carina level: fullResetBeforeSuite

there is standard fullReset capability which guarantee that app is uninstalled completely and cache is cleaned. Using this capability we can successfully override custom install/uninstall logic using direct adb calls (already removed from carina).
But negative aspect in this capability is that based on driver_mode we always reinstall application on the same device.
To minimize copy operation I proposed to add new capability:
-fullResetBeforeSuite

if it is true MobileCapabilityMatcher:

  1. when we request device at first and capabilities matchers are satisfied then we convert this capability to standard
    fullReset=true
  2. remember device udid into local storage
  3. During next attempt to open session on the same device do not transfer fullReset=true.

As result we will clean app/cache only at once during test suite start.

How to execute tests without Selenium hub

Hello
This is not a ticket. Just a question, since i didn't find where to ask questions.
When we configure Carina we need specify <selenium_host> property. Is there a chance to run a test on local selenium standalone specified in path? Or we always need make up hub?

P.S. As an improvement would be nice if you guys could do group on https://gitter.im/ and redirect there everybody, who has question, instead of creating tickets for question.

Thank you

investigate possibility to move driverfactory functionality into separate module

it seems like for 3rd party integrations like browserstack/saucelabs/amazon etc better to have separate DriverFactory.
So in additions to DesktopFactory and MobileFactory we can register BrowserstackFactory with functionality for this custom client.
The root cause: each tool use their own capabilities toolset which differs from default selenium/appium.

For example browserstack need:
device=value
when standard is
deviceName=value

improve capabilities setter for boolean arguments

before adding capability value to the desired capabilities list do extra verification.
if it is equals true or fals as string we should convert it to boolean.

it is required to be able to use vnc and video capturing with selenoid. It can't correctly resolve
enableVideo=true if it is provided as a string

createDriver() method throws an java.lang.NullPointerException

Logs:

2017-11-22` 11:53:29] [AuthService.java] [23] [INFO] Check user status for registration: mfpauto61
[2017-11-22 11:53:29] [AuthService.java] [23] [INFO] identified free user: mfpauto61
[2017-11-22 11:54:59] [DriverPool.java] [23] [ERROR] Driver initialization 'default' FAILED for selenium: null! Retry 1 of 1 time - Unable to create new remote session. desired capabilities = Capabilities [{app=/opt/apk/myfitnesspal-develop-10593-qa-release.apk, noSign=true, newCommandTimeout=180, STF_ENABLED=true, autoGrantPermissions=true, platformName=Android, deviceName=ANY}], required capabilities = Capabilities [{}]
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'e8ac6c32c60b', ip: '172.18.0.43', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-98-generic', java.version: '1.8.0_131'
Driver info: driver.version: AndroidDriver
[2017-11-22 11:55:09] [BaseMobileTest.java] [23] [ERROR] Attempt #0 failed:org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{app=/opt/apk/myfitnesspal-develop-10593-qa-release.apk, noSign=true, newCommandTimeout=180, STF_ENABLED=true, autoGrantPermissions=true, platformName=Android, deviceName=ANY}], required capabilities = Capabilities [{}]
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'e8ac6c32c60b', ip: '172.18.0.43', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-98-generic', java.version: '1.8.0_131'
Driver info: driver.version: AndroidDriver
[2017-11-22 11:55:37] [Device.java] [23] [INFO] adb connect ua.qaprosoft.com:7752
[2017-11-22 11:55:38] [DevicePool.java] [23] [INFO] register device fot current thread id: 23; device: 'Samsung_Galaxy_S8_Plus'
[2017-11-22 11:55:39] [DriverPool.java] [23] [ERROR] Driver initialization 'default' FAILED for selenium: null! Retry 1 of 1 time - null
[2017-11-22 11:55:49] [TestNamingUtil.java] [23] [WARN] Unable to find registered test name for threadId: 23. stack is null!
[2017-11-22 11:55:49] [TestNamingUtil.java] [23] [WARN] Unable to find registered test name for threadId: 23. stack is null!
[2017-11-22 11:55:49] [Messager.java] [23] [INFO] 
======================================================================================================================================
INFO: TEST [C16500 Favorites Lists - createRecipe] STARTED at [23:55:49 2017-11-22]
[2017-11-22 11:55:49] [ZafiraConfigurator.java] [23] [WARN] Unable to detect current device for threadId: 23
[2017-11-22 11:55:49] [Messager.java] [23] [INFO] 
INFO: TEST [C16500 Favorites Lists - createRecipe] SKIPPED at [23:55:49 2017-11-22] - java.lang.NullPointerException

com.qaprosoft.carina.core.foundation.webdriver.DriverPool.createDriver(DriverPool.java:317)
com.qaprosoft.carina.core.foundation.webdriver.DriverPool.restartDriver(DriverPool.java:188)
com.qaprosoft.carina.core.foundation.webdriver.DriverPool.restartDriver(DriverPool.java:152)
com.myfitnesspal.android.autotest.test.BaseMobileTest.login(BaseMobileTest.java:107)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564)
org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213)
org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175)
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107)
org.testng.TestRunner.privateRun(TestRunner.java:767)
org.testng.TestRunner.run(TestRunner.java:617)
org.testng.SuiteRunner.runTest(SuiteRunner.java:348)
org.testng.SuiteRunner.access$000(SuiteRunner.java:38)
org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:382)
org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:748)

ExtendedElementLocator throws error in methods .isElementPresent() and .clickIfPresent() if element not found

Error has following stacktrace:

[ExtendedElementLocator.java] [1] [ERROR] Unable to find element: no such element: Unable to locate element: {"method":"id","selector":"agree"}
(Session info: chrome=64.0.3282.119)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.02 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.2.0', revision: '8c03df6', time: '2017-03-02 09:34:51 -0800'
System info: host: 'HOST-NAME', ip: 'XXX.XXX.XXX.XXX', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_91'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f), userDataDir=C:\Users\UserName\AppData\Local\Temp\scoped_dir12272_29763}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=64.0.3282.119, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}]
Session ID: dc4cc63090d56769e1228ae1bf7b505c
*** Element info: {Using=id, value=agree}
Command duration or timeout: 0 milliseconds

Test names are displayed incorrectly

Test names sometimes contain 'null'. Carina - 5.2.2.256-SNAPSHOT
screen shot 2017-12-27 at 3 11 31 pm

https://ua.qaprosoft.com/jenkins/job/Automation/view/MMF/job/MMF-iOS-Minimal-Acceptance/202/consoleFull

12:04:45 2017-12-27 04:04:50 ZafiraConfigurator [TestNG] [ERROR] [iPhone_6_1] TestRail API returned HTTP 500("Invalid characters in URI: [/api/v2/get_case/30739,1780576]")
12:04:45 com.qaprosoft.carina.core.foundation.report.testrail.core.APIException: TestRail API returned HTTP 500("Invalid characters in URI: [/api/v2/get_case/30739,1780576]")
12:04:45 at com.qaprosoft.carina.core.foundation.report.testrail.core.APIClient.sendRequest(APIClient.java:245)
12:04:45 at com.qaprosoft.carina.core.foundation.report.testrail.core.APIClient.sendGet(APIClient.java:89)
12:04:45 at com.uashop.autotest.refactored.util.testng.TestRailZafiraConfigurator.getTestRailTestCaseName(TestRailZafiraConfigurator.java:53)
12:04:45 at com.uashop.autotest.refactored.util.testng.TestRailZafiraConfigurator.getTestName(TestRailZafiraConfigurator.java:27)
12:04:45 at com.qaprosoft.zafira.listener.ZafiraListener.run(ZafiraListener.java:494)
12:04:45 at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
12:04:45 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
12:04:45 at java.lang.reflect.Method.invoke(Method.java:497)
12:04:45 at org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:212)
12:04:45 at org.testng.internal.Invoker.invokeMethod(Invoker.java:707)
12:04:45 at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
12:04:45 at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
12:04:45 at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
12:04:45 at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
12:04:45 at org.testng.TestRunner.privateRun(TestRunner.java:767)
12:04:45 at org.testng.TestRunner.run(TestRunner.java:617)
12:04:45 at org.testng.SuiteRunner.runTest(SuiteRunner.java:348)
12:04:45 at org.testng.SuiteRunner.access$000(SuiteRunner.java:38)
12:04:45 at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:382)
12:04:45 at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
12:04:45 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
12:04:45 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
12:04:45 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
12:04:45 at java.lang.Thread.run(Thread.java:745)

qps-hub lost connection to appium and delay tests execution

From time-to-time selenium hub can't forward command to node (selenium or appium) and wait for 600+ seconds. Issue can be reproduced on any device. As result we "freeze" all the testing a lot.
Find a way to determine lost node without waiting 600+ seconds.

Create new CommonUtils and push pause methods into it

Let's create in carina-commons or carina-utils file where we can collect some very-very high level static util methods.
And as 1st one move pause(long) and pause(double) into it from all ocurrences we have now

How detect which version is last stable

Hello.
I didn't know how to ask question except creating ticket...maybe it is a stupid Q, but how i identify what last version STABLE version i can pull from Nexus?

Take screenshots on Assertion failures and getting Exceptions

It would be useful if we can get actual screenshots exactly on failing step, not only on ExtendedWebElement and TestListener events.

For example: if I have try/finally logic with some assertions in try{...} block and some actions in finally{...} block, and one assertion fails in try{...} - I'll get screenshot on the last page of finally{...} block, which is not related to the failing reason. The same situation with exceptions.

Swipe from MobileUtils doesn't work.

Swipe from MobileUtils doesn't work. Example of logs:

sun.reflect.GeneratedConstructorAccessor33.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215) org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167) org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40) org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:82) org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:45) org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164) io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89) org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646) io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) io.appium.java_client.PerformsTouchActions.performTouchAction(PerformsTouchActions.java:41) io.appium.java_client.TouchAction.perform(TouchAction.java:325) com.qaprosoft.carina.core.foundation.utils.mobile.MobileUtils.swipe(MobileUtils.java:447) com.qaprosoft.carina.core.foundation.utils.mobile.MobileUtils.swipeUntilElementPresence(MobileUtils.java:409) com.qaprosoft.carina.core.foundation.utils.mobile.MobileUtils.swipeUntilElementPresence(MobileUtils.java:380) com.myfitnesspal.refactored.gui.mobile.android.phone.diary.DiaryPage.clickNutritionBottomButton(DiaryPage.java:213) com.myfitnesspal.refactored.diary.DiaryTabTest.otherScreensTest(DiaryTabTest.java:34) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) org.testng.internal.MethodInvocationHelper$1.runTestMethod(MethodInvocationHelper.java:200) com.qaprosoft.zafira.listener.ZafiraListener.run(ZafiraListener.java:502) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:212) org.testng.internal.Invoker.invokeMethod(Invoker.java:707) org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) org.testng.TestRunner.privateRun(TestRunner.java:767) org.testng.TestRunner.run(TestRunner.java:617) org.testng.SuiteRunner.runTest(SuiteRunner.java:348) org.testng.SuiteRunner.access$000(SuiteRunner.java:38) org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:382) org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64) java.util.concurrent.FutureTask.run(FutureTask.java:266) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) java.lang.Thread.run(Thread.java:748)

Remove XmlNamingStrategy class at all

Refactor core and remove TestNamingUtil and XMLNameStrategy classes.
Name of the current test should be "calculated" in single place. Let's analyze if it is possible to do in ReportContext class where we save file for logging.
private static final ThreadLocal testDirectory = new ThreadLocal ();

nginx-nexus proxy has a problem

improve carina nexus nginx config to fix:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project carina-core: Failed to deploy artifacts: Could not transfer artifact com.qaprosoft:carina-core:jar:5.2.1.203-20171210.222021-1 from/to deploymentRepo (http://ci.qaprosoft.com/nexus/content/repositories/snapshots/): Failed to transfer file: http://ci.qaprosoft.com/nexus/content/repositories/snapshots/com/qaprosoft/carina-core/5.2.1.203-SNAPSHOT/carina-core-5.2.1.203-20171210.222021-1.jar. Return code is: 413, ReasonPhrase: Request Entity Too Large. -> [Help 1]

Drag and drop for HTML5

Current drag and drop method doesn't work for HTML5 web apps.

Solution that I found:
WebElement exercise = getExerciseItem(name).getElement(); // what to drag
WebElement dayBlock = getDayBlock(day).getElement(); // where drop
Actions act = new Actions(getDriver());
Action drag = act.clickAndHold(exercise).build();
drag.perform();
Point coordinates = dayBlock.getLocation();
Robot robot = new Robot();
robot.mouseMove(coordinates.getX()+20,coordinates.getY()-20);
pause(5000);

Exception while using incorrect description format for Jira

If we use description format in tag Test like (description = "JIRA#") we are getting exception which caused test run terminating on Jenkins.

From the logs:
INFO: TEST [Test] FAILED at [21:35:40 2017-11-14] - 1

com.qaprosoft.carina.core.foundation.jira.Jira.getTickets(Jira.java:133)
com.qaprosoft.carina.core.foundation.listeners.AbstractTestListener.createTestResult(AbstractTestListener.java:603)
com.qaprosoft.carina.core.foundation.listeners.AbstractTestListener.passItem(AbstractTestListener.java:83)
com.qaprosoft.carina.core.foundation.listeners.AbstractTestListener.onTestSuccess(AbstractTestListener.java:342)
org.testng.internal.Invoker.runTestListeners(Invoker.java:1899)
org.testng.internal.Invoker.runTestListeners(Invoker.java:1879)
org.testng.internal.Invoker.invokeMethod(Invoker.java:778)
org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.