GithubHelp home page GithubHelp logo

perfecto-quantum / quantum-starter-kit Goto Github PK

View Code? Open in Web Editor NEW
56.0 56.0 80.0 16.8 MB

Get started with Quantum! Clone or download this repository to start, contains examples of tests and step definitions.

License: MIT License

Java 60.79% Gherkin 17.76% JavaScript 21.45%

quantum-starter-kit's People

Contributors

cjayswal avatar dependabot[bot] avatar dereke1 avatar doritmar avatar dushyantans avatar genesis-thomas avatar genesisthomas avatar hadasshani avatar igordperfecto avatar ksitwala-perfecto avatar kulin24 avatar perforce-prasant avatar tal-abraham avatar uzieilon avatar westondunn avatar yaronwhite 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

Watchers

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

quantum-starter-kit's Issues

Priority configuration in Testng.xml

I am using Quantum Framework. I created annotation for scenarios and feature files. However i need to give priority in testng.xml file to my annotations while running as testng suite.

But now it is running as whichever annotation reads first it is executing in the order

Please help me I need to resolve at the earliest.

Documentation Link Not Found

I am not sure if this can be considered an issue but there is a little update required in the Wiki page.

There is a link given to download the sample of quantum in Phase 1 : Running Sample as is. This link is resulting into an error page with a "Page not found error."

This can be corrected so that it would be easier for beginners to start with.

This is the page where this link is displayed: https://github.com/Project-Quantum/Quantum-Starter-Kit/wiki/Getting-Started

Link which results in the error: https://github.com/PerfectoCode/Quantum

Thank You

switchToDriver not working properly

I have below switchToDriver method and when I use in more below method clickConversationFromSender it won't switch to receiverDevice.
It does the switch on first call on senderDevice but after that it won't switch to receiverDevice because the lstConverstions are retrieved from senderDevice instead of receiverDevice. This was working in previous 10.10 version where it was last tested.

public static void switchToDriver(String driverName) {
TestBaseProvider.instance().get().setDriver(driverName + "RemoteDriver");
String envResources = ConfigurationManager.getBundle().getString(driverName + ".env.resources");
ConfigurationManager.getBundle().setProperty("env.resources",envResources);
}

public boolean clickConversationFromSender(String senderDevice, String receiverDevice){

DeviceUtilsExtended.switchToDriver(senderDevice);
String senderPhoneNo=DeviceUtilsExtended.getDevicePhoneNumber();

DeviceUtilsExtended.switchToDriver(receiverDevice);
String receiverPhoneNo=DeviceUtilsExtended.getDevicePhoneNumber();

List lstConverstions = strConversationName.findElements("//android.widget.TextView[contains(@resource-id,'id/conversation_name')]");

...........................................................................................
}

creating and automating a run for 300 testcase

I have a project where I have to automate 300 testcases using this framework, any estimates on how long it will take ?? let us say the average testcase will have 15 steps in it's scenario

thanks in advance

Create a Gettig Started Video

We need a getting started video, where user will see the following scenario:

  • Download repo zip file
  • Open it in intelliJ
  • Configure capabilities (credentials, run type, etc)
  • Add items to object repository
  • Create a sample test using BDD and the framework predefined steps
  • Run the test and view results in Reportium

Audio testing with Quantum

As a tester I would like to start/stop record audio from a device, get a link to it and optionally send the file to speech-to-text engine so I can validate the recorded audio.

not able to read data from Excel in scripts.

Hi ,

I am facing one issue while reading data from excel in scripts , the data is not in fields and getting below error .

below is the details:-
feature file:-
Scenario Outline: login
Given Open chrome and start application
When user enter valid ""
Then user enter ""
And I scroll down
And User should click on NOT NOW button
Examples: {'datafile' : 'src/main/resources/data/logindata.xlsx'}

