Search code examples
node.jsgruntjsgalen

galen: how to wait dynamic new page with same url


I started working with Galen and I had this test that was working perfectly:

this.HomePage = $page('Welcome Page', {
    aboutButton: 'nav.navbar .about'
});

this.AboutPage = $page('About page', {
    modalContent: 'div.modal-content',
    supportLink: '.support-link',
    dismissButton: '.dismiss'
});


var homePage = new HomePage(driver);
homePage.waitForIt();
homePage.aboutButton.click();

var aboutPage = new AboutPage(driver);
aboutPage.waitForIt();

I understand that the waitForIt method waits for all the attributes defined by page so the framework knows when to execute the next statement.

Now, I want to run this as a grunt task and I've been using grunt-galenframework, and I configured it correctly, everything is working, but I can't make the previous test pass, the task code is as follows:

load('../gl.js');

forAll(config.getDevices(), function (device) {
    test('simple test on ' + device.deviceName, function () {
        gl.openPage(device, config.getProjectPage(), "Welcome Page", {
            aboutButton: 'nav.navbar .about'
        });

        elements.aboutButton.click();

        // MISSING WAIT FOR ABOUT_PAGE

        gl.runSpecFile(device, './test/responsive/galen/about.gspec');
    });
});

As you can see, I get into the Welcome Page and then I need to click a button, wait for a dialog to appear, and then check the about.gspec specs (they verify elements inside the dialog).

So how can I add a wait for new elements to appear on the same URL? it feels like grunt-galenframework only offers wait when entering a new url, with the openPage method.


Solution

  • you could try

    elements.newElement.waitToBeShown()
    

    The methods from here should be available.

    PS: I'm the author of the grunt plugin for Galen and also involved in the development of the Galen Framework itself