Hi,

The QA team has been experimenting with using the MW API to facilitate some of the setup for browser tests. It started with a proof of concept patch written by Jeff Hall (https://gerrit.wikimedia.org/r/#/c/106548/). The patch is now abandoned and the idea is to develop a Ruby gem for interacting with the API.

As Jeff told me, Zeljko started working on it at https://github.com/zeljkofilipin/mediawiki_ruby_api_client Since the library is in a very early stage as of now, I decided to also take a stab at it yesterday and would present a slightly different, more Rubyish and OO-oriented, approach. You can find it here:
https://github.com/jgonera/mediawiki-api

It's just a quick prototype, still requires some cleanup. At the moment it is capable only of creating articles, just as Jeff's and Zeljko's prototypes. It, however, persists the login information so that you can create several pages without repeating the login process. It's only a simple example of a benefit of taking a more OO approach. Other benefits will be even more obvious if we continue developing it.

It also contains some unit tests in RSpec. Ideally, I would envision a gem like this to be something useful not only in our browser tests, but also for authors of bots and other tools. It would be great if people from outside of the foundation found it useful and could help in developing it.

Some other decisions in my prototype:

* Use Faraday (https://github.com/lostisland/faraday) instead of RestClient. It's also very popular and supports different backends. While this might not be useful for us now, we get it for free and someone might use a more concurrent EventMachine backend in future. Faraday also has a concept of middleware, which for example gives us cookie management for free too.

* Use WebMock (https://github.com/bblimke/webmock) for unit tests. Faraday has it's own stubbing mechanism, but it's much less powerful.

Let me know what you think. I'd really like us to work on this together.

--
Juliusz

_______________________________________________
QA mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/qa

Reply via email to