Making FEST to wait for the application to load

877 views Asked by At

I am new to FEST based GUI Testing.

MyFrame is the root class for my application.

 @Before    
      public void onSetUp() {

        MyFrame frame = GuiActionRunner.execute(new GuiQuery<MyFrame>() {
            protected MyFrame executeInEDT() {
              return new MyFrame();  
            }
        });

        frame2 = new FrameFixture(robot(), frame);

        frame2.show(); // shows the frame to test
      }

When I run the test case,

@Test public void testGui()
      {
          String rs = frame2.label("hl").text().toString();
                  assertTrue(rs.equals("First")); 
      }

The above method doesn't print the actual string present in the label.

I think the FEST API is not waiting for the application to load.

Is there any methods available to postpone the GUI element lookup ?

2

There are 2 answers

0
FredFloete On

Maybe you can use the pause method from org.fest.swing.timing.

Have a look here http://fest.easytesting.org/swing/apidocs/org/fest/swing/timing/Pause.html

0
Simulant On
//do your clicks
fixture.robot.waitForIdle();//give the GUI time to update
//do your asserts

this will pause your Code until your GUI has nothing left to update. The advantage to Pause is, that you do not have to wait longer than you need by passing a to large time interval.