Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nightwatch.js set testing environment via config file

Noob Node Warning: How do you programmatically set what config object to use when running a test?

Have been looking pretty hard for the definitive answer.

Setup:

/e2e-tests
    |-globals.js
    |-product.page.notify.stock.js
|-nightwatch.json 
|-nightwatch 
  • nightwatch.json = setup
  • nightwatch = #!/usr/bin/env node require('nightwatch/bin/runner.js');
  • e2e-tests/globals.js Overkill, and doesn't show implementation
  • productpage.notify.stock.js

var SITE_URL = 'http://dev.local/', //this needs to be set somehow production||dev
  AJAX_URL = 'ajaxproc/getrandomoutofstock', //relative so this doesn't need to change
  select = '#mysize',
  emailError = '.error-message',
  outOfStockItem = {
    id: false,
    url: false
  };

module.exports = {
  'Get backorder stock url': function(browser) {
    browser.url(SITEURL + AJAX_URL)
      // ommitted for brevity
  },
  'Check notify stock on product page': function(client) {

    client.url(SITE_URL + outOfStockItem.url);
    // ommitted for brevity
  },

  // remaining test stuff - not needed
};

I have seen this method here by MateuszJeziorski but omits the means to get the process arguments. The examples provided with nightwatch don't answer this question either. I think the end result of the command would look something like this:

nightwatch -somekindofparametertosetenvironment -t e2e-tests/product.page.notify.stock

like image 570
Simon Avatar asked Oct 21 '15 11:10

Simon


People also ask

How do you run multiple test cases on Nightwatch?

To execute tests in multiple browsers, you need to add the desired capabilities of the browsers and Test_worker configurations in nightwatch. json file. For example if you want to execute tests in three browsers parallely - Chrome, Firefox and Opera, your nightwatch. json should something like this.

How do you skip the test on Nightwatch?

By simply converting the test method to a string, Nightwatch will ignore it.

Is Nightwatch Selenium based?

Nightwatch. js framework is a Selenium-based test automation framework, written in Node. js and uses the W3C WebDriver API (formerly Selenium WebDriver).


1 Answers

It sounds like you may be able to get what you need with multiple environments in the nightwatch.json file.

You can set up your test environments with something like this in nightwatch.json:

"test_settings" : {
        "default" : {
            "launch_url" : "some_url",
            "selenium_port"  : 4444,
            "selenium_host"  : "localhost",
            "silent": true,
            "screenshots" : {
            "globals" : {
                "site_url" : "some_site"
            },      
            "desiredCapabilities": {
               "browserName": "chrome",
               "javascriptEnabled": true,
               "acceptSslCerts": true
           }
        },
        "other_environment" : {
            "globals" : {
                "site_url" : "some_other_site"
            }
        },
        "one_more_environment" : {
            "globals" : {
                "site_url" : "one_other_site",
                "other_var" : "this env needs a different variable"
            }
        }
    }

Nightwatch will let you pass in an environment with --env. Each environment can have unique global variables.

The 'default' properties are used in every environment unless they are specifically overridden.

Run a specific environment with a command like nightwatch --env "other_environment". The environment will start up with the globals listed in nightwatch.json.

like image 185
curtwphillips Avatar answered Sep 22 '22 11:09

curtwphillips