Kode_12
Kode_12

Reputation: 4798

How can I set up the browser size before my protractor test runs?

I have the following protractor test listed below. It runs fine. But I need to add some code that opens the browser to full screen since my test is sensitive to pixel location of gridster tiles. How can this be done?

describe('DragAndDrop Test', function () {
require('protractor');
require('jasmine-expect');


beforeAll(function () {
    context = new Context();
    context.get();
    browser.waitForAngular();
    browser.driver.manage().window().maximize();

});

it('should drag and drop Application Experience tile', function () {

    //a = angular.element(document).find('h3')[1]
    //target is where we are dragging the box to.  Box is the Box
    var target = { x: 300, y: 50 };
    var box = element(by.cssContainingText('h3', 'Application Experience'));
    var infoSpot = element(by.cssContainingText('h3', 'Application Experience'));


    //scope is going to hold the scope variables that tell us where the box is located
    //get the standardItems Scope


    box.evaluate('dashboards').then(function(scope) {
        //make sure the box we are using is initially set in column 0 and Row 0
        expect(scope['1'].widgets[0].col).toEqual(0);
        expect(scope['1'].widgets[0].row).toEqual(0);
    });

    //drag and drop the box somewhere else.
    browser.actions().dragAndDrop(box, target).perform();
    browser.waitForAngular();
    browser.driver.sleep(5000);

    //get the updated scope
    box.evaluate('dashboards').then(function(scope) {
        //test to see that the box was actually moved to column 1 and row 0
        expect(scope['1'].widgets[0].col).toEqual(1);
        expect(scope['1'].widgets[0].row).toEqual(0);
    });
});
});

var Context = function () {
this.ignoreSynchronization = true;
    //load the website
    this.get = function () {
        browser.get('http://127.0.0.1:57828/index.html#/dashboard');
    };
};

Upvotes: 4

Views: 799

Answers (2)

Sevfuria
Sevfuria

Reputation: 56

I think the better practice is to do this in your config.

onPrepare: function() {
browser.manage().window().setSize(1600, 1000);
}

or

onPrepare: function() {
browser.manage().window().maximize();
}

Upvotes: 2

finspin
finspin

Reputation: 4061

You already have this line in your beforeAll function, which will maximize your browser before any test is run:

browser.driver.manage().window().maximize();

However, on some operating systems, Chrome browser won't maximize the window horizontally, only vertically. You have two options:

a) Set the width explicitly to some predefined value, e.g:

browser.driver.manage().window().setSize(1200, 768);

b) Get the screen resolution with a Javascript function and set the window size accordingly.

var width = GET_WIDTH;
var height = GET_HEIGHT;    
browser.driver.manage().window().setSize(width, height);

Upvotes: 1

Related Questions