[arquillian-issues] [JBoss JIRA] (ARQGRA-446) Add support for Groovy page objects

Lukáš Fryč (JIRA) issues at jboss.org
Wed Jul 30 04:30:29 EDT 2014


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

Lukáš Fryč commented on ARQGRA-446:
-----------------------------------

Merged, to be released as part of {{2.1.0.Alpha1}} and back-ported to {{2.0.x}} if necessary.

> Add support for Groovy page objects
> -----------------------------------
>
>                 Key: ARQGRA-446
>                 URL: https://issues.jboss.org/browse/ARQGRA-446
>             Project: Arquillian Graphene
>          Issue Type: Enhancement
>      Security Level: Public(Everyone can see) 
>          Components: configuration, core
>    Affects Versions: 2.0.2.Final
>            Reporter: Chris Jones
>             Fix For: 2.1.0.Alpha1
>
>         Attachments: graphene-groovy-test.zip, groovy-page-support (fixed paths).patch, groovy-page-support.patch
>
>
> Page objects written in groovy throw a StackOverflowError. There seems to be a recursive issue when proxying groovy's metaclass property.
> {code:title=GoogleGroovy.groovy|borderStyle=solid}
> package test
> import org.jboss.arquillian.graphene.page.Location
> import org.openqa.selenium.WebElement
> import org.openqa.selenium.support.FindBy
> @Location("https://www.google.com/")
> public class GoogleGroovy {
>     @FindBy
>     WebElement q
>     def search(String query){
>         q.sendKeys(query)
>         sleep(5000)
>     }
> }
> {code}
> {code:title=GoogleJava.java|borderStyle=solid}
> package test;
> import org.jboss.arquillian.graphene.page.Location;
> import org.openqa.selenium.WebElement;
> import org.openqa.selenium.support.FindBy;
> @Location("https://www.google.com/")
> public class GoogleJava {
>     @FindBy
>     WebElement q;
>     public void search(String query) throws Exception {
>         q.sendKeys(query);
>         Thread.sleep(5000);
>     }
> }
> {code}
> {code:title=GoogleTestCase.groovy|borderStyle=solid}
> package test
> import org.jboss.arquillian.drone.api.annotation.Drone
> import org.jboss.arquillian.graphene.Graphene
> import org.jboss.arquillian.junit.Arquillian
> import org.junit.Test
> import org.junit.runner.RunWith
> import org.openqa.selenium.firefox.FirefoxDriver
> @RunWith(Arquillian.class)
> class GoogleTestCase {
>     @Drone
>     FirefoxDriver driver
>     @Test
>     def void testUsingJava(){
>         def googleJava = Graphene.goTo(GoogleJava)
>         googleJava.search("hello world")
>     }
>     @Test
>     def void testUsingGroovy(){
>         def googleGroovy = Graphene.goTo(GoogleGroovy)
>         googleGroovy.search("jello world")
>     }
> }
> {code}
> {code:title=Stacktrace|borderStyle=solid}
> Jun 01, 2014 12:47:08 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__$stMC' found in test.GoogleTestCase. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:08 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__timeStamp' found in test.GoogleTestCase. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:08 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__timeStamp__239_neverHappen1401597979243' found in test.GoogleTestCase. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__$stMC' found in test.GoogleGroovy. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Package-friendly field '__$stMC' found in test.GoogleGroovy. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__timeStamp' found in test.GoogleGroovy. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Package-friendly field '__timeStamp' found in test.GoogleGroovy. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__timeStamp__239_neverHappen1401597978002' found in test.GoogleGroovy. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Package-friendly field '__timeStamp__239_neverHappen1401597978002' found in test.GoogleGroovy. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__$stMC' found in test.GoogleGroovy$$EnhancerByGraphene$$2eb2d5f8. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Package-friendly field '__$stMC' found in test.GoogleGroovy$$EnhancerByGraphene$$2eb2d5f8. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__timeStamp' found in test.GoogleGroovy$$EnhancerByGraphene$$2eb2d5f8. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Package-friendly field '__timeStamp' found in test.GoogleGroovy$$EnhancerByGraphene$$2eb2d5f8. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Public field '__timeStamp__239_neverHappen1401597978002' found in test.GoogleGroovy$$EnhancerByGraphene$$2eb2d5f8. Direct access to fields outside of the declaring class is not allowed.
> Jun 01, 2014 12:47:12 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> WARNING: Package-friendly field '__timeStamp__239_neverHappen1401597978002' found in test.GoogleGroovy$$EnhancerByGraphene$$2eb2d5f8. Direct access to fields outside of the declaring class is not allowed.
> java.lang.StackOverflowError
> 	at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.invoke(GrapheneContextualHandler.java:205)
> 	at org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.intercept(GrapheneContextualHandler.java:229)
> 	at test.GoogleGroovy$$EnhancerByGraphene$$2eb2d5f8.getMetaClass(<generated>)
> 	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.checkCall(PogoMetaClassSite.java:59)
> 	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:36)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
> 	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
> 	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
> 	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
> .....
> {code}



--
This message was sent by Atlassian JIRA
(v6.2.6#6264)



More information about the arquillian-issues mailing list