This Tuesday, we met again at Testival #43 meetup. Sponsor was Repsly, and as they were early adopters of Ranorex Studio, they invited Michael Schweighofer to present Webtestit, a lightweight IDE optimized for building UI web tests with Selenium or Protractor. But I found another Ranorex tool that caught my attention.
It is IDE for writing Web UI tests, which means that you have context menus with mostly used selenium functions that you need. One click, and there is function signature, you can start writing the function body code, code that is specific for application that you are testing. With that tool, you will be more productive. It is based on Electron (like Atom), and Language Server Protocol. So you get all IDE features that you would expect: context find feature, code competition, …
I asked for Ruby support (it supports Language Server Protocol), but this has not been planned yet.
Presentation did not include writing a page object itself, but one of the features is Ranorex DSL for page objects (we in Ruby world are blessed with Watir and PageObject gems), definitely a plus!
And then came a hidden gem. During the presentation, I noticed extra tab in Chrome developer tools.
Whenever I see a tool that tries to solve the problem of identifying page elements robust locators, I stand in a box and start to sing. You can copy css, xpath and rxpath (Rannorex xpath) and test it using this simple Chrome extension, Ranorex Selocity.
I tested it on application of one of my clients using Ruby Watir gem, and it works!
b.span(:css => '[data-category-label]').html => "<span class=\"tdd-filter--selected\" data-category-label=\"All Subjects\">All Subjects</span>"
This is Chrome dev tools css selector for the same element:
#lessons-filters > h1 > a > span
As Michael said, Selocity internal magic is producing clean and robust selectors. Automation done right.
Webtestit is free in beta program. It will be commercial product, but with free Selocity Chrome extension, Ranorex proved that understands how to resolve some of WEB UI testing problems.