I am new on webtest, so I am not sure if this is the correct solution but it
works. This is how I use it. Note that I use the ant.group
public class SeoHomepageAllCountriesTest extends WebtestCase {
public void testSeoStructure() {
List dataDriven = new
SeoHomepageAllCountriesTestProvider().getData()
dataDriven.each(){test ->
webtest("$test.metatag_id - Testing Title - Meta Description -
MetaKeyword"){
config (haltonerror: "false", haltonfailure: "false")
checkSeo test.url, test.title, test.metadescription,
test.metakeyword, {}
}
}
}
private checkSeo (String url , String title, String metadescription,
String metakeyword , Closure verification) {
ant.group description: "Checking Metatag ID",
{
enableJavaScript enable:"false"
invoke url:"http://$url", description:"Go to $url",
saveResponse:"false"
verifyTitle description:"Home Page Title is the correct one " ,
text: "$title"
verifyXPath description:"Checks MetaDescription is the correct
one" , xpath:"//me...@name='description']/@content" , text:
"$metadescription"
verifyXPath description:"Checks Meta Keyword is the correct one"
, xpath:"//me...@name='keywords']/@content" , text: "$metakeyword"
//verifyXPath description:"Checks Header Keyword is the correct
one" , xpath:"//h...@id='header_keywords']/strong" , text:headerKeyword
verification.delegate = ant
verification()
}
}
}
2009/8/5 bestguy <[email protected]>
>
> Hi,
>
> I've been writing Groovy-only WebTests, which works great.
> However, stumbling on how to define and reuse a "macro" which consists of
> other webtest calls.
>
> In this case, I want to call these two steps:
>
> invoke(url:
> "http://validator.w3.org/check?uri=${it}<http://validator.w3.org/check?uri=$%7Bit%7D>
> ")
> verifyXPath(xpath: "id('form')/table/tbody/tr[1]/t...@class='valid']")
>
> and wrap them in a simple call such as
> validator("http://www.blah.com")
>
> I'd like to define these somewhere an reuse them.
>
> However, can't seem to get this to work. Approaches like this fail:
>
> class BlahTest extends WebtestCase {
>
> void testList() {
> def validator = {
> invoke(url:
> "
> http://validator.w3.org/check?uri=${it}&charset=%28detect+automatically%29&doctype=Inline&group=0<http://validator.w3.org/check?uri=$%7Bit%7D&charset=%28detect+automatically%29&doctype=Inline&group=0>
> ")
> verifyXPath(xpath:
> "id('form')/table/tbody/tr[1]/t...@class='valid']")
> }
>
> webtest("List Pages") {
> validator("http://www.wordpress.com")
> }
> }
> }
>
>
> The only way that seems to work is if you embed the closure in the webtest
> itself:
>
> webtest("List Pages") {
> def validator = {
> invoke(url:
> "http://validator.w3.org/check?uri=${it}<http://validator.w3.org/check?uri=$%7Bit%7D>
> ")
> verifyXPath(xpath:
> "id('form')/table/tbody/tr[1]/t...@class='valid']")
> }
>
> validator("http://www.wordpress.com")
> }
>
>
> but that sort of limits the usefulness of this.
>
> Any ideas?
>
>
> Thanks,
> G
> --
> View this message in context:
> http://www.nabble.com/Groovy-equivalent-of-macro--tp24820735p24820735.html
> Sent from the WebTest mailing list archive at Nabble.com.
>
> _______________________________________________
> WebTest mailing list
> [email protected]
> http://lists.canoo.com/mailman/listinfo/webtest
>