Last modified: 2014-10-19 17:44:21 UTC
Many tests follow "I am logged in" with "visit FlowPage", "I navigate to Upload Wizard", "I visit the User page of Selenium_user2", etc. In these cases Special:UserLogin's default behavior of loading the Main_Page upon successful login is a waste of precious time. MediaWiki has already solved this for human beings. Clients can pass ?returnto=Some_wiki_page to Special:UserLogin so that upon successful login the user is redirected to Some_wiki_page. It's what the _Log in_ link on every wiki page does, as you can see if you hover over it and note its URL. For example, http://en.wikipedia.beta.wmflabs.org/wiki/Special:UserLogin?returnto=Talk:Flow_QA We could expose this as Given I am logged in to <PAGE> in tests. mediawiki_selenium/step_definitions/login_steps.rb would need to recognize the presence of this optional parameter and append ?returnto=URLEncode(pageName) to LoginPage I would prototype this but I don't know where the visit() function is defined or documented in our webdriver-selenium-watir-cheezy-cucumber stack. Is using on(APIPage).client.log_in(ENV["MEDIAWIKI_USER"], ENV["MEDIAWIKI_PASSWORD"]) another alternative?
(In reply to spage from comment #0) > Is using > on(APIPage).client.log_in(ENV["MEDIAWIKI_USER"], ENV["MEDIAWIKI_PASSWORD"]) > another alternative? This doesn't work. The mediawiki_api module issues its own HTTP requests from Ruby. So the cookies it gets back aren't set in the browser under test, it only uses them in subsequent API calls. You'd have to tell the browser to make the API POST, or "push" the cookies from the API response into the WebDriver session.
(In reply to spage from comment #1) > (In reply to spage from comment #0) > > Is using > > on(APIPage).client.log_in(ENV["MEDIAWIKI_USER"], ENV["MEDIAWIKI_PASSWORD"]) > > another alternative? > > This doesn't work. The mediawiki_api module issues its own HTTP requests > from Ruby. So the cookies it gets back aren't set in the browser under test, > it only uses them in subsequent API calls. You'd have to tell the browser to > make the API POST, or "push" the cookies from the API response into the > WebDriver session. Passing the cookies over from an API call is an interesting idea, assuming API sessions work in the same way interactive ones do. Of course, this should only be using in setup context (i.e. `Given`) but it would greatly reduce the overhead and fragility of tests that assume a logged-in state.