Nightwatch.js Selenium e2e test: input field clearing issue
While doing the e2e (end to end) tests for a Vue.JS frontend, I bumped into something interesting, which was really fun to fix/find a workaround for.
Firstly, for the e2e tests, I've used Nightwatch.js, which uses the Selenium API, and is written in Node.js.
The problem was that, I was not being able to clear some input tag field data using the API provided by Nightwatch -- browser.clearValue. For example:
browser.clearValue('input[type="text"]')
should clear the current value of the input field referred by the CSS selector. But, it was not doing so!
And to make things worse, I was able to clear the first few inputs through .clearValue, so debugging this was becoming really interesting (and tedious after a while :)). Just to note, this seemingly is a Selenium issue, not a Nightwatch one.
I've tried workarounds like:
-
.moveToElementand then.clearValue -
.click,.moveToElementand then.clearValue
and a few others, but none was working and the test was failing at the same place.
Then I've taken things raw, and inserted (setValue) the Backspace character (U+0008) directly in the input field! And guess what, it worked!
Here it is:
browser.setValue('input[type="text"]', '\u0008')
Now, in some places, I was testing with multiple characters as input, so I needed to pass that many backspace keystrokes as an array in setValue's second argument e.g.:
browser.setValue('input[type="text"]', ['\u0008', '\u0008', '\u0008'])
Hope this helps! Happy testing!

Comments
Comments powered by Disqus