Fog Creek Software
Discussion Board




Automated UI Testing under Mac OS X

has anybody done AppleScript based automated UI testing for a cocoa or carbon application.
what are your experiences with that?

is it too complicated to consider for a small or medium sized project considering the time it takes and saves?

I have looked at OCUnit Testing Framework which seemed good for Frameworks and Non-UI functionality testing,
but for UI testing, it does not look promising.

cocoa developer for mac
Monday, April 05, 2004

Try asking at a Mac forum there is a General Programming board at idevgames.com.

Not Many Maccers here
Monday, April 05, 2004

You might also consider asking on the Cocoa-dev mailing list hosted by Apple or the MacOSX-dev list hosted by OmniGroup.

I haven't run across any tools like WinRunner for Mac OS X; but I'd be surprised if solutions don't already exist.

Jeff Watkins
Monday, April 05, 2004

"has anybody done AppleScript based automated UI testing for a cocoa or carbon application.
what are your experiences with that?"

May be non-AppleScript/Apple event-driven solutions, but couldn't tell you about those. If you do it via application scripting, the AppleScript Implementors list should be a good place to ask: http://www.lists.apple.com/mailman/listinfo/applescript-implementors

One problem with AppleScript (In My Heavily Biased Opinion) is its almost total lack of libraries. Anything you need you usually have to write for yourself. Perl + Mac::Glue [1] or MacPython + appscript [2] might be better alternatives; much better languages with excellent libraries, tools and community support. e.g. Here's a basic example of UI scripting from MacPython via appscript [my puppy]:

#######

#!/usr/local/bin/pythonw

from appscript import *

teGUI = app('System Events.app').processes['TextEdit']
app('TextEdit.app').activate()

teMenus = teGUI.menu_bars[1].menus
teMenus['File'].menu_items['New'].click()
teMenus['Edit'].menu_items['Paste'].click()
teMenus['Window'].menu_items['Zoom Window'].click()

#######

[1] http://search.cpan.org/~cnandor/
[2] http://freespace.virgin.net/hamish.sanderson/

has
Monday, April 05, 2004

You'd be surprised just how far you can get with OCUnit.

I regularly load nib files from unit tests, use key-value coding to get what's bound to attributes, use -performClick: to make buttons send their action to their target (or the responder chain if they're in it), and so on.

I use this to do test-driven development of Mac user interfaces.  About the only thing I'm unable to do right now is "poke" a value into a control and have the control propagate the value via its bindings.  But anything beyond Cocoa Bindings should just work straight from Objective-C; you don't need to display windows on screen or anything like that to put them under test.

  -- Chris Hanson http://www.livejournal.com/users/chanson/

Chris Hanson
Monday, April 05, 2004

"I regularly load nib files from unit tests, use key-value coding to get what's bound to attributes, use -performClick: to make buttons send their action to their target (or the responder chain if they're in it), and so on."

F-Script <http://www.fscript.org/> sounds like it might be good for this too: "F-Script is a lightweight object-oriented scripting layer specifically designed for the Mac OS X object system (i.e. Cocoa). F-Script provides scripting and interactive access to Cocoa frameworks and custom Objective-C objects."

has
Tuesday, April 06, 2004

*  Recent Topics

*  Fog Creek Home