step definition:-
@when("^user enter valid "([^\"]*)"$")
public void user_enter_valid(String Username) throws Throwable {
QAFExtendedWebElement userId = new QAFExtendedWebElement("Ecare.inputbox.userId");
userId.clear();
userId.sendKeys(Username);

error getting in console:-

include groups [@login]
exclude groups: [] Scanarios location: src/main/resources/scenarios
DATAFILE=src/main/resources/data/logindata.xlsx
DATAFILE=src/main/resources/data/logindata.xlsx
{DATAFILE=src/main/resources/data/logindata.xlsx}
{DATAFILE=src/main/resources/data/logindata.xlsx}
TestNG: loading csv data file: src/main/resources/data/logindata.xlsx
TestNG: loading csv data file: src/main/resources/data/logindata.xlsx
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[4] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[4] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[5] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[5] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo
TestNG: Missing column header for column[3] in data file: src/main/resources/data/logindata.xlsx. It will be included by lineNo

Some of the wiki links are not clickable

The below wiki links are not clickable in HOME page [https://github.com/Project-Quantum/Quantum-Starter-Kit/wiki]:
[Getting Started](Getting Started)
[Project Layout](Project Layout)
Configuration and setup

[Application Properties](The application.properties file)
[Connection Properties](The connection.properties file)
[TestNG Configuration](Quantum TestNG File)
[Object Repository](Object Repository)
[Perfecto predefined steps](Perfecto predefined steps)
[Creating new steps](Creating customized steps)
[Utility methods](Java Utility classes)
Java samples

how to get current sessionURL to create new IOSdriver

Hi folks,

I am currently using the command QAFExtendedWebdriver mydriver = getQAFDriver();
It will stores current driver in "mydriver" object so i can call its available methods.

Now i need to create a new driver object in the same current session itself to access IOSDriver specific methods.
IOSDriver<WebElement> driver= new IOSDriver<WebElement> (url, capabilities);

How to get current session url, capabilities to pass as parameters.

I googled a lot. But its not working out for me. Any inputs will help me a lot

Security Sample

Need to add several samples that demonstrate automation of several security vulnerabilities check.
Need to define first what is this list.

Multiple definitions found for `I start application by name `

When I grab the starter project kit from git, I am getting an error that I have multiple definitions found for I start application by name. I haven't added any steps. This is just the base import from maven and the sample example for starting calculator.

Create Samples

Samples - Have 4 different samples :

  • Simple web example
  • Web example with data driven
  • Simple native example
  • Simple native example with data driven Native examples should work both on android and ios.

Each sample name should be self explanatory, so user will understand what does the sample shows by its name

Scenario Outline not working and throwing error stating "required (...)+ loop did not match anything at input "

I am working with Quantum starter framework, Here I have to get data from JSON file so I used Scenario Outline, but still there are some issues in my gherkin file. Throwing error stating "required (...)+ loop did not match anything at input ''" near example keyword.

iachat.feature

@IA-Chat
Feature: Basic IA chat POC

@MessageBlock_TC1
Scenario Outline: To check whether a simple message block plays
Given I ran the bat file for application "71 06b34ed878322d128bdcefaa44ca762e27e95838a79a4ae0141ceefb76bdbcf2"
Then verify whether expected message "" matches the actual message

Examples: {"dataFile":"src/main/resources/data/MessageBlock.json"}
MessageBlock.json

[
{ "expectedMessage" : "Welcome , test case 1"},
{ "expectedMessage" : "1 2 3 4 5"},
{ "expectedMessage" : "The value is 10. ShockAbsorber test with variable"},
{ "expectedMessage" : "Bonjour. Merci Beacoup Monsieur"},
{ "expectedMessage" : "Thank you for calling . Dialed number is not empty"},
{ "expectedMessage" : "Thank you for calling . The CLI is between 7000 and 7010"},
{ "expectedMessage" : "Thank you for calling . This is a test call"},
{ "expectedMessage" : "Thank you for calling . After 2020."},
{ "expectedMessage" : "Thank you for calling . The current day is not sunday."}
]

Missing documentation \ examples of the different capabilities

We need to add a section indicating which capabilities can be added and how.
Might be done in a separate section and in more examples in the testng files, maybe commented out with short explanation beside each line.
Currently new users don't know which capabilities they can add or how.

WindTunnel working with Quantum

We for sure need one example of Quantum script working with Wind Tunnel. This is particularly important as majority of APAC customers have moved or are moving to Quantum.

how to re-try test case use this framework

hi all,
i want to re-try test case whitch run failed first time ,But i don't want to excute all case again,just run failed cases again . what should i do ? thanks you very much.

WFA-401-0000 - Not authorized Issue

While using latest quantum framework version, I am getting following error:

com.qmetry.qaf.automation.core.AutomationError: Unable to Create Driver Instance com.perfecto.wfa.server.errors.ErrorCodeException: WFA-401-0000 - Not authorized Details: 'Failed to authenticate session.'

I have tried following solution -> https://developers.perfectomobile.com/display/TT/Troubleshooting+%28WEB%29+-+WFA-401-0000+-+Not+authorized

but nothing worked out so far.

I am n IntelliJ 2019.3.2
Java 1.8
Maven 3.6

I am using organization proxies for connection. Everything was working in previous version, am I missing anything?

QAF Cucumber plugin link doesn't work

In the dependencies section of the documentation, QAF Cucumber plugin link is given. We are not able to install this plugin using this link.

As per the QAF developers, this plugin can be downloaded using this link in install new software option in eclipse:
https://qmetry.github.io/qaf/editor/bdd/eclipse/

It will be helpful if this link is given as an or option to download this plugin in case the origin link doesn't work for some users.

Thank You.

Reason: handset server: server is busy processing another request [/appiumModeStop]

When we are trying to run the different scenarios in different devices at the same time we are getting this issues. if in one device the execution completes, then in other device the execution in other device is aborting,
We attached the log files as well,

Aug 07, 2018 1:32:48 PM org.openqa.selenium.support.ui.ExpectedConditions findElement
WARNING: WebDriverException thrown by findElement(By.xpath: //[@id='mainShell-header-hdr-begin']//[@Class='sapUiUfdShellHeadContainer']//span)
org.openqa.selenium.WebDriverException: Failed to execute command webpage.element find: findElements command failed. Reason: handset server: server is busy processing another request [/appiumModeStop]
Command duration or timeout: 0 milliseconds
Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T15:28:36.4Z'
System info: host: 'INLN50940147A', ip: '10.52.99.0', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_181'
Driver info: com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver
Capabilities [{reportPdfUrl=https://sap.reporting.perfectomobile.com/export/api/v1/test-executions/pdf?externalId[0][email protected]_RemoteWebDriver_18-08-07_07_58_06_557&_timestamp[0]=1533628686792, [email protected]_Eclipse_18-08-07_06_16_00_511, simpleIsVisibleCheck=true, deviceName=8753C71DE4EF26B55B14A739F678F7F8FB4F0BF6, platform=IOS, password=, deviceSessionId=55C47182A39902C219670DCD4F5354F5, driverClass=io.appium.java_client.ios.IOSDriver, automationName=Appium, host=sap.perfectomobile.com, singleTestReportUrl=https://sap.perfectomobile.com/nexperience/singletest/report/?reportRepositoryKey=PRIVATE:RemoteWebDriver/180807/RemoteWebDriver_18-08-07_07_58_06_557.xml&ownerId=[email protected]&sharingCode=32730250-e8b0-406e-a3e5-002b2505bfee, takesScreenshot=true, javascriptEnabled=true, model=iPad Air, platformName=IOS, rotatable=true, testGridReportUrl=https://sap.reporting.perfectomobile.com/library?externalId[0][email protected]_RemoteWebDriver_18-08-07_07_58_06_557&_timestamp[0]=1533628686792, entityType=remote_web_driver, xcuitestFindOptimizations=true, bundleId=com.apple.mobilesafari, serverConnector=, serverHost=10.51.19.23:11603, securityToken=, [email protected]_RemoteWebDriver_18-08-07_07_58_06_557, objectsOptimization=true, webdriver.remote.sessionid=09758e51-be65-4e01-9396-db0e5d91114f, locationContextEnabled=true, scriptName=RemoteWebDriver, reportKey=PRIVATE:RemoteWebDriver/180807/RemoteWebDriver_18-08-07_07_58_06_557.xml, windTunnelReportUrl=https://sap.perfectomobile.com/nexperience/singletest/report/?reportRepositoryKey=PRIVATE:RemoteWebDriver/180807/RemoteWebDriver_18-08-07_07_58_06_557.xml&ownerId=[email protected]&sharingCode=32730250-e8b0-406e-a3e5-002b2505bfee, user=, cssSelectorsEnabled=true}]
Session ID: 09758e51-be65-4e01-9396-db0e5d91114f
*** Element info: {Using=xpath, value=//[@id='mainShell-header-hdr-begin']//[@Class='sapUiUfdShellHeadContainer']//span}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:82)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:45)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:586)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.execute(QAFExtendedWebDriver.java:236)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:356)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:458)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElementByXPath(QAFExtendedWebDriver.java:400)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElementByXPath(QAFExtendedWebDriver.java:1)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElement(QAFExtendedWebDriver.java:171)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElement(QAFExtendedWebDriver.java:1)
at org.openqa.selenium.support.ui.ExpectedConditions.findElement(ExpectedConditions.java:895)
at org.openqa.selenium.support.ui.ExpectedConditions.access$000(ExpectedConditions.java:41)
at org.openqa.selenium.support.ui.ExpectedConditions$6.apply(ExpectedConditions.java:181)
at org.openqa.selenium.support.ui.ExpectedConditions$6.apply(ExpectedConditions.java:178)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:238)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.load(QAFExtendedWebDriver.java:216)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebElement.load(QAFExtendedWebElement.java:299)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebElement.execute(QAFExtendedWebElement.java:250)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83)
at com.qmetry.qaf.automation.step.CommonStep.click_aroundBody50(CommonStep.java:642)
at com.qmetry.qaf.automation.step.CommonStep$AjcClosure51.run(CommonStep.java:1)
at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
at com.qmetry.qaf.automation.step.JavaStepReporter.javaTestStep(JavaStepReporter.java:101)
at com.qmetry.qaf.automation.step.CommonStep.click(CommonStep.java:641)
at com.sap.utilities.CommonFunctionsUtility.selectMenu(CommonFunctionsUtility.java:405)
at com.quantum.steps.CommonStepsDefs.iSelectFromMenu(CommonStepsDefs.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:159)
at com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:149)
at com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:134)
at com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:173)
at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:781)
at org.testng.TestRunner.run(TestRunner.java:635)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:39)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:421)
at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: Failed to execute command webpage.element find: findElements command failed. Reason: handset server: server is busy processing another request [/appiumModeStop]
at com.perfectomobile.selenium.MobileEntity.processCommonResponse(MobileEntity.java:102)
at com.perfectomobile.selenium.MobileDevice.processResponse(MobileDevice.java:530)
at com.perfectomobile.selenium.MobileApplication.processResponse(MobileApplication.java:46)
at com.perfectomobile.selenium.dom.MobileDOMApplication.processResponse(MobileDOMApplication.java:389)
at com.perfectomobile.selenium.MobileEntity.executeCommand(MobileEntity.java:57)
at com.perfectomobile.selenium.MobileEntity.executeCommand(MobileEntity.java:50)
at com.perfectomobile.selenium.MobileApplication.findElementsImpl(MobileApplication.java:262)
at com.perfectomobile.selenium.dom.MobileDOMApplication.findElementsImpl(MobileDOMApplication.java:399)
at com.perfectomobile.selenium.MobileApplication.findElementsImpl(MobileApplication.java:243)
at com.perfectomobile.selenium.MobileApplication.findElementsByXPath(MobileApplication.java:199)
at com.perfectomobile.selenium.MobileApplication.findElementByXPath(MobileApplication.java:192)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at com.perfectomobile.selenium.MobileApplication.findElement(MobileApplication.java:132)
at com.perfectomobile.selenium.server.PerfectoMobileDriver.findElement(PerfectoMobileDriver.java:892)
at sun.reflect.GeneratedMethodAccessor1720.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:109)
at com.sun.proxy.$Proxy281.findElement(Unknown Source)
at org.openqa.selenium.support.events.EventFiringWebDriver.findElement(EventFiringWebDriver.java:193)
at org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:48)
at org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:33)
at org.openqa.selenium.remote.server.handler.WebDriverHandler.handle(WebDriverHandler.java:41)
at org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:112)
at org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:192)
at org.openqa.selenium.remote.server.MobileDriverServlet.lambda$handleRequest$0(MobileDriverServlet.java:465)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)

