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

Show command usage location in new Element API errors. #4194

Open garg3133 opened 5 months ago

garg3133 commented 5 months ago

Description of the bug/issue

The errors coming from the new Element API do not pinpoint the exact location where the command that led to the error was used in the test case.

This is in contrast with the old API which used to show the exact location of command usage in the error stack.

For e.g., if we use await browser.findElement('.invalid_selector');, we'd get the following error (the line where the findElement command is used is clearly highlighted):

image

On the other hand, when using the new Element API (await browser.element.find('.invalid_selector');), we get the following error (the highlight does not show where the command was actually used):

image

Steps to reproduce

Run await browser.element.find('.invalid_selector'); in any test.

Nightwatch.js Version

latest

Ayush-Vish commented 5 months ago

I will work on this issue after a week. Looks interesting!

AritraLeo commented 5 months ago

Hey @garg3133 I went through the description I think what you want is a custom error handler to catch these errors and return accordingly as the New Element API isn't returning an apt error message. Please let me know if I am wrong.

garg3133 commented 5 months ago

@AritraLeo The error "message" is fine here, just the "Error location" section is pointing to the wrong location.

For this, we'd need to see how it happens in the old element API and then implement something similar in the new API.

AritraLeo commented 5 months ago

@AritraLeo The error "message" is fine here, just the "Error location" section is pointing to the wrong location.

For this, we'd need to see how it happens in the old element API and then implement something similar in the new API.

Ohk I get your point so to get the job done exploring how err is thrown in old element api is required.