Get it here: http://www.bewildr.info
After writing an automation framework to test a WPF GUI using IronRuby and White, I decided to write a ruby-specific gem for automating WPF UI tests. Kinda like Watir, but for WPF instead of the web. The gem is called bewildr - I’ve been working on it for a while and it’s finally in a releasable state.
Here’s an example of bewildr being used in rspec to show you what it’s all about:
require 'rubygems'
require 'spec'
require 'bewildr'
describe "my example app" do
it "should not allow invalid users to log in" do
#start the app and wait for the main window
@app, @main_window = Bewildr::Application.start_app_and_wait_for_window("c:\\app.exe", /App v1.\d+/)
username_field = @main_window.get(:id => "username")
password_field = @main_window.get(:id => "password")
login_button = @main_window.get(:type => :button, :name => "Go")
#some initial checks...
username_field.should be_enabled
password_field.should be_a_password_field
#attempt login with invalid user
username_field.text = "invalidUser"
password_field.text = "s3cr3t"
login_button.click
#check we're not logged in
@main_window.get(:id => "login_message").text.should match("Wrong username/password")
end
end
And, since bewildr was written ‘BDD-style’ there are loads of examples of its use in cucumber here: http://github.com/natritmeyer/bewildr/tree/master/features/
Cool:
- It’s written in ruby
- It’s free (as in speech – BSD license)
- It’s free (as in beer – there are no bazillion-dollar yearly license fees)
- It’s easy to install (here’s how:
gem install bewildr) - It has a clean API (makes for idiomatic tests in cucumber/rspec)
- It has a strong test focus (…of the testers, by the testers, for the testers…)
- It’s been written BDD-style
- It’s updated frequently
- It allows tests to be written in an interpreted language (with all the flexibility which that gives you – unlike White)
Not Cool:
- It’s limited to IronRuby, not MRI/YARV (it needs access to .Net automation)
- It’s new – expect bugs (please raise them when you find them)
- It’s built on top of MS UI Automation (expect quirkiness)
- There is quite a bit to do before it does everything I want it to, eg: it doesn’t yet allow you to test for visibility, there’s no drag-and-drop; see here for more
Note: I have no intention to support anything but WPF. No WinForms, no Silverlight, no [insert non-WPF tech here]. Not yet anyway…
So, if you’re looking for a UI testing tool to automate your WPF app with, but QTP is too expensive and White is too [insert pejorative here]… Well, what are you waiting for? http://www.bewildr.info
Pretty cool! This library could be really potent when combined with Watir and/or Watir-WebDriver (once they’re ready for use in IronRuby).
Really liking the idea of BDD Rails style testing in WPF but I am having a few issues. The first one is that on a WPF PasswordBox I am getting
undefined method “is_password_field?”
DotNetDevDude,
Try: “password_field?”
The method is defined here:
http://github.com/natritmeyer/bewildr/blob/master/lib/bewildr/control_patterns/value_pattern.rb
…and you can see it in use here:
http://github.com/natritmeyer/bewildr/blob/master/features/step_definitions/text_field_steps.rb