Search code examples
javaappiumserenity-bddcucumber-serenity

AppiumFieldDecorator method is giving error with latest serenity version


I am new to Serenity Appium. I am trying to achieve Serenity-Cucumber-Appium with page object mechanism. To achieve page object I came across below method need to have in a base Page object class.

public class MobilePageObject extends PageObject {
    public MobilePageObject(final WebDriver driver) {
        super(driver, new Predicate<PageObject>() {
            @Override
            public boolean apply(PageObject page) {
                PageFactory
                        .initElements(new AppiumFieldDecorator(((WebDriverFacade) page.getDriver()).getProxiedDriver(),
                                page.getImplicitWaitTimeout().in(TimeUnit.SECONDS), TimeUnit.SECONDS), page);
                return true;
            }
        });
    }
}

This is working fine when I am using below version of Serenity and Cucumber.

<serenity.version>1.7.4</serenity.version>
        <serenity.cucumber.version>1.6.3</serenity.cucumber.version>
        <serenity.maven.version>1.7.4</serenity.maven.version>

However, if I am using below versions :

<serenity.version>1.9.20</serenity.version>
        <serenity.cucumber.version>1.9.8</serenity.cucumber.version>
        <serenity.maven.version>1.9.20</serenity.maven.version>

then it's giving me compile time error at in method as :

Cannot resolve method 'in(java.util.concurrent.TimeUnit)

Can you please help me, how I can overcome this and use the page object mechanism effectively for Appium Serenity.


Solution

  • Fortunately I am able to resolve this issue. With the latest Serenity version need to modify the page object class as below :

    public class MobilePageObject extends PageObject {
    
        public MobilePageObject(final WebDriver driver) {
            super(driver, new Predicate<PageObject>() {
                @Override
                public boolean apply(PageObject page) {
                    PageFactory.initElements(new AppiumFieldDecorator(((WebDriverFacade) page.getDriver()).getProxiedDriver()), page);
    
                    return true;
                }
            });
        }
    }
    

    Also to get the proper Serenity reports use the command mvn verify command to execute the test.

    Thanks for support!