nightwatchjs / nightwatch

Integrated end-to-end testing framework written in Node.js and using W3C Webdriver API. Developed at @browserstack
https://nightwatchjs.org
MIT License
11.79k stars 1.31k forks source link

Unable to run Nightwatch tests on GIT CI #2487

Closed lakshmiVasavi414 closed 4 years ago

lakshmiVasavi414 commented 4 years ago

Hi , When I try to run Nightwatch tests on git CI , I am seeing below error Error while running "setValue" command: Error while trying to create HTTP request for "/wd/hub/session/7966f6396a57bf50ef029ac5d1b9c297/element/[object Object]/value": Request path contains unescaped characters TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters at new ClientRequest (_http_client.js:148:13) at Object.request (http.js:46:10) at HttpRequest.createHttpRequest (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:149:57) at HttpRequest.send (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:231:29) at /builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:194:15 at new Promise () at Selenium2Protocol.sendProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:192:12) at Selenium2Protocol.runProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/jsonwire.js:61:17) at Object.setElementValue (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/actions.js:54:10) at Selenium2Protocol.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:240:48) at SetValue.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:205:27) at SetValue.protocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:68:17) at SetValue.elementFound (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:168:17) at action (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:49:36) at PeriodicPromise.perform (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:81:29) at PeriodicPromise.runAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:48:33) Error while running .setElementValue() protocol action: TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters at new ClientRequest (_http_client.js:148:13) at Object.request (http.js:46:10) at HttpRequest.createHttpRequest (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:149:57) at HttpRequest.send (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:231:29) at /builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:194:15 at new Promise () at Selenium2Protocol.sendProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:192:12) at Selenium2Protocol.runProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/jsonwire.js:61:17) at Object.setElementValue (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/actions.js:54:10) at Selenium2Protocol.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:240:48) at SetValue.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:205:27) at SetValue.protocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:68:17) at SetValue.elementFound (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:168:17) at action (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:49:36) at PeriodicPromise.perform (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:81:29) at PeriodicPromise.runAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:48:33)

Please find nightwatch.conf.js file

module.exports = { src_folders: ['.'], globals_path: "./tests/resources/globals.js", custom_commands_path: "./tests/commands", page_objects_path: "./tests/pageObjects", test_workers: false, selenium: { start_process: true, server_path: require('selenium-server').path,

cli_args: {
  'webdriver.chrome.driver': chromedriver.path
}

}, webdriver: {

start_process: true,

cli_args:
    { 'webdriver.chrome.driver': require('chromedriver').path
    }

},

test_settings: { default: { // "launch_url": "http://127.0.0.1/", "selenium_port": 4444, "selenium_host": "${SELENIUM_HOST}", "silent": true, "screenshots": { "enabled": false, "path": "" }, "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } },

'chrome': {
  desiredCapabilities: {
    browserName: 'chrome',
    javascriptEnabled: true,
    acceptSslCerts: true,

    chromeOptions: {

      binary://path to binary file
      args: [

        '--no-sandbox',

      ],
      w3c: false,
    }
  }
}

} };

beatfactor commented 4 years ago

can you fix this formatting please?

beatfactor commented 4 years ago

https://github.com/nightwatchjs/nightwatch/blob/master/.github/ISSUE_TEMPLATE/bug_report.md

lakshmiVasavi414 commented 4 years ago
module.exports = {
    src_folders: ['.'],
    globals_path: "./tests/resources/globals.js",
    custom_commands_path: "./tests/commands",
    page_objects_path: "./tests/pageObjects",
    selenium:{
        start_process: true,
        server_path: require('selenium-server').path,
        cli_args:{
            'webdriver.chrome.driver': chromedriver.path
        }
    },
    webdriver:{
        start_process: true,
        cli_args: {
            'webdriver.chrome.driver': require('chromedriver').path
        }
    },
    test_settings:{
        default: {
            "selenium_port": 4444,
            "selenium_host": "${SELENIUM_HOST}",
            "silent": true,
            "screenshots": {
                "enabled": false,
                "path": ""
            },
            desiredCapabilities: {
                "browserName": "chrome",
                "javascriptEnabled": true,
                "acceptSslCerts": true
            }
        },
        'chrome': {
            desiredCapabilities: {
                browserName: 'chrome',
                javascriptEnabled: true,
                acceptSslCerts: true,
                chromeOptions: {
                    w3c:false,
                    binary:require('puppeteer').executablePath(),
                    args:[
                            '--no-sandbox'
                    ]

                }
            }
        }
    }
};
beatfactor commented 4 years ago

which version?

beatfactor commented 4 years ago

@lakshmiVasavi414 can you try with webdriver.start_process: false?

lakshmiVasavi414 commented 4 years ago

@beatfactor I have tried by setting webdriver.start_process: false, But still facing same issue

Error while running "setValue" command: Error while trying to create HTTP request for "/wd/hub/session/e72001a566d96ca18e34e0893f1b6f0e/element/[object Object]/value": Request path contains unescaped characters TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters at new ClientRequest (_http_client.js:148:13) at Object.request (http.js:46:10) at HttpRequest.createHttpRequest (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:149:57) at HttpRequest.send (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:231:29) at /builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:194:15 at new Promise () at Selenium2Protocol.sendProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:192:12) at Selenium2Protocol.runProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/jsonwire.js:61:17) at Object.setElementValue (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/actions.js:54:10) at Selenium2Protocol.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:240:48) at SetValue.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:205:27) at SetValue.protocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:68:17) at SetValue.elementFound (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:168:17) at action (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:49:36) at PeriodicPromise.perform (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:81:29) at PeriodicPromise.runAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:48:33) Error while running .setElementValue() protocol action: TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters at new ClientRequest (_http_client.js:148:13) at Object.request (http.js:46:10) at HttpRequest.createHttpRequest (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:149:57) at HttpRequest.send (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/http/request.js:231:29) at /builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:194:15 at new Promise () at Selenium2Protocol.sendProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:192:12) at Selenium2Protocol.runProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/jsonwire.js:61:17) at Object.setElementValue (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/actions.js:54:10) at Selenium2Protocol.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/transport/transport.js:240:48) at SetValue.executeProtocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:205:27) at SetValue.protocolAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:68:17) at SetValue.elementFound (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/element/command.js:168:17) at action (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/api/element-commands/_baseElementCommand.js:49:36) at PeriodicPromise.perform (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:81:29) at PeriodicPromise.runAction (/builds/cx-verticals-dev/api-routing-rules-ui/node_modules/nightwatch/lib/utils/periodic-promise.js:48:33)