Clean and Arrange repository

Few things needed to be arranged \ cleaned in the repository:
· Clean samples features folder – keep only web + web data driven
· Change name of appium example
· Remove redundant step files, add relevant one which related to the existing feature example
· Object repo files – The same – remove redundant files, switch to loc extension only, add relevant repo file according the samples we have
· Add java test example, with page object model
· Clean pom file
· Remove license.key from application.properties file

Predefined step - I close application by name "".

Currently, this step is failing if the application is not open and works fine if the application is closed.
It gives application is not open error.

It would be convenient if this step would not give this error and close the application only if it is open. It can give a warning and continue without errors.

Thanks,
Kulin

Accessibility Check Sample

We need to add a sample for how to check mobile \ mobile web \ desktop web accessibility using external accessibility services.

For web - we can add a flow for getting html content from the device, sending it to an external service, and sending the results (may url to the result in the external tool) to reportium.

For native - need to investigate which free tools exists in the market and how this can be done using automation.

Getting okhttp3.internal.http2.ConnectionShutdownException intermittently while performing some action

org.openqa.selenium.WebDriverException: okhttp3.internal.http2.ConnectionShutdownException
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'AZWVDPHEV1396', ip: '10.229.152.210', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_311'
Driver info: driver.version: IOSDriver
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:254) ~[java-client-7.3.0.jar:?]
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) ~[selenium-remote-driver-3.141.59.jar:?]
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1) ~[java-client-7.3.0.jar:?]
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285) ~[selenium-remote-driver-3.141.59.jar:?]
at io.appium.java_client.DefaultGenericMobileElement.execute(DefaultGenericMobileElement.java:45) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.MobileElement.execute(MobileElement.java:1) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.ios.IOSElement.execute(IOSElement.java:1) ~[java-client-7.3.0.jar:?]
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:84) ~[selenium-remote-driver-3.141.59.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_311]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_311]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_311]
at com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:150) ~[qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:146) [qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:126) [qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:174) [qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66) [qaf-2.1.15.jar:?]

