Return only the promise to the clients (the tests) so they can only add callbacks, but cannot fulfill the promise.

Use HtmlAnchorElement.click() to click an <a> element. Use jQuery.click() for <button> and <input type="submit|button" ..>