Skip to main content

Behat Resize or maximize browser window

You will see while executing Behat script you browser does not starts in full screen mode. You can start your browser in full screen mode or resize it using different methods, 2 of them are mentioned below:

Resize or Maximize Browser window using Mink 

First make sure that you have extended MinkContext

class FeatureContext extends MinkContext implements Context

remove MinkContext from your behat.yml Contexts section if you are extended MinkContext. Otherwise you will get error Step is already defined in FeatureContext class.

Then add following lines to before scenario:

/**
* @BeforeScenario
*/
public function before($event)
{
    $this->visitPath('/');
    $this->getSession()->maximizeWindow();
    $this->getSession()->resizeWindow(1500,500);
}

 You would like to go for maximum size or specific size. Comment the other option which you don't want to go for.

Note: If you are using "Given I am on homepage" in your feature file and then executing this, then you will get below error:

┌─ @BeforeScenario # FeatureContext::before()
│
╳  Fatal error: Call to a member function window() on null (Behat\Testwork\Call\Exception\FatalThrowableError)
│

Make sure you are calling visitPath('/') method in Before Suite or Scenario. Good thing about this approach you don't need any browser specific configuration. Whether it is Firefox, Chrome or any other browser, all will open in full screen mode.

Resize or Maximize Browser window using behat.yml 

Method 1: Use size in chrome switches

You can specify the size in switches

selenium2:
    browser: chrome
    wd_host: http://127.0.0.1:4444/wd/hub
    capabilities:
        chrome:
            switches:
              - "--start-maximized"
              - "--start-fullscreen"
              - "--window-size=1200,600"

You can also use the JSON version of above:

capabilities: { "browser": "chrome",  'chrome': {'switches':['--start-maximized','--start-fullscreen']}}

Note: --start-maximized is not working on Mac, so you can specify --start-fullscreen for that. remove or add --window-size depending on your choice.

Method 2: Use size in extra capabilities args

selenium2:
    browser: chrome
    wd_host: http://127.0.0.1:4444/wd/hub
    capabilities:
        extra_capabilities:
            chromeOptions:
                args:
#                 - "--window-size=1200,600"
                 - "--start-maximized"
                 - "--start-fullscreen"

Well this option will work for Chrome only, I spent several hours, I am unable to find any property to start firefox in full screen mode from yml.

Video Tutorial: Behat Resize or maximize browser window

Submitted by tgoswami on October 10, 2020

Tarun has 11+ years of experience in Quality Assurance in different domains like Banking, E-commerce, Health and Education.

About

At ProgramsBuzz, you can learn, share and grow with millions of techie around the world from different domain like Data Science, Software Development, QA and Digital Marketing. You can ask doubt and get the answer for your queries from our experts.