Closed ibmer921150 closed 7 years ago
Hi @ibmer921150 . You need to set a value for the property "saucelabs.target.platform"
@cliviu Thanks for your reply. What's the "saucelabs.target.platform" should be set for saucelabs devices?
It is not required previously unless the code has been changed for it since platformVersion and platformName have been defined in -Dserenity.driver.capabilities.
hmm, something like "Windows 10", ""Windows 8.1"" . see here : https://wiki.saucelabs.com/display/DOCS/2017/06/16/Sauce+Labs+platform+changes+to+support+newer+browsers is about the "platform" capability of the driver. For the moment just try to set a non empty value to see if you get rid of the NPE
@cliviu Thanks for the information. I will have a try to set a target platform and verify if NPE can be removed.
But it doesn't make sense to set the target platform as it is for desktop, rather then devices. For devices, it is platformVersion and platformName. I have tried sauce labs devices configuration within selenium as following. And I don't set special target platform. It works correctly.
DesiredCapabilities caps = DesiredCapabilities.android(); caps.setCapability("appiumVersion", "1.6.5"); caps.setCapability("deviceName","Android Emulator"); caps.setCapability("deviceOrientation", "portrait"); caps.setCapability("browserName", "Chrome"); caps.setCapability("platformVersion", "6.0"); caps.setCapability("platformName","Android");
It would be good that serenity can support to defined capabilities in -Dserenity.driver.capabilities
It may be a bug in serenity. Let me know please if it works after you set any platform in saucelabs.target.platform
Hi @cliviu,
Verified that NPE will be not reproduced if setting the target platform. Confirmed that this is serenity bug. The target platform is required for saucelabs devices. It should be set a default value if target platform is not set by user.
Thanks.
Hi @ibmer921150 . Thanks for your feedback !
Hi @cliviu , thanks for the confirmation. I'm working on the bug and will propose a pull request. May bug you later for more questions. Cheers
The bug fix was planned in our team :) but your contribution is welcome
Fixed in 1.5.4
Hi there,
I updated the latest version 1.5.3 and verify the issue https://github.com/serenity-bdd/serenity-core/issues/842 with following commands. Got the error message, could you please take a look at? Thanks.
Note that if appium version is 1.5.3, browserName is browser; if appium version is 1.6.5, browserName is chrome which is defined in saucelabs.
mvn verify -Dwebdriver.driver=remote -Dserenity.driver.capabilities="appiumVersion:1.5.3; deviceName:Android Emulator; deviceOrientation:portrait; browserName:Browser; platformVersion:5.1; platformName:Android; acceptSslCert:true" -Dsaucelabs.url=http://xxx@ondemand.saucelabs.com:80/wd/hub -Dsaucelabs.access.key=xxx -Dsaucelabs.user.id=xxx -Dmaven.test.failure.ignore=false
or
mvn verify -Dwebdriver.driver=remote -Dserenity.driver.capabilities="appiumVersion:1.6.5; deviceName:Android Emulator; deviceOrientation:portrait; browserName:Chrome; platformVersion:6.0; platformName:Android; acceptSslCert:true" -Dsaucelabs.url=xxx@ondemand.saucelabs.com:80/wd/hub -Dsaucelabs.access.key=xxx -Dsaucelabs.user.id=xxx -Dmaven.test.failure.ignore=false
Then got the error message
net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate class org.openqa.selenium.remote.RemoteWebDriver at net.thucydides.core.webdriver.WebDriverFacade.newDriverInstance(WebDriverFacade.java:151) at net.thucydides.core.webdriver.WebDriverFacade.newProxyDriver(WebDriverFacade.java:138) at net.thucydides.core.webdriver.WebDriverFacade.getProxiedDriver(WebDriverFacade.java:108) at net.thucydides.core.webdriver.WebDriverFacade.openIgnoringHtmlUnitScriptErrors(WebDriverFacade.java:183) at net.thucydides.core.webdriver.WebDriverFacade.get(WebDriverFacade.java:178) at net.serenitybdd.core.pages.PageObject.openPageAtUrl(PageObject.java:827) at net.serenitybdd.core.pages.PageObject.open(PageObject.java:737) at net.serenitybdd.core.pages.PageObject.open(PageObject.java:725) at xxx.commonsteps.CommonSteps.navigates_tepapa_about_page(CommonSteps.java:61) at xxxx.commonsteps.CommonSteps$$EnhancerByCGLIB$$5e1fe0fe.CGLIB$navigates_tepapa_about_page$31() at xxxx.CommonSteps$$EnhancerByCGLIB$$5e1fe0fe$$FastClassByCGLIB$$e7de4847.invoke() at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at net.thucydides.core.steps.StepInterceptor.invokeMethod(StepInterceptor.java:395) at net.thucydides.core.steps.StepInterceptor.executeTestStepMethod(StepInterceptor.java:380) at net.thucydides.core.steps.StepInterceptor.runTestStep(StepInterceptor.java:355) at net.thucydides.core.steps.StepInterceptor.testStepResult(StepInterceptor.java:132) at net.thucydides.core.steps.StepInterceptor.intercept(StepInterceptor.java:61) at xxxx.CommonSteps$$EnhancerByCGLIB$$5e1fe0fe.navigates_xxx_about_page() at xxxx.xxxxtestCase.user_navigate_on_about_page(xxxxxTestCase.java:45) at ✽.Given user navigate on about page(src/test/resources/features/tepapa_discover/tepapa_discover_m1_font.feature:10) Caused by: net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate new WebDriver instance of type class org.openqa.selenium.remote.RemoteWebDriver (null at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:135) at net.thucydides.core.webdriver.WebDriverFacade.newDriverInstance(WebDriverFacade.java:147) at net.thucydides.core.webdriver.WebDriverFacade.newProxyDriver(WebDriverFacade.java:138) at net.thucydides.core.webdriver.WebDriverFacade.getProxiedDriver(WebDriverFacade.java:108) at net.thucydides.core.webdriver.WebDriverFacade.openIgnoringHtmlUnitScriptErrors(WebDriverFacade.java:183) at net.thucydides.core.webdriver.WebDriverFacade.get(WebDriverFacade.java:178) at net.serenitybdd.core.pages.PageObject.openPageAtUrl(PageObject.java:827) at net.serenitybdd.core.pages.PageObject.open(PageObject.java:737) at net.serenitybdd.core.pages.PageObject.open(PageObject.java:725) at xxx.CommonSteps.navigates_tepapa_about_page(CommonSteps.java:61) at xxx.CommonSteps$$EnhancerByCGLIB$$5e1fe0fe.CGLIB$navigates_tepapa_about_page$31() at xxx.CommonSteps$$EnhancerByCGLIB$$5e1fe0fe$$FastClassByCGLIB$$e7de4847.invoke() at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at net.thucydides.core.steps.StepInterceptor.invokeMethod(StepInterceptor.java:395) at net.thucydides.core.steps.StepInterceptor.executeTestStepMethod(StepInterceptor.java:380) at net.thucydides.core.steps.StepInterceptor.runTestStep(StepInterceptor.java:355) at net.thucydides.core.steps.StepInterceptor.testStepResult(StepInterceptor.java:132) at net.thucydides.core.steps.StepInterceptor.intercept(StepInterceptor.java:61) at xxx.CommonSteps$$EnhancerByCGLIB$$5e1fe0fe.navigates_tepapa_about_page() at xxx.TepapaDiscoverM1FontTestCase.user_navigate_on_about_page(TepapaDiscoverM1FontTestCase.java:45) 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:497) at cucumber.runtime.Utils$1.call(Utils.java:40) at cucumber.runtime.Timeout.timeout(Timeout.java:16) at cucumber.runtime.Utils.invoke(Utils.java:34) at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38) at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37) at cucumber.runtime.Runtime.runStep(Runtime.java:300) at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44) at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39) at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44) at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:102) at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63) at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70) at cucumber.api.junit.Cucumber.runChild(Cucumber.java:95) at cucumber.api.junit.Cucumber.runChild(Cucumber.java:38) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at cucumber.api.junit.Cucumber.run(Cucumber.java:100) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365) at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:272) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:236) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159) at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:386) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:323) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:143) Caused by: java.lang.NullPointerException at net.thucydides.core.webdriver.capabilities.SetAppropriateSaucelabsPlatformVersion.from(SetAppropriateSaucelabsPlatformVersion.java:49) at net.thucydides.core.webdriver.capabilities.SaucelabsRemoteDriverCapabilities.configureTargetPlatform(SaucelabsRemoteDriverCapabilities.java:77) at net.thucydides.core.webdriver.capabilities.SaucelabsRemoteDriverCapabilities.getCapabilities(SaucelabsRemoteDriverCapabilities.java:43) at net.serenitybdd.core.webdriver.driverproviders.SaucelabsDriverBuilder.findSaucelabsCapabilities(SaucelabsDriverBuilder.java:48) at net.serenitybdd.core.webdriver.driverproviders.SaucelabsDriverBuilder.buildWithOptions(SaucelabsDriverBuilder.java:33) at net.serenitybdd.core.webdriver.driverproviders.RemoteDriverProvider.newInstance(RemoteDriverProvider.java:44) at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:125) ... 58 more