Sample Example: Reading data from csv or excel file is not working, giving error in feature file

feature file:

Feature: Google search
Scenario Outline: Search Keyword CSV Data
Given I am on Google Search Page
When I search for ""
Then it should have "" in search results
Examples: {'datafile' : 'src/main/resources/data/testData.xls'}


testData.csv file is available in provided place/path


Throwing error as below:

Caused by: gherkin.lexer.LexingError: Lexing error on line 20: '%FEATURE_END%'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.
at gherkin.lexer.En.scan(En.java:904)
at gherkin.lexer.I18nLexer.scan(I18nLexer.java:36)
at gherkin.parser.Parser.parse(Parser.java:62)
at cucumber.runtime.FeatureBuilder.parse(FeatureBuilder.java:131)
... 12 more

Please suggest solution.

I have tried modifying feature file as below:
@WebDDcsv
Scenario Outline: Search Keyword CSV Data
Given I am on Google Search Page
When I search for ""
Then it should have "" in search results

Examples: {'datafile' : 'src/main/resources/data/testData.xls', 'sheetName': 'testResults'}

Not able to execute test in Parallel

While trying to run Parallel execution. The last test only getting executed.

I have updated 3 test for Parallel execution. If I running the below xml file, Driver instance not created for Test1 & Test2 and geting failed but Test3 only getting executed.

Note: If executed sequentially all scripts are working fine.

Please help me on this. I need to execute Scenarios parallelly in edge browser.

In Xml file, suite tag line I have added=> suite name="SuiteName" verbose="0" parallel="tests" thread-count="4">

XML


































Error Message
com.qmetry.qaf.automation.core.AutomationError: Unable to Create Driver Instance for edge: null
at com.qmetry.qaf.automation.ui.UiDriverFactory$Browsers.standardConnect(UiDriverFactory.java:442)
at com.qmetry.qaf.automation.ui.UiDriverFactory$Browsers.getDriver(UiDriverFactory.java:413)
at com.qmetry.qaf.automation.ui.UiDriverFactory$Browsers.access$300(UiDriverFactory.java:282)
at com.qmetry.qaf.automation.ui.UiDriverFactory.getDriver(UiDriverFactory.java:221)
at com.qmetry.qaf.automation.ui.UiDriverFactory.get(UiDriverFactory.java:89)
at com.qmetry.qaf.automation.core.QAFTestBase$DriverInitExpectedCondition.apply(QAFTestBase.java:568)
at com.qmetry.qaf.automation.core.QAFTestBase$DriverInitExpectedCondition.apply(QAFTestBase.java:1)
at com.qmetry.qaf.automation.ui.util.DynamicWait.until(DynamicWait.java:147)
at com.qmetry.qaf.automation.core.QAFTestBase.init(QAFTestBase.java:478)
at com.qmetry.qaf.automation.core.QAFTestBase.getUiDriver(QAFTestBase.java:253)
at com.qmetry.qaf.automation.ui.WebDriverTestBase.getDriver(WebDriverTestBase.java:44)
at com.qmetry.qaf.automation.ui.WebDriverTestBase.getDriver(WebDriverTestBase.java:1)
at com.qmetry.qaf.automation.ui.AbstractTestPage.(AbstractTestPage.java:81)
at com.qmetry.qaf.automation.ui.AbstractTestPage.(AbstractTestPage.java:88)
at com.qmetry.qaf.automation.ui.WebDriverBaseTestPage.(WebDriverBaseTestPage.java:65)
at com.qmetry.qaf.automation.ui.WebDriverBaseTestPage.(WebDriverBaseTestPage.java:61)
at com.leedOnline.pages.OnlineCreditsFormPage.(OnlinePage.java:28)
at com.leedOnline.steps.OnlineCreditForms.(OnlinePageDetails.java:14)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at com.qmetry.qaf.automation.step.DefaultObjectFactory.createInstance(DefaultObjectFactory.java:83)
at com.qmetry.qaf.automation.step.DefaultObjectFactory.getObject(DefaultObjectFactory.java:60)
at com.qmetry.qaf.automation.step.ObjectFactory$Provider.getObject(ObjectFactory.java:48)
at com.qmetry.qaf.automation.step.JavaStep.getStepProvider(JavaStep.java:173)
at com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:137)
at com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:149)
at com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:127)
at com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:174)
at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:778)
at org.testng.TestRunner.run(TestRunner.java:632)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:39)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:421)
at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.qmetry.qaf.automation.ui.UiDriverFactory.getDriverObj(UiDriverFactory.java:259)
at com.qmetry.qaf.automation.ui.UiDriverFactory.access$800(UiDriverFactory.java:73)
at com.qmetry.qaf.automation.ui.UiDriverFactory$Browsers.standardConnect(UiDriverFactory.java:437)
... 51 more

