Selenium/How-to/Debug with browser.debug()

Environments

edit

This tip works if you're targeting:

Make the browser visible

edit

To speed up the debugging, you will probably want to run make the browser visible. See Selenium/How-to/Make the browser visible.

Environment variables

edit

By default, Mocha (testing framework) will abort the test suite if it takes more than 60 seconds. (If you need more information about Mocha testing framework, see Selenium/Explanation/Stack.) That is usually plenty when you're just running tests, but it's usually not enough when you're debugging. To extend the timeout to 60 minutes, set DEBUG environment variable.

Either run this manually from the terminal or, to make it easier for next time, set them from shell configuration file (~/.bash_profile, ~/.zshrc...) which means the variables are always available from any terminal session:

export DEBUG=true

If you prefer, you can create an .env file instead (in MediaWiki Core folder), with this contents.

DEBUG=true

browser.debug()

edit

Put await browser.debug(); at a place you want to debug.

Run Selenium tests

edit

To speed up the debugging, you will probably want to run only one test. See Selenium/How-to/Run a subset of a test suite. Test suite will stop when it reaches browser.debug().

npm run selenium-test

...

The execution has stopped!
You can now go into the browser or use the command line as REPL
(To exit, press ^C again or type .exit)

...

Use the browser developer tools and WebdriverIO REPL interface to debug.

Examples

edit

For example, you can ask for browser URL.

[0-0]  browser.getUrl()
'http://localhost:8080/w/index.php?title=Special:UserLogin'

Or, if an element with ID pt-login is displayed.

[0-0]  $('#pt-login-1').isDisplayed()
false

[0-0]  $('#pt-login-2').isDisplayed()
true

More information

edit