<div dir="ltr"><div id="gmail-magicdomid5" class="gmail-"></div><div id="gmail-magicdomid6" class="gmail-"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp"># TL</span><span class="gmail-author-a-cfxkbqz66zoz79zz82zz89zz69zz78z8fz73z">;</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">DR</span></div><div id="gmail-magicdomid7" class="gmail-"><br></div><div id="gmail-magicdomid8" class="gmail-"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">You can now write Selenium tests in Node.js</span><span class="gmail-author-a-dz67zp2cz82zz73zz122zbz72zpz80zixt9">!</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp"> Learn more about it at </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp gmail-url"><a href="https://www.mediawiki.org/wiki/Selenium/Node.js">https://www.mediawiki.org/wiki/Selenium/Node.js</a></span></div><div id="gmail-magicdomid9" class="gmail-"><br></div><div id="gmail-magicdomid10" class="gmail-"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp"># Introduction</span></div><div id="gmail-magicdomid11" class="gmail-"><br></div><div id="gmail-magicdomid210" class="gmail-ace-line"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">Five years ago we introduced browser tests using Selenium and a </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">R</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">uby based stack. It has worked great for some teams, and not so great for others. Last year we talked to people from several teams and ran a </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">survey</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">[</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">0</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">]. The outcome is a preference toward usi</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">n</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">g a language developers are familiar with: JavaScript/Node.Js.</span></div><div id="gmail-magicdomid13" class="gmail-"><br></div><div id="gmail-magicdomid212" class="gmail-ace-line"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">After several months of research and development, we are proud to announce support for writing tests in Node.js. We have decided to use WebdriverIO</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">[1</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">]. It is already available in </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">M</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">edia</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">W</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">iki core and supports running tests for extensions.</span></div><div id="gmail-magicdomid15" class="gmail-"><br></div><div id="gmail-magicdomid214" class="gmail-ace-line"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">You can give it a try in </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">M</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">edia</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">W</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">iki</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">-V</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">agrant</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">[2]</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">:</span></div><div id="gmail-magicdomid188" class="gmail-ace-line"><br></div><div id="gmail-magicdomid191" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">vagrant up</span></div><div id="gmail-magicdomid197" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">vagrant ssh</span></div><div id="gmail-magicdomid203" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">sudo apt-get install chromedriver</span></div><div id="gmail-magicdomid205" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">export PATH=$PATH:/usr/lib/chromium</span></div><div id="gmail-magicdomid200" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">cd /vagrant/mediawiki</span></div><div id="gmail-magicdomid207" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">xvfb-run npm run selenium</span></div><div id="gmail-magicdomid19" class="gmail-"><br></div><div id="gmail-magicdomid20" class="gmail-"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h"># Documentation</span></div><div id="gmail-magicdomid21" class="gmail-"><br></div><div id="gmail-magicdomid22" class="gmail-"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">Extensive details are available on the landing page: </span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h gmail-b gmail-url"><a href="https://www.mediawiki.org/wiki/Selenium/Node.js"><b>https://www.mediawiki.org/wiki/Selenium/Node.js</b></a></span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h gmail-b"><b> </b></span></div><div id="gmail-magicdomid23" class="gmail-"><br></div><div id="gmail-magicdomid24" class="gmail-"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h"># Future</span></div><div id="gmail-magicdomid135" class="gmail-ace-line"><br></div><div id="gmail-magicdomid139" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">We plan to replace the majority of Selenium tests written in Ruby with tests in Node.js in the next 6 months. We can not force anybody to rewrite existing tests, but we will offer documentation and pairing sessions for teams that need help. After 6 months, teams that want to continue using Ruby framework will be able to do so, but without support from Release Engineering team.</span></div><div id="gmail-magicdomid141" class="gmail-ace-line"><br></div><div id="gmail-magicdomid217" class="gmail-ace-line"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">I have submitted a skill share session for Wikimedia Hackathon 2017 </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">in</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h"> Vienna</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">[3]</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">. If you would like to pair on Selenium tests in person, that would be a great time.</span></div><div id="gmail-magicdomid25" class="gmail-"><br></div><div id="gmail-magicdomid226" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">The list of s</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">hort term actions </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">is in task T139740[4].</span></div><div id="gmail-magicdomid31" class="gmail-"><br></div><div id="gmail-magicdomid32" class="gmail-"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h"># Thanks</span></div><div id="gmail-magicdomid33" class="gmail-"><br></div><div id="gmail-magicdomid34" class="gmail-"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">I would like to thank several people for reviews, advice and code: Jean-Rene Branaa, Dan Duvall, Antoine Musso, Jon Robson, Timo Tijhof. (Names are sorted alphabetically by last name. Apologies to people I have forgot.)</span></div><div id="gmail-magicdomid35" class="gmail-"><br></div><div id="gmail-magicdomid36" class="gmail-"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h"># References<br><br></span></div><div id="gmail-magicdomid211" class="gmail-ace-line"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">[</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">0</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">]  </span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h gmail-url"><a href="https://www.mediawiki.org/wiki/Browser_testing_user_satisfaction_survey">https://www.mediawiki.org/wiki/Browser_testing_user_satisfaction_survey</a></span></div><div id="gmail-magicdomid213" class="gmail-ace-line"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">[</span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">1</span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">] </span><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h gmail-url"><a href="http://webdriver.io/">http://webdriver.io/</a></span></div><div id="gmail-magicdomid225" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">[2] </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp gmail-url"><a href="https://www.mediawiki.org/wiki/Selenium/Node.js/Inside_MediaWiki-Vagrant">https://www.mediawiki.org/wiki/Selenium/Node.js/Inside_MediaWiki-Vagrant</a></span></div><div id="gmail-magicdomid222" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">[3] </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp gmail-url"><a href="https://phabricator.wikimedia.org/T159945">https://phabricator.wikimedia.org/T159945</a></span></div><div id="gmail-magicdomid224" class="gmail-ace-line"><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp">[4] </span><span class="gmail-author-a-0ycz122z7n3z78zz72zz68zz81zz82zz76zslp gmail-url"><a href="https://phabricator.wikimedia.org/T139740">https://phabricator.wikimedia.org/T139740</a></span></div><div id="gmail-magicdomid221" class="gmail-ace-line"><br></div><div id="gmail-magicdomid104" class="gmail-ace-line"><span class="gmail-author-a-o9x0z75zz85zjyz72zvc3t19h">Željko Filipin</span></div></div>