Applitools Sample

Need to add a sample demonstrating how to run test on two different devices, and sending the snapshots to applitools, including in the reportium a url to the comparison in applitools.

click method creates a step in the report

The click method click("save.contact"); is a very useful short way to click on elements but ..... it cannot be used since it creates a seperate step in the report.

findElement fails on first test even though though the element is visible and on second test it passes at exact same step

I have a test where I launch an app and then i check if the element //*[@text='Messages'] is visible but it fails even though the element is visible, xpath is checked and after it moves to second test which starts the same way it will pass and move to next steps. This was working on last test done on perfecto instance 10.10 but it stopped on 10.12 version.
Any idea what might be the issue?

Assert.assertTrue(launchAndroidMessagesApp(senderDevice));
Assert.assertTrue(homeScreen.messagesHeaderDisplayed(senderDevice));

[Pixel2 HT7731A0]: ▀▄▀▄▀ DEVICE PROPERTIES: Capabilities [{reportPdfUrl=https://rogers.reporting.onsite.perfectomobile.com/export/api/v1/test-executions/pdf?externalId[0][email protected]_RemoteWebDriver_17-12-21_14_50_51_25009&_timestamp[0]=1513885851688, [email protected]_Eclipse_17-12-21_11_18_59_24940, available=false, language=English, deviceName=HT7731A00770, deviceId=HT7731A00770, resolution=1080x1920, platform=ANY, wifiMacAddress=40:4e:36:0b:5b:ab, manufacturer=Google, mode=CONNECTED, password=, cradleId=HSS-106/VIRTUAL/01, osVersion=8.1.0, host=rogers.onsite.perfectomobile.com, singleTestReportUrl=https://rogers.onsite.perfectomobile.com/nexperience/singletest/report/?reportRepositoryKey=PRIVATE:RemoteWebDriver/171221/RemoteWebDriver_17-12-21_14_50_51_25009.xml&ownerId=[email protected]&sharingCode=a05ff647-9c2f-4323-8a3e-ccb64481631e, inUse=true, takesScreenshot=true, javascriptEnabled=true, model=Pixel 2, firmware=walleye-userdebug 8.1.0 OPM1.171019.011 4448085 dev-keys, rotatable=true, testGridReportUrl=https://rogers.reporting.onsite.perfectomobile.com?externalId[0][email protected]_RemoteWebDriver_17-12-21_14_50_51_25009&_timestamp[0]=1513885851688, os=Android, entityType=remote_web_driver, allocatedTo=[email protected], serverConnector=, securityToken=, [email protected]_RemoteWebDriver_17-12-21_14_50_51_25009, phoneNumber=+16479240083, webdriver.remote.sessionid=043d5fba-0a98-49f7-84b8-19da3a019cf0, locationContextEnabled=true, scriptName=RemoteWebDriver, location=Toronto, linkType=lab, reportKey=PRIVATE:RemoteWebDriver/171221/RemoteWebDriver_17-12-21_14_50_51_25009.xml, windTunnelReportUrl=https://rogers.onsite.perfectomobile.com/nexperience/singletest/report/?reportRepositoryKey=PRIVATE:RemoteWebDriver/171221/RemoteWebDriver_17-12-21_14_50_51_25009.xml&ownerId=[email protected]&sharingCode=a05ff647-9c2f-4323-8a3e-ccb64481631e, user=, operabilityRatingScore=100, cssSelectorsEnabled=true, status=Connected}] ▀▄▀▄▀
[Pixel2 HT7731A0]: Executing setTimeout parameters: {"ms":0,"type":"implicit"}
[Pixel2 HT7731A0]: command: setTimeout[ param-1: {type=implicit, ms=0}] Result: null
driver init done
[Pixel2 HT7731A0]: Executing switchToContext parameters: {"name":"NATIVE_APP"}
[Pixel2 HT7731A0]: command: switchToContext[ param-1: {name=NATIVE_APP}] Result: null
[Pixel2 HT7731A0]: Executing executeScript parameters: {"args":[{"identifier":"com.google.android.apps.messaging"}],"script":"mobile:application:close"}
[Pixel2 HT7731A0]: Executing executeScript parameters: {"args":[{"identifier":"com.google.android.apps.messaging"}],"script":"mobile:application:open"}
[Pixel2 HT7731A0]: Executing findElement parameters: {"using":"xpath","value":"//[@text='Messages']"}
[Pixel2 HT7731A0]: amdocs.com&sharingCode=10f938cd-8769-40b4-a87b-5acdf142f306, user=, operabilityRatingScore=100, cssSelectorsEnabled=true, status=Connected}]
Session ID: 2bc0a041-ae05-4da5-b533-8063d2ddf5a8
*** Element info: {Using=xpath, value=//
[@text='Messages']}
org.openqa.selenium.TimeoutException: Timed out after 30 seconds waiting for presence of element located by: By.xpath: //[@text='Messages']
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'GAVRILDG02', ip: '10.16.34.99', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_121'
Driver info: driver.version: QAFExtendedWebDriver
at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:292)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:261)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.load(QAFExtendedWebDriver.java:214)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebElement.load(QAFExtendedWebElement.java:284)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebElement.getId(QAFExtendedWebElement.java:294)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebElement.isDisplayed(QAFExtendedWebElement.java:314)
at com.rogers.apps.custom.android_messages.screens.genericGooglePixel.HomeScreen.messagesHeaderDisplayed(HomeScreen.java:54)
at com.rogers.apps.custom.android_messages.steps.GenericSteps.sendMMSImageGallery(GenericSteps.java:96)
at com.rogers.utils.DecisionMaker.appAndroidMessagesSendMMSImageGallery(DecisionMaker.java:23)
at com.rogers.tests.Sanity.appAndroidMessagesSendAndReceiveMMS(Sanity.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:781)
at org.testng.TestRunner.run(TestRunner.java:635)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
at org.testng.TestNG.runSuites(TestNG.java:1133)
at org.testng.TestNG.run(TestNG.java:1104)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
Caused by: org.openqa.selenium.NoSuchElementException: Element with by xpath '//
[@text='Messages']' wasn't found.
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'MCM-ROGERS', ip: '192.168.100.10', os.name: 'Windows Server 2008 R2', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_102'
Driver info: driver.version: EventFiringWebDriver
Command duration or timeout: 61.17 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'GAVRILDG02', ip: '10.16.34.99', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_121'
Driver info: com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver
Capabilities [{reportPdfUrl=https://rogers.reporting.onsite.perfectomobile.com/export/api/v1/test-executions/pdf?externalId[0][email protected]_RemoteWebDriver_17-12-21_14_50_37_25007&_timestamp[0]=1513885837895, [email protected]_Eclipse_17-12-21_11_18_59_24940, available=false, language=English, deviceName=1115FB434A041E03, deviceId=1115FB434A041E03, resolution=1440x2560, platform=ANY, wifiMacAddress=24:4b:03:83:f3:68, manufacturer=Samsung, mode=CONNECTED, password=, cradleId=HSS-204/007282/01, osVersion=7.0, automationName=Appium, host=rogers.onsite.perfectomobile.com, singleTestReportUrl=https://rogers.onsite.perfectomobile.com/nexperience/singletest/report/?reportRepositoryKey=PRIVATE:RemoteWebDriver/171221/RemoteWebDriver_17-12-21_14_50_37_25007.xml&ownerId=[email protected]&sharingCode=10f938cd-8769-40b4-a87b-5acdf142f306, inUse=true, takesScreenshot=true, browserName=MobileOS, javascriptEnabled=true, model=Galaxy S6, firmware=zerofltebmc-user 7.0 NRD90M G920W8VLU5DQD4 release-keys, rotatable=true, testGridReportUrl=https://rogers.reporting.onsite.perfectomobile.com?externalId[0][email protected]_RemoteWebDriver_17-12-21_14_50_37_25007&_timestamp[0]=1513885837895, os=Android, entityType=remote_web_driver, allocatedTo=[email protected], serverConnector=, securityToken=, [email protected]_RemoteWebDriver_17-12-21_14_50_37_25007, webdriver.remote.sessionid=2bc0a041-ae05-4da5-b533-8063d2ddf5a8, locationContextEnabled=true, scriptName=RemoteWebDriver, location=Toronto, linkType=lab, reportKey=PRIVATE:RemoteWebDriver/171221/RemoteWebDriver_17-12-21_14_50_37_25007.xml, windTunnelReportUrl=https://rogers.onsite.perfectomobile.com/nexperience/singletest/report/?reportRepositoryKey=PRIVATE:RemoteWebDriver/171221/RemoteWebDriver_17-12-21_14_50_37_25007.xml&ownerId=[email protected]&sharingCode=10f938cd-8769-40b4-a87b-5acdf142f306, user=, operabilityRatingScore=100, cssSelectorsEnabled=true, status=Connected}]
Session ID: 2bc0a041-ae05-4da5-b533-8063d2ddf5a8
*** Element info: {Using=xpath, value=//[@text='Messages']}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.execute(QAFExtendedWebDriver.java:234)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:500)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElementByXPath(QAFExtendedWebDriver.java:398)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElementByXPath(QAFExtendedWebDriver.java:1)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElement(QAFExtendedWebDriver.java:169)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElement(QAFExtendedWebDriver.java:1)
at org.openqa.selenium.support.ui.ExpectedConditions.findElement(ExpectedConditions.java:899)
at org.openqa.selenium.support.ui.ExpectedConditions.access$000(ExpectedConditions.java:41)
at org.openqa.selenium.support.ui.ExpectedConditions$6.apply(ExpectedConditions.java:181)
at org.openqa.selenium.support.ui.ExpectedConditions$6.apply(ExpectedConditions.java:178)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:238)
... 33 more
Caused by: org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'GAVRILDG02', ip: '10.16.34.99', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_121'
Driver info: driver.version: QAFExtendedWebDriver
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:138)
... 48 more
Caused by: org.openqa.selenium.NoSuchElementException: Element with by xpath '//
[@text='Messages']' wasn't found.
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'MCM-ROGERS', ip: '192.168.100.10', os.name: 'Windows Server 2008 R2', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_102'
Driver info: driver.version: EventFiringWebDriver
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'GAVRILDG02', ip: '10.16.34.99', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_121'
Driver info: driver.version: EventFiringWebDriver
at com.perfectomobile.selenium.MobileApplication.getSingleElement(MobileApplication.java:339)
at com.perfectomobile.selenium.MobileApplication.findElementByXPath(MobileApplication.java:194)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at com.perfectomobile.selenium.MobileApplication.findElement(MobileApplication.java:133)
at com.perfectomobile.selenium.server.PerfectoMobileDriver.findElement(PerfectoMobileDriver.java:825)
at sun.reflect.GeneratedMethodAccessor1384.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:104)
at com.sun.proxy.$Proxy263.findElement(Unknown Source)
at org.openqa.selenium.support.events.EventFiringWebDriver.findElement(EventFiringWebDriver.java:188)
at org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:48)
at org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:33)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.openqa.selenium.remote.server.MobileDefaultSession.lambda$execute$0(MobileDefaultSession.java:187)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
[Pixel2 HT7731A0]: java.lang.AssertionError: expected [true] but found [false]
[Pixel2 HT7731A0]: Executing screenshot parameters: {}
[Pixel2 HT7731A0]: Capturing screen shotappAndroidMessagesSendAndReceiveMMS_1snqfdecw1w4x22508.png
[Pixel2 HT7731A0]: at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)\r\n\tat org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)\r\n\tat org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)\r\n"}],"script":"mobile:test:end"}
[Pixel2 HT7731A0]: ▀▄▀▄▀ REPORTIUM URL: https://rogers.reporting.onsite.perfectomobile.com?externalId%5B0%[email protected]_RemoteWebDriver_17-12-21_14_50_37_25007&_timestamp%5B0%5D=1513885837895 ▀▄▀▄▀
[Pixel2 HT7731A0]: █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
[Pixel2 HT7731A0]: █ TEST FAILED: appAndroidMessagesSendAndReceiveMMS [{textMMS=MMS Flow test -This is MMS no 1}] █
[Pixel2 HT7731A0]: █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

