Hi Francois

I googled about waitFor... methods and found this
http://agilesoftwaretesting.com/?p=111

The waitFor methods get messed up as the page that three zones which were
refreshing. So, I created two separate tests

also i replaced the checkZoneValues() method to

   private void checkZoneValues(String zone, int times) throws Exception
   {
      for(int i = 1; i <= times; ++i)
      {
         //Wait for ajax call to begin

 
waitForCondition("selenium.browserbot.getCurrentWindow().Ajax.activeRequestCount
!= 0", "20000");

         //Wait for ajax call from end

 
waitForCondition("selenium.browserbot.getCurrentWindow().Ajax.activeRequestCount
== 0", "20000");

         //Check the value changed
         assertText(zone, String.valueOf(i));
      }
   }

It first waits for a ajax call to begin and then waits for it to end and
then checks the value. So it will be good enough for even a slow server (20
seconds wait)

Thanks Igor for pointing it out and very very thanks Francois for adding
this patch

regards
Taha


2011/7/2 françois facon <fra.fa...@gmail.com>

> Thanks for your advise Igor.
> I will change that test.
> Regards
> François
>
> 2011/7/2 Igor Drobiazko <igor.drobia...@gmail.com>:
> > It's highly likely that this wait condition will break the build once the
> > build machine is busy. You should make use of Selenium's wait conditions.
> > Check out the wait methods like waitForElementToAppear, etc.
> >
> > On Sat, Jul 2, 2011 at 12:14 PM, <ffa...@apache.org> wrote:
> >>
> >> +
> >> +
> >> +   private void checkZoneValues(String zone, int times) throws
> Exception
> >> +   {
> >> +      Thread.sleep(300);
> >> +      for(int i = 0; i < times; ++i)
> >> +      {
> >> +         assertText(zone, String.valueOf(i));
> >> +         Thread.sleep(1000);
> >> +      }
> >> +   }
> >> +
> >> +}
> >
> >
> >
> > --
> > Best regards,
> >
> > Igor Drobiazko
> > http://tapestry5.de
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: dev-h...@tapestry.apache.org
>
>
Index: src/test/app1/ZoneRefreshWithHandlerReturningVoid.tml
===================================================================
--- src/test/app1/ZoneRefreshWithHandlerReturningVoid.tml	(revision 1142235)
+++ src/test/app1/ZoneRefreshWithHandlerReturningVoid.tml	(working copy)
@@ -1,20 +1,12 @@
 <html xmlns:t='http://tapestry.apache.org/schema/tapestry_5_1_0.xsd'>
    <head>
    </head>
-
+   
    <body>
-      Counter 1:
-      <span t:type='zone' t:mixins='zonerefresh' t:period='1' id='zone' t:id='zone'>
+      Using zone with event handler returning void : 
+      <span t:type='zone' t:mixins='zonerefresh' t:period='2' id='zone' t:id='zone'>
          ${counter}
       </span>
-
-      <br />
-      Counter 2 :
-      <span t:type='zone' t:mixins='zonerefresh' t:period='1' t:id='zone2' id='zone2'>${counter2}</span>
-      <br />
-      Counter 3 :
-      <span t:type='zone' t:mixins='zonerefresh' t:period='1' t:id='zone3' id='zone3'>${counter3}</span>
-      and
-      <span t:type='zone' t:id='zone4' id='zone4'>${counter3}</span>
    </body>
+   
 </html>
\ No newline at end of file
Index: src/test/app1/ZoneRefreshWithHandlerReturningZone.tml
===================================================================
--- src/test/app1/ZoneRefreshWithHandlerReturningZone.tml	(revision 0)
+++ src/test/app1/ZoneRefreshWithHandlerReturningZone.tml	(revision 0)
@@ -0,0 +1,15 @@
+<html xmlns:t='http://tapestry.apache.org/schema/tapestry_5_1_0.xsd'>
+   <head>
+   </head>
+
+   <body>
+      Using zone with event handler returning zone :
+      <span t:type='zone' t:mixins='zonerefresh' t:period='2' id='zone' t:id='zone'>
+         ${counter}
+      </span>
+      <br />
+      <span t:type='zone' id='zone2' t:id='zone2'>
+         and another zone ${counter}
+      </span>
+   </body>
+</html>
\ No newline at end of file
Index: src/test/app1/Index.tml
===================================================================
--- src/test/app1/Index.tml	(revision 1142235)
+++ src/test/app1/Index.tml	(working copy)
@@ -130,9 +130,13 @@
       -- error reporting for adding a duplicate mixin to a component
     </li>
     <li>
-       <a href="ZoneRefreshDemo">Zone Refresh Demo</a>
-       -- refreshes zone after 5 seconds
+       <a href="ZoneRefreshWithHandlerReturningVoid">Zone Refresh With Event Handler Returning Void</a>
+       -- refreshes zone with an event handler returning void
     </li>
+        <li>
+       <a href="ZoneRefreshWithHandlerReturningZone">Zone Refresh With Event Handler Returning Zone</a>
+       -- refreshes zone with an event handler returning zone
+    </li>
     <li>
       <a href="UnsupportedParameterBlockDemo">Unsupported Parameter Block Demo</a>
       -- informal block parameter to a component that does not support informal parameters
Index: src/test/app1/ZoneRefreshDemo.tml
===================================================================
--- src/test/app1/ZoneRefreshDemo.tml	(revision 1142235)
+++ src/test/app1/ZoneRefreshDemo.tml	(working copy)
@@ -1,20 +0,0 @@
-<html xmlns:t='http://tapestry.apache.org/schema/tapestry_5_1_0.xsd'>
-   <head>
-   </head>
-
-   <body>
-      Counter 1:
-      <span t:type='zone' t:mixins='zonerefresh' t:period='1' id='zone' t:id='zone'>
-         ${counter}
-      </span>
-
-      <br />
-      Counter 2 :
-      <span t:type='zone' t:mixins='zonerefresh' t:period='1' t:id='zone2' id='zone2'>${counter2}</span>
-      <br />
-      Counter 3 :
-      <span t:type='zone' t:mixins='zonerefresh' t:period='1' t:id='zone3' id='zone3'>${counter3}</span>
-      and
-      <span t:type='zone' t:id='zone4' id='zone4'>${counter3}</span>
-   </body>
-</html>
\ No newline at end of file
Index: src/test/java/org/apache/tapestry5/integration/app1/pages/CopyOfZoneRefreshWithHandlerReturningVoid.java
===================================================================
--- src/test/java/org/apache/tapestry5/integration/app1/pages/CopyOfZoneRefreshWithHandlerReturningVoid.java	(revision 0)
+++ src/test/java/org/apache/tapestry5/integration/app1/pages/CopyOfZoneRefreshWithHandlerReturningVoid.java	(revision 0)
@@ -0,0 +1,46 @@
+// Copyright 2011 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package org.apache.tapestry5.integration.app1.pages;
+
+import org.apache.tapestry5.ajax.MultiZoneUpdate;
+import org.apache.tapestry5.annotations.InjectComponent;
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.corelib.components.Zone;
+
+public class CopyOfZoneRefreshWithHandlerReturningVoid
+{
+   @Persist
+   @Property
+   private int counter;
+   
+   @InjectComponent
+   private Zone zone;
+   
+   @InjectComponent
+   private Zone zone2;
+
+   
+   void setupRender()
+   {
+      counter = 0;
+   }
+   
+   Object onRefreshFromZone(){
+      counter++;
+      return new MultiZoneUpdate(zone).add(zone2);
+   }
+
+}
+
Index: src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshDemo.java
===================================================================
--- src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshDemo.java	(revision 1142235)
+++ src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshDemo.java	(working copy)
@@ -1,69 +0,0 @@
-// Copyright 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Zone;
-
-public class ZoneRefreshDemo
-{
-   @Persist
-   @Property
-   private int counter;
-   
-   @Persist
-   @Property
-   private int counter2;
-   
-   @Persist
-   @Property
-   private int counter3;
-   
-   @InjectComponent
-   private Zone zone2;
-   
-   @InjectComponent
-   private Zone zone3;
-   
-   @InjectComponent
-   private Zone zone4;
-   
-   void setupRender()
-   {
-      counter = 0;
-      counter2 = 0;
-      counter3 = 0;
-   }
-   
-   void onRefreshFromZone()
-   {
-      counter++;
-   }
-   
-   Zone onRefreshFromZone2()
-   {
-      counter2++;
-      return zone2;
-   }
-   
-   Object onRefreshFromZone3(){
-      counter3++;
-      return new MultiZoneUpdate(zone3).add(zone4);
-   }
-
-}
-
Index: src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshWithHandlerReturningVoid.java
===================================================================
--- src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshWithHandlerReturningVoid.java	(revision 0)
+++ src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshWithHandlerReturningVoid.java	(revision 0)
@@ -0,0 +1,35 @@
+// Copyright 2011 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package org.apache.tapestry5.integration.app1.pages;
+
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.annotations.Property;
+
+public class ZoneRefreshWithHandlerReturningVoid
+{
+   @Persist
+   @Property
+   private int counter;
+   
+   void setupRender()
+   {
+      counter = 0;
+   }
+   
+   void onRefreshFromZone(){
+      counter++;
+   }
+
+}
+
Index: src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshWithHandlerReturningZone.java
===================================================================
--- src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshWithHandlerReturningZone.java	(revision 1142235)
+++ src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneRefreshWithHandlerReturningZone.java	(working copy)
@@ -19,51 +19,27 @@
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.corelib.components.Zone;
 
-public class ZoneRefreshDemo
+public class ZoneRefreshWithHandlerReturningZone
 {
    @Persist
    @Property
    private int counter;
    
-   @Persist
-   @Property
-   private int counter2;
+   @InjectComponent
+   private Zone zone;
    
-   @Persist
-   @Property
-   private int counter3;
-   
    @InjectComponent
    private Zone zone2;
+
    
-   @InjectComponent
-   private Zone zone3;
-   
-   @InjectComponent
-   private Zone zone4;
-   
    void setupRender()
    {
       counter = 0;
-      counter2 = 0;
-      counter3 = 0;
    }
    
-   void onRefreshFromZone()
-   {
+   Object onRefreshFromZone(){
       counter++;
+      return new MultiZoneUpdate(zone).add(zone2);
    }
-   
-   Zone onRefreshFromZone2()
-   {
-      counter2++;
-      return zone2;
-   }
-   
-   Object onRefreshFromZone3(){
-      counter3++;
-      return new MultiZoneUpdate(zone3).add(zone4);
-   }
 
 }
-
Index: src/test/java/org/apache/tapestry5/integration/app1/ZoneRefreshTest.java
===================================================================
--- src/test/java/org/apache/tapestry5/integration/app1/ZoneRefreshTest.java	(revision 1142235)
+++ src/test/java/org/apache/tapestry5/integration/app1/ZoneRefreshTest.java	(working copy)
@@ -20,37 +20,33 @@
 public class ZoneRefreshTest extends SeleniumTestCase
 {
    @Test
-   public void test_if_zone_with_void_event_handler_works() throws Exception
+   public void test_if_zone_with_event_handler_returning_void_works() throws Exception
    {
       openBaseURL();
-      clickAndWait("link=Zone Refresh Demo");
+      clickAndWait("link=Zone Refresh With Event Handler Returning Void");
       checkZoneValues("zone", 3);
    }
-   
+
    @Test
-   public void test_if_zone_with_single_zone_event_handler_works() throws Exception
+   public void test_if_zone_with_event_handler_returning_zone_works() throws Exception
    {
       openBaseURL();
-      clickAndWait("link=Zone Refresh Demo");
-      checkZoneValues("zone2", 3);
+      clickAndWait("link=Zone Refresh With Event Handler Returning Zone");
+      checkZoneValues("zone", 3);
    }
-   
-   @Test
-   public void test_if_zone_with_multiple_zone_event_handler_works() throws Exception
-   {
-      openBaseURL();
-      clickAndWait("link=Zone Refresh Demo");
-      checkZoneValues("zone4", 3);
-   }
-   
 
    private void checkZoneValues(String zone, int times) throws Exception
    {
-      Thread.sleep(300);
-      for(int i = 0; i < times; ++i)
+      for(int i = 1; i <= times; ++i)
       {
+         //Wait for ajax call to begin
+         waitForCondition("selenium.browserbot.getCurrentWindow().Ajax.activeRequestCount != 0", "20000");
+         
+         //Wait for ajax call from end
+         waitForCondition("selenium.browserbot.getCurrentWindow().Ajax.activeRequestCount == 0", "20000");
+         
+         //Check the value changed
          assertText(zone, String.valueOf(i));
-         Thread.sleep(1000);
       }
    }
 
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to