Tomas
Tomas

Reputation: 1467

nightWatch resizeWindow sets different values on different browsers

module.exports = {
    "resizeWindow" : function (browser) {
        browser
            .url("about:blank")
            .waitForElementVisible("body", 1)
            .resizeWindow(960, 600)
            .execute(function(){
                alert(document.body.clientWidth);
            })
    }
};

alert values: internet explorer: 944 chrome: 944 firfefox: 946

It could at least all be the same

I also opened an issue on github: https://github.com/beatfactor/nightwatch/issues/377

any ideas ? :)

edit:

I found the problem is that selenium sets browser window width which unless maximized, has its frame and browser body width is always narrower than window width.

enter image description here

Any ideas how to set browser body width, not window width ?

Upvotes: 2

Views: 2291

Answers (1)

GrayedFox
GrayedFox

Reputation: 2553

If you know the difference between the window width and body width, you could write a custom command which takes the browser as an argument and resizes it based on the current browser environment.

I.e

exports.command = function() {
    var browserName = this.options.desiredCapabilities.browserName;

    if (browserName === 'firefox') {
      this
        .resizeWindow(974, 600)
    }
  // allows command to be chained
  return this;
};

It's not the most elegant solution, but it should work. Add whatever other browsers you need, with the correct width + browserWidthOffset, and simply call it at the beginning of each test.

Upvotes: 1

Related Questions