Finalize Readme File

We need to finalize the readme - add the needed instructions for the user on how to add object to an object repo, how to start write his first test , run the test, and view the report.
This should be written before we start talking about additional functionality in the framework such as parallel execution, data driven, etc.

I want to input IE driver capabilities for quantum frame work

Hi All,

Because of sysytem security settings I am not able to launch IE browser with quantum frame work. Where as with below mentioned setting I am able to launch. But the question is how can Incorporate this with quatum frame work. Is there any way to update those.Kindly help me with solution.

DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
caps.setCapability("requireWindowFocus", true);

Close and open a new browser session in same scenario

Hi, I know this might turn out to be pretty straight forward but I have been beating around the bush since 2 days and still not able to figure out a way to achieve the subjected case.

I have an IEDriver session open and somewhere down the line in my scenario I close it with driver.close(). Now in same method where I close the session I initiate a new session using new WebDriverTestBase().getDriver() and it does give me a driver. But when I try to navigate to a URL using this new instance it throws Session does not exist exception.

Any help is greatly appreciated.

Getting org.openqa.selenium.json.JsonException: Unable to determine type from: <. Last 1 characters read: <

org.openqa.selenium.json.JsonException: Unable to determine type from: <. Last 1 characters read: <
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'AZWVDPHEV1395', ip: '10.229.152.209', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_311'
Driver info: driver.version: AndroidDriver
at org.openqa.selenium.json.JsonInput.peek(JsonInput.java:122) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.json.JsonTypeCoercer.lambda$null$6(JsonTypeCoercer.java:140) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.json.JsonTypeCoercer.coerce(JsonTypeCoercer.java:126) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.json.Json.toType(Json.java:69) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.json.Json.toType(Json.java:55) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.json.Json.toType(Json.java:50) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:87) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) ~[selenium-remote-driver-3.141.59.jar:?]
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) ~[selenium-remote-driver-3.141.59.jar:?]
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239) ~[java-client-7.3.0.jar:?]
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) ~[selenium-remote-driver-3.141.59.jar:?]
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) ~[java-client-7.3.0.jar:?]
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285) ~[selenium-remote-driver-3.141.59.jar:?]
at io.appium.java_client.DefaultGenericMobileElement.execute(DefaultGenericMobileElement.java:45) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.MobileElement.execute(MobileElement.java:1) ~[java-client-7.3.0.jar:?]
at io.appium.java_client.android.AndroidElement.execute(AndroidElement.java:1) ~[java-client-7.3.0.jar:?]
at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:106) ~[selenium-remote-driver-3.141.59.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_311]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_311]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_311]
at com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:150) ~[qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:146) [qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:126) [qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:174) [qaf-2.1.15.jar:?]
at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66) [qaf-2.1.15.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_311]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_311]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_311]
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104) [testng-6.10.jar:?]
at org.testng.internal.Invoker.invokeMethod(Invoker.java:645) [testng-6.10.jar:?]
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851) [testng-6.10.jar:?]
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177) [testng-6.10.jar:?]
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) [testng-6.10.jar:?]
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) [testng-6.10.jar:?]
at org.testng.TestRunner.privateRun(TestRunner.java:778) [qaf-2.1.15.jar:?]
at org.testng.TestRunner.run(TestRunner.java:632) [qaf-2.1.15.jar:?]
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387) [testng-6.10.jar:?]
at org.testng.SuiteRunner.access$000(SuiteRunner.java:39) [testng-6.10.jar:?]
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:421) [testng-6.10.jar:?]
at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64) [testng-6.10.jar:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_311]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_311]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_311]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_311]

