[JBoss JIRA] (ARQGRA-384) element().is().visible() prematurely exits with exception on Android
by Karel Piwko (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-384?page=com.atlassian.jira.plugin... ]
Karel Piwko commented on ARQGRA-384:
------------------------------------
I'm not sure about that, but I'll tyre. The problem is, that issue to too complicated to be reproduced while in debug mode. It seems that it is a race condition.
> element().is().visible() prematurely exits with exception on Android
> --------------------------------------------------------------------
>
> Key: ARQGRA-384
> URL: https://issues.jboss.org/browse/ARQGRA-384
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.0.CR1
> Reporter: Karel Piwko
> Fix For: 2.0.0.Final
>
>
> When using following call using Graphene and AndroidDriver, it often fails with an exception on Android:
> {code}
> waitGui().withMessage("Add member button is not yet present.").until().element(addMemberBtn).is().visible();
> {code}
> {code}
> addUser(com.acme.example.test.DroneTest) Time elapsed: 8.491 sec <<< ERROR!
> org.openqa.selenium.WebDriverException: Returned value cannot be converted to Boolean: [org.openqa.selenium.remote.RemoteWebElement@30 -> unknown locator]
> Build info: version: '2.35.0', revision: '8df0c6bedf70ff9f22c647788f9fe9c8d22210e2', time: '2013-08-17 12:46:41'
> System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-358.18.1.el6.x86_64', java.version: '1.7.0_25'
> Driver info: driver.version: unknown
> at org.openqa.selenium.remote.RemoteWebElement.isDisplayed(RemoteWebElement.java:323)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:130)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$1.invoke(GrapheneContextualHandler.java:159)
> at org.jboss.arquillian.graphene.enricher.SearchContextInterceptor.intercept(SearchContextInterceptor.java:50)
> at org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
> at org.jboss.arquillian.graphene.enricher.StaleElementInterceptor$1.apply(StaleElementInterceptor.java:48)
> at org.jboss.arquillian.graphene.enricher.StaleElementInterceptor$1.apply(StaleElementInterceptor.java:44)
> at org.openqa.selenium.support.ui.FluentWait$1.apply(FluentWait.java:177)
> at org.openqa.selenium.support.ui.FluentWait$1.apply(FluentWait.java:175)
> at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
> at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:175)
> at org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.until(WebDriverWaitImpl.java:87)
> at org.jboss.arquillian.graphene.enricher.StaleElementInterceptor.intercept(StaleElementInterceptor.java:44)
> at org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
> at org.jboss.arquillian.graphene.intercept.InterceptorBuilder$2.intercept(InterceptorBuilder.java:139)
> at org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$2.call(GrapheneContextualHandler.java:209)
> at org.jboss.arquillian.graphene.context.BrowserActions.performAction(BrowserActions.java:62)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.invoke(GrapheneContextualHandler.java:205)
> at com.sun.proxy.$Proxy37.isDisplayed(Unknown Source)
> at org.openqa.selenium.support.ui.ExpectedConditions.elementIfVisible(ExpectedConditions.java:228)
> at org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:39)
> at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:213)
> at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:210)
> at org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:61)
> at org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:37)
> at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
> at org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.until(WebDriverWaitImpl.java:102)
> at org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.commit(WebDriverWaitImpl.java:110)
> at org.jboss.arquillian.graphene.wait.IsNotElementBuilderImpl.visible(IsNotElementBuilderImpl.java:57)
> at com.acme.example.test.AddMemberPage.addNewMember(AddMemberPage.java:38)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:130)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$1.invoke(GrapheneContextualHandler.java:159)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$2.call(GrapheneContextualHandler.java:209)
> at org.jboss.arquillian.graphene.context.BrowserActions.performAction(BrowserActions.java:62)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.invoke(GrapheneContextualHandler.java:205)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.intercept(GrapheneContextualHandler.java:229)
> at com.acme.example.test.AddMemberPage$$EnhancerByGraphene$$75cffd91.addNewMember(<generated>)
> at com.acme.example.test.DroneTest.addUser(DroneTest.java:25)
> {code}
> This looks like that visibility checker should ignore this exception, as element is in intermediate state at this moment.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQGRA-385) Unable to use Guards with AndroidDriver (again)
by Karel Piwko (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-385?page=com.atlassian.jira.plugin... ]
Karel Piwko commented on ARQGRA-385:
------------------------------------
The last working version was 2.0.0.Alpha4.
I tried the branch and it was working with Guards on all Firefox, PhantomJS and Android, so +1.
> Unable to use Guards with AndroidDriver (again)
> -----------------------------------------------
>
> Key: ARQGRA-385
> URL: https://issues.jboss.org/browse/ARQGRA-385
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.0.CR1
> Environment: Selenium APK 2.32.
> Reporter: Karel Piwko
> Priority: Critical
> Fix For: 2.0.0.Final
>
>
> It is not possible to use Guards on Android driver, it fails with following error:
> {code}
> java.lang.IllegalStateException: Can't invoke the javacript org.jboss.arquillian.graphene.guard.RequestGuardImpl#clearRequestDone()
> at org.openqa.selenium.android.library.AndroidWebDriver.throwIfError(AndroidWebDriver.java:1024)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeRawScript(AndroidWebDriver.java:895)
> at org.openqa.selenium.android.library.AndroidWebDriver.injectJavascript(AndroidWebDriver.java:930)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeScript(AndroidWebDriver.java:786)
> at org.openqa.selenium.android.AndroidApkDriver.executeScript(AndroidApkDriver.java:106)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
> at $Proxy1.executeScript(Native Method)
> at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:209)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:1)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
> at java.lang.Thread.run(Thread.java:856)
> {code}
> I've tested both *guardAjax(...)* and *guardNoRequest(...)* guards.
> Together with ARQGRA-384, this significantly reduces usability of Graphene when combined with AndroidDriver.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQGRA-384) element().is().visible() prematurely exits with exception on Android
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-384?page=com.atlassian.jira.plugin... ]
Lukáš Fryč commented on ARQGRA-384:
-----------------------------------
The exception says:
{{Returned value cannot be converted to Boolean:}}
on line:
{{org.openqa.selenium.remote.RemoteWebElement.isDisplayed(RemoteWebElement.java:323)}}
----
The question is what is that wrong returned value. Could you insert a break-point to isDisplayed method and see what type of value is actually returned? Is it null or wrong type?
> element().is().visible() prematurely exits with exception on Android
> --------------------------------------------------------------------
>
> Key: ARQGRA-384
> URL: https://issues.jboss.org/browse/ARQGRA-384
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.0.CR1
> Reporter: Karel Piwko
> Fix For: 2.0.0.Final
>
>
> When using following call using Graphene and AndroidDriver, it often fails with an exception on Android:
> {code}
> waitGui().withMessage("Add member button is not yet present.").until().element(addMemberBtn).is().visible();
> {code}
> {code}
> addUser(com.acme.example.test.DroneTest) Time elapsed: 8.491 sec <<< ERROR!
> org.openqa.selenium.WebDriverException: Returned value cannot be converted to Boolean: [org.openqa.selenium.remote.RemoteWebElement@30 -> unknown locator]
> Build info: version: '2.35.0', revision: '8df0c6bedf70ff9f22c647788f9fe9c8d22210e2', time: '2013-08-17 12:46:41'
> System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-358.18.1.el6.x86_64', java.version: '1.7.0_25'
> Driver info: driver.version: unknown
> at org.openqa.selenium.remote.RemoteWebElement.isDisplayed(RemoteWebElement.java:323)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:130)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$1.invoke(GrapheneContextualHandler.java:159)
> at org.jboss.arquillian.graphene.enricher.SearchContextInterceptor.intercept(SearchContextInterceptor.java:50)
> at org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
> at org.jboss.arquillian.graphene.enricher.StaleElementInterceptor$1.apply(StaleElementInterceptor.java:48)
> at org.jboss.arquillian.graphene.enricher.StaleElementInterceptor$1.apply(StaleElementInterceptor.java:44)
> at org.openqa.selenium.support.ui.FluentWait$1.apply(FluentWait.java:177)
> at org.openqa.selenium.support.ui.FluentWait$1.apply(FluentWait.java:175)
> at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
> at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:175)
> at org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.until(WebDriverWaitImpl.java:87)
> at org.jboss.arquillian.graphene.enricher.StaleElementInterceptor.intercept(StaleElementInterceptor.java:44)
> at org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
> at org.jboss.arquillian.graphene.intercept.InterceptorBuilder$2.intercept(InterceptorBuilder.java:139)
> at org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$2.call(GrapheneContextualHandler.java:209)
> at org.jboss.arquillian.graphene.context.BrowserActions.performAction(BrowserActions.java:62)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.invoke(GrapheneContextualHandler.java:205)
> at com.sun.proxy.$Proxy37.isDisplayed(Unknown Source)
> at org.openqa.selenium.support.ui.ExpectedConditions.elementIfVisible(ExpectedConditions.java:228)
> at org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:39)
> at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:213)
> at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:210)
> at org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:61)
> at org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:37)
> at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
> at org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.until(WebDriverWaitImpl.java:102)
> at org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.commit(WebDriverWaitImpl.java:110)
> at org.jboss.arquillian.graphene.wait.IsNotElementBuilderImpl.visible(IsNotElementBuilderImpl.java:57)
> at com.acme.example.test.AddMemberPage.addNewMember(AddMemberPage.java:38)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:130)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$1.invoke(GrapheneContextualHandler.java:159)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$2.call(GrapheneContextualHandler.java:209)
> at org.jboss.arquillian.graphene.context.BrowserActions.performAction(BrowserActions.java:62)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.invoke(GrapheneContextualHandler.java:205)
> at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.intercept(GrapheneContextualHandler.java:229)
> at com.acme.example.test.AddMemberPage$$EnhancerByGraphene$$75cffd91.addNewMember(<generated>)
> at com.acme.example.test.DroneTest.addUser(DroneTest.java:25)
> {code}
> This looks like that visibility checker should ignore this exception, as element is in intermediate state at this moment.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQGRA-385) Unable to use Guards with AndroidDriver (again)
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-385?page=com.atlassian.jira.plugin... ]
Lukáš Fryč edited comment on ARQGRA-385 at 9/30/13 10:12 AM:
-------------------------------------------------------------
I have tried to fix this issue in this branch: https://github.com/arquillian/arquillian-graphene/tree/ARQGRA-385
Karel, could you please check that version out and give it a try once again?s
was (Author: lfryc):
I have tried to fix this issue in this branch: https://github.com/arquillian/arquillian-graphene/tree/ARQGRA-385
Karel, could you please check that version out and try it?
> Unable to use Guards with AndroidDriver (again)
> -----------------------------------------------
>
> Key: ARQGRA-385
> URL: https://issues.jboss.org/browse/ARQGRA-385
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.0.CR1
> Environment: Selenium APK 2.32.
> Reporter: Karel Piwko
> Priority: Critical
> Fix For: 2.0.0.Final
>
>
> It is not possible to use Guards on Android driver, it fails with following error:
> {code}
> java.lang.IllegalStateException: Can't invoke the javacript org.jboss.arquillian.graphene.guard.RequestGuardImpl#clearRequestDone()
> at org.openqa.selenium.android.library.AndroidWebDriver.throwIfError(AndroidWebDriver.java:1024)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeRawScript(AndroidWebDriver.java:895)
> at org.openqa.selenium.android.library.AndroidWebDriver.injectJavascript(AndroidWebDriver.java:930)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeScript(AndroidWebDriver.java:786)
> at org.openqa.selenium.android.AndroidApkDriver.executeScript(AndroidApkDriver.java:106)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
> at $Proxy1.executeScript(Native Method)
> at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:209)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:1)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
> at java.lang.Thread.run(Thread.java:856)
> {code}
> I've tested both *guardAjax(...)* and *guardNoRequest(...)* guards.
> Together with ARQGRA-384, this significantly reduces usability of Graphene when combined with AndroidDriver.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQGRA-385) Unable to use Guards with AndroidDriver (again)
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-385?page=com.atlassian.jira.plugin... ]
Lukáš Fryč commented on ARQGRA-385:
-----------------------------------
I have tried to fix this issue in this branch: https://github.com/arquillian/arquillian-graphene/tree/ARQGRA-385
Karel, could you please check that version out and try it?
> Unable to use Guards with AndroidDriver (again)
> -----------------------------------------------
>
> Key: ARQGRA-385
> URL: https://issues.jboss.org/browse/ARQGRA-385
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.0.CR1
> Environment: Selenium APK 2.32.
> Reporter: Karel Piwko
> Priority: Critical
> Fix For: 2.0.0.Final
>
>
> It is not possible to use Guards on Android driver, it fails with following error:
> {code}
> java.lang.IllegalStateException: Can't invoke the javacript org.jboss.arquillian.graphene.guard.RequestGuardImpl#clearRequestDone()
> at org.openqa.selenium.android.library.AndroidWebDriver.throwIfError(AndroidWebDriver.java:1024)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeRawScript(AndroidWebDriver.java:895)
> at org.openqa.selenium.android.library.AndroidWebDriver.injectJavascript(AndroidWebDriver.java:930)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeScript(AndroidWebDriver.java:786)
> at org.openqa.selenium.android.AndroidApkDriver.executeScript(AndroidApkDriver.java:106)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
> at $Proxy1.executeScript(Native Method)
> at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:209)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:1)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
> at java.lang.Thread.run(Thread.java:856)
> {code}
> I've tested both *guardAjax(...)* and *guardNoRequest(...)* guards.
> Together with ARQGRA-384, this significantly reduces usability of Graphene when combined with AndroidDriver.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQ-1509) Arquillian Droidium Multiple Container does not work correctly when used standalone
by Stefan Miklosovic (JIRA)
[ https://issues.jboss.org/browse/ARQ-1509?page=com.atlassian.jira.plugin.s... ]
Stefan Miklosovic commented on ARQ-1509:
----------------------------------------
"If you indeed put Android container there, it is started even if it would actually never be used due to fact you asked for Firefox Browser" - that is right however I do not know how that should be implemented. Is it even possible to start the container on purpose when both of them are configured in arq.xml? When you do not want that container in the ContainerRegistry, you have to decide that android container is not going to be added there (so it will not be started) which in turn means there has to be some logic behind which scans arquillian.xml and scans webdriver extensions to test them of the presence of android browser configuration property.
I do not say it is wrong idea but I do not like the fact that container implementation depends / knows something "outside" like extensions ... it should be totally isolated from anything else.
Since DroidiumNativeConfiguration and DroidiumWebConfiguration are treated before Android container startup, I could do that logic in extensions and I would remove Android container from already filled container registry so when StartContainer gets treated, there will be only JBoss container to start since there is no android browser for drone extension which in turn means android container should not be started.
> Arquillian Droidium Multiple Container does not work correctly when used standalone
> -----------------------------------------------------------------------------------
>
> Key: ARQ-1509
> URL: https://issues.jboss.org/browse/ARQ-1509
> Project: Arquillian
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Extension - Droidium
> Affects Versions: droidium_1.0.0.Alpha1
> Reporter: Karel Piwko
> Priority: Critical
>
> Supposing you want to use web based testing with Droidium.
> In such case, you have a pretty specific configuration in arquillian.xml, as you need to enable multiple containers.
> However, if you don't want to run Android - you are for instance testing with Firefox, so no Android container is needed, then you need to create a separate <group> in order to do that.
> Otherwise, MultipleContainer Extension will let Arquillian create container def for each <container> in the group, leading to attempt to create JBoss AS - or whatever is you web container - using Android container configuration.
> This will obvisously fail, for instance with
> {code}
> org.jboss.arquillian.container.spi.ConfigurationException: jbossHome 'null' must exist
> at org.jboss.arquillian.container.spi.client.deployment.Validate.configurationDirectoryExists(Validate.java:139)
> {code}
> So, if you put only multicontainer extension jar into <dependencies>, behavior is broken. If you don't put anything there, you already have tailed arq.xml to be used with multiple container. If you indeed put Android container there, it is started even if it would actually never be used due to fact you asked for Firefox Browser.
> This represents a serious usability issues, hence marked as Critical.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQGRA-385) Unable to use Guards with AndroidDriver (again)
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-385?page=com.atlassian.jira.plugin... ]
Lukáš Fryč commented on ARQGRA-385:
-----------------------------------
[~jpapouse] was able to make this work last time by adding semi-colons:
https://github.com/arquillian/arquillian-graphene/commit/108b9d61e960b5cf...
> Unable to use Guards with AndroidDriver (again)
> -----------------------------------------------
>
> Key: ARQGRA-385
> URL: https://issues.jboss.org/browse/ARQGRA-385
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.0.CR1
> Environment: Selenium APK 2.32.
> Reporter: Karel Piwko
> Priority: Critical
> Fix For: 2.0.0.Final
>
>
> It is not possible to use Guards on Android driver, it fails with following error:
> {code}
> java.lang.IllegalStateException: Can't invoke the javacript org.jboss.arquillian.graphene.guard.RequestGuardImpl#clearRequestDone()
> at org.openqa.selenium.android.library.AndroidWebDriver.throwIfError(AndroidWebDriver.java:1024)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeRawScript(AndroidWebDriver.java:895)
> at org.openqa.selenium.android.library.AndroidWebDriver.injectJavascript(AndroidWebDriver.java:930)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeScript(AndroidWebDriver.java:786)
> at org.openqa.selenium.android.AndroidApkDriver.executeScript(AndroidApkDriver.java:106)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
> at $Proxy1.executeScript(Native Method)
> at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:209)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:1)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
> at java.lang.Thread.run(Thread.java:856)
> {code}
> I've tested both *guardAjax(...)* and *guardNoRequest(...)* guards.
> Together with ARQGRA-384, this significantly reduces usability of Graphene when combined with AndroidDriver.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQGRA-385) Unable to use Guards with AndroidDriver (again)
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-385?page=com.atlassian.jira.plugin... ]
Lukáš Fryč commented on ARQGRA-385:
-----------------------------------
I think the cause is:
{code}
LOGCAT: I/AndroidWebDriver( 756): Executing: [execute script: /* * JBoss, Home of Professional Open Source * Copyright 2013, Red Hat, Inc. and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */window.Graphene = window.Graphene || {};window.Graphene.Page = window.Graphene.Page || {};window.Graphene.Page.RequestGuard = (function() { var requestType = "HTTP"; var requestState = "DONE"; var filters = []; function replaceTimeout(xhr) { xhr.originalTimeout = window.setTimeout; window.setTimeout = function(originalCallback, timeout) { if (timeout > window.Graphene.Page.RequestGuard.maximumCallbackTimeout) { xhr.originalTimeout.apply(window, arguments); } else { xhr.callbackCount += 1; var callbackArguments = []; for (var i = 0; i < arguments.length; i++) { if (i >= 2) { callbackArguments.push(arguments[i]); } } xhr.originalTimeout.call(window, function() { try { replaceTimeout(xhr); if (typeof(originalCallback) == 'string') { window.eval(originalCallback); } else { originalCallback(callbackArguments); } } finally { revertTimeout(xhr); xhr.callbackCount -= 1; xhr.tryFinish(); } }, timeout); } } } function revertTimeout(xhr) { window.setTimeout = xhr.originalTimeout; xhr.originalTimeout = null; } function enhanceXhrObject(xhr) { xhr.guarded = true; xhr.callbackCount = 0; xhr.changeState = function(type, state) { if (this.guarded) { requestType = type; requestState = state; } }; xhr.tryFinish = function() { if (this.callbackCount === 0) { this.changeState("XHR", "DONE"); } }; xhr.proceedWithCallbacks = function(context, args) { if (this.guarded) { replaceTimeout(this); try { context.proceed(args); } finally { revertTimeout(this); } } else { context.proceed(args); } }; xhr.isGuarded = function() { for (var i = 0; i < filters.length; i++) { var filter = filters[i]; try { if (!eval(filter)) { return false; } } catch (e) { console.log('failed to filter XHR request "' + filter + '": ' + e.message); } } return true; }; } return { maximumCallbackTimeout : 50, getRequestType : function() { return requestType; }, getRequestState : function() { return requestState; }, clearRequestDone : function() {
LOGCAT: W/AndroidWebDriver( 756): Exception thrown
LOGCAT: W/AndroidWebDriver( 756): org.openqa.selenium.WebDriverException: Error: {"message":"Unexpected token return"}
LOGCAT: W/AndroidWebDriver( 756): Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
LOGCAT: W/AndroidWebDriver( 756): System info: os.name: 'Linux', os.arch: 'armv7l', os.version: '2.6.29-gc497e41', java.version: '0'
LOGCAT: W/AndroidWebDriver( 756): Driver info: driver.version: EventFiringWebDriver
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.android.library.AndroidWebDriver.throwIfError(AndroidWebDriver.java:1024)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.android.library.AndroidWebDriver.executeRawScript(AndroidWebDriver.java:895)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.android.library.AndroidWebDriver.injectJavascript(AndroidWebDriver.java:930)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.android.library.AndroidWebDriver.executeScript(AndroidWebDriver.java:786)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.android.AndroidApkDriver.executeScript(AndroidApkDriver.java:106)
LOGCAT: W/AndroidWebDriver( 756): at java.lang.reflect.Method.invokeNative(Native Method)
LOGCAT: W/AndroidWebDriver( 756): at java.lang.reflect.Method.invoke(Method.java:511)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
LOGCAT: W/AndroidWebDriver( 756): at $Proxy1.executeScript(Native Method)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:209)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:1)
LOGCAT: W/AndroidWebDriver( 756): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
LOGCAT: W/AndroidWebDriver( 756): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
LOGCAT: W/AndroidWebDriver( 756): at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
LOGCAT: W/AndroidWebDriver( 756): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
LOGCAT: W/AndroidWebDriver( 756): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
LOGCAT: W/AndroidWebDriver( 756): at java.lang.Thread.run(Thread.java:856)
LOGCAT: W/AndroidWebDriver( 756): Exception: Error: {"message":"Unexpected token return"}
{code}
What is the last Graphene version which worked for you?
The problem had to be introduced in one of those commits (history of RequestGuard.js <= Alpha5):
https://github.com/arquillian/arquillian-graphene/commits/2.0.0.Alpha5/gr...
> Unable to use Guards with AndroidDriver (again)
> -----------------------------------------------
>
> Key: ARQGRA-385
> URL: https://issues.jboss.org/browse/ARQGRA-385
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.0.CR1
> Environment: Selenium APK 2.32.
> Reporter: Karel Piwko
> Priority: Critical
> Fix For: 2.0.0.Final
>
>
> It is not possible to use Guards on Android driver, it fails with following error:
> {code}
> java.lang.IllegalStateException: Can't invoke the javacript org.jboss.arquillian.graphene.guard.RequestGuardImpl#clearRequestDone()
> at org.openqa.selenium.android.library.AndroidWebDriver.throwIfError(AndroidWebDriver.java:1024)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeRawScript(AndroidWebDriver.java:895)
> at org.openqa.selenium.android.library.AndroidWebDriver.injectJavascript(AndroidWebDriver.java:930)
> at org.openqa.selenium.android.library.AndroidWebDriver.executeScript(AndroidWebDriver.java:786)
> at org.openqa.selenium.android.AndroidApkDriver.executeScript(AndroidApkDriver.java:106)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
> at $Proxy1.executeScript(Native Method)
> at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:209)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
> at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:1)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
> at java.lang.Thread.run(Thread.java:856)
> {code}
> I've tested both *guardAjax(...)* and *guardNoRequest(...)* guards.
> Together with ARQGRA-384, this significantly reduces usability of Graphene when combined with AndroidDriver.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQ-1505) Wrong handling of Android Debug Bridge initialization
by Stefan Miklosovic (JIRA)
[ https://issues.jboss.org/browse/ARQ-1505?page=com.atlassian.jira.plugin.s... ]
Stefan Miklosovic edited comment on ARQ-1505 at 9/30/13 9:21 AM:
-----------------------------------------------------------------
There are
consolePort https://github.com/arquillian/arquillian-droidium/tree/master/droidium-co...
adbPort https://github.com/arquillian/arquillian-droidium/tree/master/droidium-co...
I guess this is the third kind of port, right?
This need to be investigated, if there is some switch for the port for adb console command.
was (Author: smikloso):
There are
consolePort https://github.com/arquillian/arquillian-droidium/tree/master/droidium-co...
adbPort https://github.com/arquillian/arquillian-droidium/tree/master/droidium-co...
This need to be investigated, if there is some switch for the port for adb console command.
> Wrong handling of Android Debug Bridge initialization
> -----------------------------------------------------
>
> Key: ARQ-1505
> URL: https://issues.jboss.org/browse/ARQ-1505
> Project: Arquillian
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Extension - Droidium
> Affects Versions: droidium_1.0.0.Alpha1
> Reporter: Karel Piwko
>
> When ADB is started, but the port is already occupied by a different tooling, it logs an E/ddms message, however it continues with the execution.
> This is indeed faulty behaviour. The port should be configurable, if the port is occupied - it should fail with Unable to start container or unable to connect to the running container exception - similar to behavior you experience with other remote / managed containers.
> {code}
> org.arquillian.droidium.container.impl.AndroidBridgeImpl connect
> INFO: Connecting to the Android Debug Bridge at /home/kpiwko/apps/android-sdk-linux_x86/platform-tools/adb forceNewBridge = true
> 10:01:23 E/ddms: Could not open Selected VM debug port (8700). Make sure you do not have another instance of DDMS or of the eclipse plugin running. If it's being used by
> something else, choose a new port number in the preferences.
> Sep 27, 2013 10:01:23 PM org.arquillian.droidium.container.impl.AndroidBridgeConnector initAndroidDebugBridge
> INFO: Android Debug Bridge was initialized in 350ms.
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ARQ-1505) Wrong handling of Android Debug Bridge initialization
by Stefan Miklosovic (JIRA)
[ https://issues.jboss.org/browse/ARQ-1505?page=com.atlassian.jira.plugin.s... ]
Stefan Miklosovic commented on ARQ-1505:
----------------------------------------
There are
consolePort https://github.com/arquillian/arquillian-droidium/tree/master/droidium-co...
adbPort https://github.com/arquillian/arquillian-droidium/tree/master/droidium-co...
This need to be investigated, if there is some switch for the port for adb console command.
> Wrong handling of Android Debug Bridge initialization
> -----------------------------------------------------
>
> Key: ARQ-1505
> URL: https://issues.jboss.org/browse/ARQ-1505
> Project: Arquillian
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Extension - Droidium
> Affects Versions: droidium_1.0.0.Alpha1
> Reporter: Karel Piwko
>
> When ADB is started, but the port is already occupied by a different tooling, it logs an E/ddms message, however it continues with the execution.
> This is indeed faulty behaviour. The port should be configurable, if the port is occupied - it should fail with Unable to start container or unable to connect to the running container exception - similar to behavior you experience with other remote / managed containers.
> {code}
> org.arquillian.droidium.container.impl.AndroidBridgeImpl connect
> INFO: Connecting to the Android Debug Bridge at /home/kpiwko/apps/android-sdk-linux_x86/platform-tools/adb forceNewBridge = true
> 10:01:23 E/ddms: Could not open Selected VM debug port (8700). Make sure you do not have another instance of DDMS or of the eclipse plugin running. If it's being used by
> something else, choose a new port number in the preferences.
> Sep 27, 2013 10:01:23 PM org.arquillian.droidium.container.impl.AndroidBridgeConnector initAndroidDebugBridge
> INFO: Android Debug Bridge was initialized in 350ms.
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 3 months