It was brought up the [[ https://etherpad.wikimedia.org/p/testing-where-does-it-hurt | Testing: Where does it hurt? ]] discussion that we should try out end-to-end testing frameworks in other languages such as JS other languages that MW devs might be more familiar with.
| Language | [[ https://www.ruby-lang.org/en/ | Ruby ]] | [[ https://en.wikipedia.org/wiki/JavaScript | JavaScript ]] |
| Implementation | [[ https://en.wikipedia.org/wiki/Ruby_MRI | CRuby ]] | [[ https://nodejs.org/en/ | Node.js ]] |
| Testing framework | [[ https://cucumber.io/ | Cucumber ]], [[ http://rspec.info/ | RSpec ]] | [[ https://qunitjs.com/ | QUnit ]], [[ https://mochajs.org/ | Mocha ]], [[ http://jasmine.github.io/ | Jasmine ]] |
| Browser driver | [[ http://www.seleniumhq.org/ | Selenium ]] |
| Selenium bindings | Ruby bindings ([[ https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings | github.com ]], [[ https://code.google.com/p/selenium/wiki/RubyBindings | code.google.com ]], [[ http://www.rubydoc.info/gems/selenium-webdriver/2.48.1 | API ]]) | WebDriverJS ([[ https://github.com/SeleniumHQ/selenium/wiki/WebDriverJs | github.com ]], [[ https://code.google.com/p/selenium/wiki/WebDriverJs | code.google.com ]], [[ http://seleniumhq.github.io/selenium/docs/api/javascript/ | API ]]) |
| Browser driver package | [[ https://rubygems.org/gems/selenium-webdriver/ | selenium-webdriver ]] (rubygems.org) | [[ https://www.npmjs.com/package/selenium-webdriver | selenium-webdriver ]] (npmjs.com) |
| Nicer API on top of Selenium | [[ http://watirwebdriver.com/ | watir-webdriver ]] |
| [[ https://code.google.com/p/selenium/wiki/PageObjects | Page object ]] | [[ https://github.com/cheezy/page-object | page-object ]] | custom |
| Shared Selenium code| [[ https://rubygems.org/gems/mediawiki_selenium | mediawiki_selenium ]] |
| Mediawiki API | [[ https://rubygems.org/gems/mediawiki_api | mediawiki_api ]] | [[ https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.Api | mw.Api ]] |
See also [[ https://www.mediawiki.org/wiki/Manual:Unit_testing | Manual:Unit testing ]].