Scenario Outline - Examples causing java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

Opened new ticket for this under main Quantum project:
https://github.com/Project-Quantum/Quantum/issues/47

Seems like the latest version of the starter kit has broken the ability to use scenario outlines. This error is thrown no matter what data format is used:

▀ ▀ ▀ END STEP: And I select "Bank or Invest Login" from list id "account" ▀ ▀ ▀
[{username}]
[XP 10]: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
[XP 10]: Executing screenshot parameters: {}

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

at .Then I enter "${username}" to "username.ally.textbox"(src/main/resources/scenarios/Responsive.feature:9)
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
at com.quantum.listeners.QuantumReportiumListener.getProcessStepDescription(QuantumReportiumListener.java:326)

These are the versions of the components in my POM file:
src/main/resources/config
testng_web.xml
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<reportium-sdk.version>1.2.0</reportium-sdk.version>
<selenium.version>2.53.1</selenium.version>
<testng.version>6.9.10</testng.version>
<cukes.version>1.2.5</cukes.version>
<qaf.version>2.1.13</qaf.version>
<qafsupport.version>2.1.11</qafsupport.version>
<quantum.version>1.14</quantum.version>
<org.json.version>20160810</org.json.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

Json file contains ":" in content would get JsonSyntaxException

quantum.version