beatfactor commented 4 years ago

@lakshmiVasavi414 you still didn't say which version. This would go a lot faster and less frustratingly if you'd follow the bug reporting template in your post, thanks.

lakshmiVasavi414 commented 4 years ago

@beatfactor

"nightwatch": "1.4.1", "selenium-server": "^3.141.59", "selenium-webdriver": "^4.0.0-alpha.7" "chromedriver": "80.0.0", "node": "v12.18.0", "npm":"6.14.4"

These are the versions , I am using to run my Nightwatch tests in gitCI Env,

beatfactor commented 4 years ago

@lakshmiVasavi414 Your config is very confusing. Some remarks:

lakshmiVasavi414 commented 4 years ago

Hi @beatfactor , Yes , I am setting up the selenium grid to run the tests in CI , These are steps followed (https://gist.github.com/jaanreinok/b218b7a608dbef297db22a05690cd562#creating-gitlab-ci-e2e-test-runner)

beatfactor commented 4 years ago

@lakshmiVasavi414 Well, you missed some important config options, which are set correctly in the link you posted:

selenium: {
    start_process: false,
  },

  webdriver: {
    start_process: false
  },

Also, the error with 'Request path contains unescaped characters' should be fixed in 1.4.2.

lakshmiVasavi414 commented 4 years ago

@beatfactor : Thankyou so much it works , But I am facing another issue , It is not supressing the certificate Warnings when I run in gitci Eventhough I added "acceptInsecureCerts: True" in desired Capailities Please help me here

module.exports = {
    src_folders: ['.'],
    globals_path: "./tests/resources/globals.js",
    custom_commands_path: "./tests/commands",
    page_objects_path: "./tests/pageObjects",
    selenium:{
        start_process: false,
        server_path: require('selenium-server').path,
        cli_args:{
            'webdriver.chrome.driver': chromedriver.path
        }
    },
    webdriver:{
        start_process: false,
        cli_args: {
            'webdriver.chrome.driver': require('chromedriver').path
        }
    },
    test_settings:{
        default: {
            "selenium_port": 4444,
            "selenium_host": "${SELENIUM_HOST}",
            "silent": true,
            "screenshots": {
                "enabled": false,
                "path": ""
            },
            desiredCapabilities: {
                "browserName": "chrome",
                "javascriptEnabled": true,
                "acceptSslCerts": true
                 acceptInsecureCerts: True,

            }
        },
        'chrome': {
            desiredCapabilities: {
                browserName: 'chrome',
                javascriptEnabled: true,
                acceptSslCerts: true,
                chromeOptions: {
                    w3c:false,
                    binary:require('puppeteer').executablePath(),
                    args:[
                            '--no-sandbox'
                    ]

                }
            }
        }
    }
};
beatfactor commented 4 years ago

You have a syntax error at:

"acceptSslCerts": true
acceptInsecureCerts: True,

Please use the Mailing List or Gitter chat to ask for assistance going further.