An open API service indexing awesome lists of open source software.

https://github.com/mvz/gnome_app_driver

Test Ruby-GNOME2 applications using Atspi
https://github.com/mvz/gnome_app_driver

gnome hacktoberfest ruby ruby-gnome2

Last synced: 11 months ago
JSON representation

Test Ruby-GNOME2 applications using Atspi

Awesome Lists containing this project

README

          

# Ruby-GNOME2 App Driver

Test driver for Ruby-GNOME2 applications using Atspi. Takes care of boot and
shutdown, and provides a handle on the GUI's main UI frame.

## Usage

This driver assumes your application lives in `bin/` and uses additional ruby
code in `lib/`.

Say, your application is called `foo`. Then, in your tests, do something like this:

```ruby
require 'gnome_app_driver'

describe 'The application' do
before do
@driver = GnomeAppDriver.new('foo')

# This will boot `ruby -Ilib bin/foo`, wait for its main window to appear,
# and focus it.
@driver.boot
end

it 'does stuff' do
# Fetch the main window's atspi object
frame = @driver.frame

# You can now interact with the window's objects

# Select item matching /bar/ from combo box:
box = frame.find_role :combo_box
item = box.find_role :menu_item, /bar/
box.get_action_name(0).must_equal 'press'
box.do_action 0
item.get_action_name(0).must_equal 'click'
item.do_action 0

# Fetch contents of a text box
textbox = frame.find_role :text
textbox.get_text(0, 100).must_equal 'Foo bar baz'

# Quit application
menu_item = frame.find_role :menu_item, /Quit/
menu_item.do_action 0

# Check exit status
status = @driver.cleanup
status.exitstatus.must_equal 0
end

after do
# Ensure application is cleaned up
@driver.cleanup
end
end
```

## Installation

```
gem install gnome_app_driver
```

## Dependencies

Ruby-GNOME2 App Driver depends on the `gobject-introspection` gem. It also
requires Ruby 3.0 or higher.

## Contributing

Contributions are welcome! Please feel free to create issues or pull requests
on GitHub.

## License

Copyright © 2015-2024 [Matijs van Zuijlen](http://www.matijs.net).
See LICENSE for details.