<quantum.version>1.20.1</quantum.version>

Steps To Reproduce

1.  Use above test data in feature as test file

Expected behavior

I can get the content in test successfully.

Actual behavior

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated array at line 1 column 67 path $.[2]

Is the issue reproducible on runner?

  • QAS
  • Maven
  • Gradle
  • Ant
  • Eclipse

Test case sample

[
{
"waitTimeToReceiveEmail": "5",
"emailContent" : {
"sender" : "[email protected]",
"title": "test",
"content" : ["休假申请已被批准", "业务流程:短期休假申请:moon"]
}
}
]

Feature file

Then User can validate email content with "<emailContent>"
Examples: {'datafile':'./src/main/resources/data/test.json'}

Note:

I use Gson to get the content, it's worked well.
JsonParser.parseReader(new FileReader("test.json"))

afterTest fails for more than two iterations in quantum version 1.13-RC1

Hi,

Using the latest pom (with <quantum.version>1.13-RC1</quantum.version>) I'm getting below exception when I have to execute a test in more than 2 iterations. The actual tests are fine but the end result fails because of this exception on afterTest.
The same tests were executed with success in old pom (with <quantum.version>1.11</quantum.version>).

main: Executing quit parameters: {}
main: command: quit[ param-1: {}] Result: null
main: UI-driver tear down complete...
main: java.lang.NullPointerException
main: Executing screenshot parameters: {}
main: d5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'GAVRILDG02', ip: '10.16.40.145', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_162'
Driver info: driver.version: QAFExtendedWebDriver
org.openqa.selenium.remote.SessionNotFoundException: Session ID is null. Using WebDriver after calling quit()?
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'GAVRILDG02', ip: '10.16.40.145', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_162'
Driver info: driver.version: QAFExtendedWebDriver
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:134)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.execute(QAFExtendedWebDriver.java:236)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:701)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.execute(QAFExtendedWebDriver.java:224)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.getScreenshotAs(QAFExtendedWebDriver.java:272)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.takeScreenShot(QAFExtendedWebDriver.java:464)
at com.qmetry.qaf.automation.core.QAFTestBase.takeScreenShot(QAFTestBase.java:356)
at com.qmetry.qaf.automation.testng.pro.QAFTestNGListener.processResult(QAFTestNGListener.java:289)
at com.qmetry.qaf.automation.testng.pro.QAFTestNGListener.afterInvocation(QAFTestNGListener.java:211)
at com.qmetry.qaf.automation.testng.pro.QAFTestNGListener2.afterInvocation(QAFTestNGListener2.java:158)
at org.testng.internal.invokers.InvokedMethodListenerInvoker$InvokeAfterInvocationWithContextStrategy.callMethod(InvokedMethodListenerInvoker.java:108)
at org.testng.internal.invokers.InvokedMethodListenerInvoker$InvokeAfterInvocationWithContextStrategy.callMethod(InvokedMethodListenerInvoker.java:104)
at org.testng.internal.invokers.InvokedMethodListenerInvoker.invokeListener(InvokedMethodListenerInvoker.java:62)
at org.testng.internal.Invoker.runInvokedMethodListeners(Invoker.java:557)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:536)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:217)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:144)
at org.testng.TestRunner.afterRun(TestRunner.java:1008)
at org.testng.TestRunner.run(TestRunner.java:639)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
at org.testng.TestNG.runSuites(TestNG.java:1133)
at org.testng.TestNG.run(TestNG.java:1104)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
Preparing For Shut Down...
Thread-0: Executing quit parameters: {}
Thread-0: command: quit[ param-1: {}] Result: null
Thread-0: UI-driver tear down complete...
Exception in thread "Thread-0" java.lang.NullPointerException
at com.qmetry.qaf.automation.core.QAFTestBase.tearDown(QAFTestBase.java:191)
at com.qmetry.qaf.automation.core.TestBaseProvider.stopAll(TestBaseProvider.java:69)
at com.qmetry.qaf.automation.core.TestBaseProvider$1.run(TestBaseProvider.java:97)

driver chrome ,how to simulate ipad with option?

like this :
but,how can i implement this with Quantum-Starter-Kit ?. DriverUtils.getDriver();? how to use it ?
Map<String, Object> deviceMetrics = new HashMap<String, Object>();

    //设置屏幕大小、像素
    deviceMetrics.put("width", 480);
    deviceMetrics.put("height", 720);
    deviceMetrics.put("pixelRatio", 3.0);

    Map<String, Object> mobileEmulation = new HashMap<String, Object>();
    mobileEmulation.put("deviceMetrics", deviceMetrics);

    //设置要模拟的手机标识
    mobileEmulation.put("userAgent",
            "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");

    //声明ChromeOptions,主要是给chrome设置参数
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);

    //设置驱动位置
    System.setProperty("webdriver.chrome.driver", "D:\\tools\\chromedriver_win32\\chromedriver.exe");
    WebDriver driver = new ChromeDriver(chromeOptions);

Defining application.properties file

Currently we have the application properties file and the related values in our documentation here.

It does not show the details of the features. For example:

installApp

This does not define the parameters for instrumentation, both web and sensor. We need the documentation updated to show the correct code for the application.properties file, which includes the exact code writing for each function and all the related parameters, including how it looks in Quantum.

Support gets these questions A LOT.

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.