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.78k stars 1.31k forks source link

getValue command and assert.value throw on SauceLabs #2387

Closed jcestibariz closed 4 years ago

jcestibariz commented 4 years ago

Describe the bug

The getValue command uses element/:id/property/value but this command is not supported by SauceLabs (in fact it's not defined in the JsonWire protocol).

Using getValue or assert.value causes the following error to be logged in the SauceLabs console:

Error

```text HTTP Status: 500 { "hCode": 1976077783, "stackTrace": [ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null ], "suppressed": [], "additionalInformation": "\nDriver info: driver.version: unknown", "localizedMessage": "Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'\nSystem info: host: 'SAUCE-WIN10', ip: '10.119.54.32', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'\nDriver info: driver.version: unknown", "class": "org.openqa.selenium.UnsupportedCommandException", "buildInformation": null, "message": "Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'\nSystem info: host: 'SAUCE-WIN10', ip: '10.119.54.32', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'\nDriver info: driver.version: unknown", "systemInformation": "System info: host: 'SAUCE-WIN10', ip: '10.119.54.32', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", "cause": null, "supportUrl": null } ```

Expected behaviour

The test should pass.

Sample test

sampleTest.js

```js module.exports = { bug: client => { client.url('https://google.com').assert.value('[name="q"]', ''); }, }; ```

Run with command

$ nightwatch test/sampleTest.js

Verbose output

debug.log

```txt [Value Bug] Test Suite ====================== ⠋ Connecting to ondemand.saucelabs.com on port 443... Request POST https://ondemand.saucelabs.com /wd/hub/session { desiredCapabilities: { browserName: 'firefox', platform: 'Windows 10', name: 'Value Bug' } ⠼ Connecting to ondemand.saucelabs.com on port 443... Response 200 POST https://ondemand.saucelabs.com/wd/hub/session (19693ms) { status: 0, state: null, value: { takesScreenshot: true, 'moz:headless': false, 'moz:webdriverClick': true, rotatable: false, strictFileInteractability: false, acceptInsecureCerts: false, 'moz:profile': 'C:\\Users\\sauce\\AppData\\Local\\Temp\\rust_mozprofile.b6J0azB7jg3c', platform: 'ANY', 'webdriver.remote.sessionid': '88ca0d26b2d047b3b4aa1ba790a6f0a1', 'moz:useNonSpecCompliantPointerOrigin': false, platformName: 'windows', unhandledPromptBehavior: 'dismiss and notify', 'moz:accessibilityChecks': false, javascriptEnabled: true, browserName: 'firefox', hasMetadata: true, platformVersion: '10.0', 'moz:processID': 4740, 'moz:shutdownTimeout': 60000, browserVersion: '75.0', cssSelectorsEnabled: true, timeouts: { pageLoad: 300000, implicit: 0, script: 30000 }, 'moz:geckodriverVersion': '0.24.0', setWindowRect: true, 'moz:buildID': '20200403170909', pageLoadStrategy: 'normal' }, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1' ℹ Connected to ondemand.saucelabs.com on port 443 (19712ms). Using: firefox (75.0) on ANY 10.0 platform. Received session with ID: 88ca0d26b2d047b3b4aa1ba790a6f0a1 → Running [before]: → Completed [before]. Running: bug → Running [beforeEach]: → Completed [beforeEach]. → Running command: url ('https://google.com') Request POST https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/url { url: 'https://google.com' } Response 200 POST https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/url (1582ms) { status: 0, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: null, state: 'success' } → Completed command: url ('https://google.com') (1586ms) → Running command: assert.value ('[name="q"]', '') → Running command: getValue ('[name="q"]', [Function]) Request POST https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements { using: 'css selector', value: '[name="q"]' } Response 200 POST https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements (609ms) { status: 0, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: [ { ELEMENT: '0' } ], state: 'success' } Request GET https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value Response 500 GET https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value (391ms) { status: 9, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: { systemInformation: "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", message: "Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'", error: [ "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", 'Driver info: driver.version: unknown' ] }, state: 'unknown command' } Error while running .getElementProperty() protocol action: Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' → Completed command: getValue ('[name="q"]', [Function]) (1019ms) → Running command: getValue ('[name="q"]', [Function]) Request POST https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements { using: 'css selector', value: '[name="q"]' } Response 200 POST https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements (538ms) { status: 0, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: [ { ELEMENT: '0' } ], state: 'success' } Request GET https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value Response 500 GET https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value (382ms) { status: 9, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: { systemInformation: "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", message: "Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'", error: [ "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", 'Driver info: driver.version: unknown' ] }, state: 'unknown command' } Error while running .getElementProperty() protocol action: Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' → Completed command: getValue ('[name="q"]', [Function]) (927ms) → Running command: getValue ('[name="q"]', [Function]) Request POST https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements { using: 'css selector', value: '[name="q"]' } Response 200 POST https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements (471ms) { status: 0, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: [ { ELEMENT: '0' } ], state: 'success' } Request GET https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value Response 500 GET https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value (357ms) { status: 9, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: { systemInformation: "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", message: "Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'", error: [ "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", 'Driver info: driver.version: unknown' ] }, state: 'unknown command' } Error while running .getElementProperty() protocol action: Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' → Completed command: getValue ('[name="q"]', [Function]) (834ms) → Running command: getValue ('[name="q"]', [Function]) Request POST https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements { using: 'css selector', value: '[name="q"]' } Response 200 POST https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/elements (376ms) { status: 0, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: [ { ELEMENT: '0' } ], state: 'success' } Request GET https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value Response 500 GET https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1/element/0/property/value (469ms) { status: 9, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: { systemInformation: "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", message: "Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'", error: [ "System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'", 'Driver info: driver.version: unknown' ] }, state: 'unknown command' } Error while running .getElementProperty() protocol action: Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' ✖ Testing if value of element <[name="q"]> equals '' in 5000ms - expected "equals ''" but got: "element could not be located" (5141ms) at Object.bug (/home/juank/tmp/sauce-bug/value-bug.js:3:45) at processTicksAndRejections (internal/process/task_queues.js:97:5) → Completed command: getValue ('[name="q"]', [Function]) (856ms) → Completed command: assert.value ('[name="q"]', '') (5149ms) → Running [afterEach]: → Completed [afterEach]. FAILED: 1 assertions failed and 4 errors (6.741s) → Running [after]: → Completed [after]. → Running command: end ([Function]) → Running command: session ('delete', [Function]) Request DELETE https://ondemand.saucelabs.com /wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1 Response 200 DELETE https://ondemand.saucelabs.com/wd/hub/session/88ca0d26b2d047b3b4aa1ba790a6f0a1 (473ms) { status: 0, sessionId: '88ca0d26b2d047b3b4aa1ba790a6f0a1', value: '' } → Completed command: end ([Function]) (483ms) → Completed command: session ('delete', [Function]) (477ms) _________________________________________________ TEST FAILURE: 4 errors during execution; 1 assertions failed, 0 passed (26.991s) ✖ value-bug – bug (6.741s) Testing if value of element <[name="q"]> equals '' in 5000ms - expected "equals ''" but got: "element could not be located" (5141ms) at Object.bug (/home/juank/tmp/sauce-bug/value-bug.js:3:45) at processTicksAndRejections (internal/process/task_queues.js:97:5) TimeoutError: An error occurred while running .getValue() command on <[name="q"]>: System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131',Driver info: driver.version: unknown; Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' {"status":-1,"state":"unknown command","value":{"systemInformation":"System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","message":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","error":["System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","Driver info: driver.version: unknown"]},"errorStatus":9,"error":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","httpStatusCode":500} at processTicksAndRejections (internal/process/task_queues.js:97:5) TimeoutError: An error occurred while running .getValue() command on <[name="q"]>: System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131',Driver info: driver.version: unknown; Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' {"status":-1,"state":"unknown command","value":{"systemInformation":"System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","message":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","error":["System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","Driver info: driver.version: unknown"]},"errorStatus":9,"error":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","httpStatusCode":500} at processTicksAndRejections (internal/process/task_queues.js:97:5) TimeoutError: An error occurred while running .getValue() command on <[name="q"]>: System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131',Driver info: driver.version: unknown; Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' {"status":-1,"state":"unknown command","value":{"systemInformation":"System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","message":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","error":["System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","Driver info: driver.version: unknown"]},"errorStatus":9,"error":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","httpStatusCode":500} at processTicksAndRejections (internal/process/task_queues.js:97:5) TimeoutError: An error occurred while running .getValue() command on <[name="q"]>: System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131',Driver info: driver.version: unknown; Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' {"status":-1,"state":"unknown command","value":{"systemInformation":"System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","message":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","error":["System info: host: 'SAUCE-WIN10', ip: '10.119.90.231', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'","Driver info: driver.version: unknown"]},"errorStatus":9,"error":"Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'","httpStatusCode":500} at processTicksAndRejections (internal/process/task_queues.js:97:5) ```

Configuration

nightwatch.json

```js { "src_folders": "test", "test_settings": { "default": { "webdriver": { "port": 443, "ssl": true, "default_path_prefix": "/wd/hub" }, "selenium": { "host": "ondemand.saucelabs.com", "username": "${USER}", "access_key": "${KEY}" }, "desiredCapabilities": { "browserName": "firefox", "platform": "Windows 10", "name": "Value Bug" } } } } ```

Your Environment

Executable Version
nightwatch --version 1.3.4
npm --version 6.14.4
node --version 12.16.2
Browser driver Version
SauceLabs geckodriver 0.24.0
SauceLabs Selenium server 3.4.0
OS Version
Windows 10 unknown
jcestibariz commented 4 years ago

Never mind, the problem is fixed by requesting the latest version of Selenium:

For Chrome/Firefox:

"desiredCapabilities": {
  ...,
  "seleniumVersion": "3.141.59"
}

And for IE:

"desiredCapabilities": {
  ...
  "seleniumVersion": "3.141.59",
  "iedriverVersion": "3.150.1"
}