Cucumber java tests using Appium app

Hi Team,

I am using Appium in my Cucumber with Serenity framework.The Page Object Model based class file and ‘Steps’ file is mentioned below.On running the test error is occuring(mentioned below in comments in Italic)

package com.ctl.it.qa.sfa.tools.mobile.pages;
import net.serenitybdd.core.annotations.findby.FindBy;
import net.serenitybdd.core.pages.PageObject;
import net.serenitybdd.core.pages.WebElementFacade;
import com.ctl.it.qa.staf.Page;

public class LoginPage extends PageObject {

@FindBy(name = "I Agree")
public WebElementFacade btn_agree;

}

public class UserSteps extends Steps {

LoginPage loginPage;

@Step
public void logs_in_as() {
	_loginPage.btn_agree.click(); // error is occuring here_

}

}

LOGS

net.serenitybdd.core.exceptions.SerenityManagedException: Not yet implemented. Please help us: http://appium.io/get-involved.html (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 93 milliseconds
Build info: version: ‘unknown’, revision: ‘5234b32’, time: ‘2017-03-10 09:00:17 -0800’
System info: host: ‘5CG544240N’, ip: ‘10.140.28.73’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.8.0_45’
Driver info: io.appium.java_client.android.AndroidDriver
Capabilities [{app=C:/Users/ab42596/Desktop/sfa-test-mobile/src/test/resources/Salesforce1.apk, networkConnectionEnabled=true, warnings={}, databaseEnabled=false, deviceName=emulator-5554, platform=LINUX, desired={app=C:/Users/ab42596/Desktop/sfa-test-mobile/src/test/resources/Salesforce1.apk, hub=http://127.0.0.1:4723/wd/hub, platformName=Android, deviceName=Salesforce1}, hub=http://127.0.0.1:4723/wd/hub, platformVersion=6.0, webStorageEnabled=false, locationContextEnabled=false, browserName=Android, takesScreenshot=true, javascriptEnabled=true, platformName=Android}]
Session ID: 94322dc7-1d55-4d98-b96d-0cd1644adbb2
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:216)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:638)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:40)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:540)
at net.thucydides.core.webdriver.javascript.JavascriptExecutorFacade.executeScript(JavascriptExecutorFacade.java:61)
at net.thucydides.core.pages.jquery.JQueryEnabledPage.isJQueryAvailable(JQueryEnabledPage.java:45)
at net.serenitybdd.core.pages.WebElementFacadeImpl.enableHighlightingIfRequired(WebElementFacadeImpl.java:1021)
at net.serenitybdd.core.pages.WebElementFacadeImpl.click(WebElementFacadeImpl.java:985)
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 net.thucydides.core.annotations.locators.AbstractSingleItemHandler.invoke(AbstractSingleItemHandler.java:45)
at com.sun.proxy.$Proxy21.click(Unknown Source)
at com.ctl.it.qa.sfa.tools.mobile.steps.user.UserSteps.logs_in_as(UserSteps.java:28)
at com.ctl.it.qa.sfa.tools.mobile.steps.user.UserSteps$$EnhancerByCGLIB$$3f41ff52.CGLIB$logs_in_as$0()
at com.ctl.it.qa.sfa.tools.mobile.steps.user.UserSteps$$EnhancerByCGLIB$$3f41ff52$$FastClassByCGLIB$$30610075.invoke()
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at net.thucydides.core.steps.StepInterceptor.invokeMethod(StepInterceptor.java:369)
at net.thucydides.core.steps.StepInterceptor.executeTestStepMethod(StepInterceptor.java:354)
at net.thucydides.core.steps.StepInterceptor.runTestStep(StepInterceptor.java:329)
at net.thucydides.core.steps.StepInterceptor.testStepResult(StepInterceptor.java:134)
at net.thucydides.core.steps.StepInterceptor.intercept(StepInterceptor.java:61)
at com.ctl.it.qa.sfa.tools.mobile.steps.user.UserSteps$$EnhancerByCGLIB$$3f41ff52.logs_in_as()
at com.ctl.it.qa.sfa.test.mobile.steps.user.UserStepDefinition.i_am_logged_in_as_a_user_in_SFA(UserStepDefinition.java:17)
at ✽.Given I am logged in as a “Commercial” user in “SFA”(Login.feature:5)

@ketan_sethi

  1. This is Serenity related issue, please ask in google group related to that framework

  2. I suggest do not use Serenity for Appium, as it’s not keeping upto date with latest Java client releases and still uses 4.2. It is more suitable for web ( selenium ) but not for Appium for sure. I gave up after using it for a month

  3. I suggest build you own framework or search in github for examples

Hey this is not serenity issue because as per the logs WebElementFacade is not implemented in appium

Hi Vikram, Do you still think its better not to use serenity for appium test automation? Thanks in advance.

@sampadrout Serenity framework has fixed the issue wrt appium and it’s in much better shape now.

I highly recommend that framework for Appium and Selenium + API as well :slight_smile:

Thanks Vikram for such a fast response. Can you please give me some pointers to the github projects on this. I have done the implementation but having 3 questions:

  1. How to get index.html aggregate report
  2. How to use multiple feature files
  3. Where to use @Test annotation using Junit
    Any idea when the TestNG will be supported by Serenity BDD.

Thanks,
-Sampad

@sampadrout