[arquillian-issues] [JBoss JIRA] (ARQGRA-435) Graphene wait does not find @Qualified browser

Juraj Húska (JIRA) issues at jboss.org
Tue Apr 29 06:26:37 EDT 2014


    [ https://issues.jboss.org/browse/ARQGRA-435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12964330#comment-12964330 ] 

Juraj Húska edited comment on ARQGRA-435 at 4/29/14 6:25 AM:
-------------------------------------------------------------

I am not sure whether the reported test should work.

Everywhere where multiple browser feature is employed, one has to annotate also his WebElements, Page Fragments, Page Objects with browser qualifier, to denote a browser it will resolved with.

Thus the mentioned example works when changed as:
{code}
...
@FindBy(id = "name")
@BugReport
WebElement nameField;
...
{code}

So for me it is expected. However, I am not sure whether it is a wished behavior. Guys ?
                
      was (Author: jhuska):
    I am not sure whether the reported test should work.

Everywhere where multiple browser feature is employed, one has to also annotate his {{WebElement}}s, Page Fragments, Page Objects with browser qualifier, to denote a browser it will resolved with.

Thus the mentioned example works when changed as:
{code}
...
@FindBy(id = "name")
@BugReport
WebElement nameField;
...
{code}

So for me it is expected. However, I am not sure whether it is a wished behavior. Guys ?
                  
> Graphene wait does not find @Qualified browser
> ----------------------------------------------
>
>                 Key: ARQGRA-435
>                 URL: https://issues.jboss.org/browse/ARQGRA-435
>             Project: Arquillian Graphene
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.0.2.Final
>            Reporter: Karel Piwko
>            Assignee: Juraj Húska
>            Priority: Critical
>             Fix For: 2.0.3.Final
>
>
> It is not possible to wait when browser is qualifiered:
> {code}
> package com.acme.example.test;
> import java.lang.annotation.Retention;
> import java.lang.annotation.RetentionPolicy;
> import java.net.URL;
> import org.jboss.arquillian.container.test.api.Deployment;
> import org.jboss.arquillian.drone.api.annotation.Drone;
> import org.jboss.arquillian.drone.api.annotation.Qualifier;
> import org.jboss.arquillian.graphene.Graphene;
> import org.jboss.arquillian.junit.Arquillian;
> import org.jboss.arquillian.test.api.ArquillianResource;
> import org.jboss.shrinkwrap.api.Archive;
> import org.junit.Assert;
> import org.junit.Test;
> import org.junit.runner.RunWith;
> import org.openqa.selenium.WebDriver;
> import org.openqa.selenium.WebElement;
> import org.openqa.selenium.support.FindBy;
> @RunWith(Arquillian.class)
> public class GrapheneBugDroneTest {
>     @Drone
>     @BugReport
>     WebDriver driver;
>     @Deployment(testable = false)
>     public static Archive<?> deployHtml5DemoApp() {
>         return Deployments.createDeployment();
>     }
>     @ArquillianResource
>     URL url;
>     @FindBy(id = "name")
>     WebElement nameField;
>     @Test
>     public void addUser() throws Exception {
>         driver.get(url.toString());
>         Graphene.waitGui(driver).until().element(nameField).is().present();
>         Assert.assertTrue(true);
>     }
>     @Qualifier
>     @Retention(RetentionPolicy.RUNTIME)
>     public static @interface BugReport {
>     }
> }
> {code}
> Wait *Graphene.waitGui(driver).until().element(nameField).is().present();*
> fails with 
> {code}
> java.lang.IllegalStateException: There is no context available for qualifier org.jboss.arquillian.drone.api.annotation.Default. Available contexts are [interface com.acme.example.test.GrapheneBugDroneTest$BugReport].
> 	at org.jboss.arquillian.graphene.context.GrapheneContextImpl$LazyContext.getContext(GrapheneContextImpl.java:302)
> 	at org.jboss.arquillian.graphene.context.GrapheneContextImpl$LazyContext.getConfiguration(GrapheneContextImpl.java:234)
> 	at org.jboss.arquillian.graphene.DefaultGrapheneRuntime.waitGui(DefaultGrapheneRuntime.java:104)
> 	at org.jboss.arquillian.graphene.Graphene.waitGui(Graphene.java:216)
> 	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.enricher.SearchContextInterceptor.intercept(SearchContextInterceptor.java:50)
> 	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.$Proxy28.isDisplayed(Unknown Source)
> 	at org.jboss.arquillian.graphene.condition.element.ElementIsPresent.check(ElementIsPresent.java:44)
> 	at org.jboss.arquillian.graphene.condition.element.ElementIsPresent.check(ElementIsPresent.java:31)
> 	at org.jboss.arquillian.graphene.condition.element.AbstractElementBooleanCondition.apply(AbstractElementBooleanCondition.java:52)
> 	at org.jboss.arquillian.graphene.condition.element.AbstractElementBooleanCondition.apply(AbstractElementBooleanCondition.java:33)
> 	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.present(IsNotElementBuilderImpl.java:47)
> 	at com.acme.example.test.GrapheneBugDroneTest.addUser(GrapheneBugDroneTest.java:42)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> 	at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:273)
> 	at org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:60)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
> 	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
> 	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
> 	at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
> 	at org.jboss.arquillian.container.test.impl.execution.ClientTestExecuter.execute(ClientTestExecuter.java:53)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
> 	at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:142)
> 	at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createTestContext(ContainerEventController.java:129)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> 	at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:102)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> 	at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:84)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> 	at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> 	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
> 	at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:111)
> 	at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:266)
> 	at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:229)
> 	at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:317)
> 	at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:46)
> 	at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:243)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
> 	at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:188)
> 	at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:317)
> 	at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:46)
> 	at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:202)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> 	at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:150)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> {code}
> Arquillian configuration:
> * Core 1.1.4.Final
> * Graphene 2.0.2.Final
> * Drone 2.0.0.Alpha1

--
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



More information about the arquillian-issues mailing list