gnome_app_driver 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Changelog.md +7 -0
- data/README.md +2 -1
- data/lib/gnome_app_driver.rb +12 -18
- metadata +89 -25
- data/Gemfile +0 -5
- data/Rakefile +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ee50930853f322229cbb62376c1cf7f008665bf908bf9f45eb993d75602f716
|
4
|
+
data.tar.gz: 0c78c6df67945f1d8626cbf200937b4465bb5b23f93c4936f131974b20e685c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfaa21c9a44c23c38999cb2d387df02d3d2c79c5f7d886fc86eb16e6e2a64ce416f6cd62afeac4cefdd6a7ab80cabb64766b2413f8f861a389fb0c6e8f393650
|
7
|
+
data.tar.gz: 322f24bc77df2a0fc95c9becc8d59a850e52210bbea05bbd0241a7e11e8592b6c2cef5fb7977a4a274aa55bcac330f5a06431605816148c739aa698e4faf4212
|
data/Changelog.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## 0.3.0 / 2020-11-14
|
4
|
+
|
5
|
+
* Drop support for Ruby version 2.3 and 2.4
|
6
|
+
* Remove `GnomeAppDriver#press_ctrl_q` because it does not and likely will never
|
7
|
+
work on Wayland. Use a regular action to quit your application instead.
|
8
|
+
* Provide access to the main application Atspi object through `GnomeAppDriver#application`
|
9
|
+
|
3
10
|
## 0.2.1 / 2018-11-03
|
4
11
|
|
5
12
|
* Loosen dependencies
|
data/README.md
CHANGED
@@ -40,7 +40,8 @@ Say, your application is called `foo`. Then, in your tests, do something like th
|
|
40
40
|
textbox.get_text(0, 100).must_equal 'Foo bar baz'
|
41
41
|
|
42
42
|
# Quit application
|
43
|
-
|
43
|
+
menu_item = frame.find_role :menu_item, /Quit/
|
44
|
+
menu_item.do_action 0
|
44
45
|
|
45
46
|
# Check exit status
|
46
47
|
status = @driver.cleanup
|
data/lib/gnome_app_driver.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gobject-introspection"
|
4
4
|
|
5
5
|
# Namespace for Atspi classes.
|
6
6
|
module Atspi
|
7
7
|
end
|
8
8
|
|
9
9
|
# Load Atspi namespace with GObjectIntrospection.
|
10
|
-
GObjectIntrospection::Loader.new(Atspi).load(
|
10
|
+
GObjectIntrospection::Loader.new(Atspi).load("Atspi")
|
11
11
|
|
12
12
|
# Utility monkey-patches for the Atspi::Accessible class
|
13
13
|
module AtspiAccessiblePatches
|
@@ -44,7 +44,7 @@ Atspi::Accessible.include AtspiAccessiblePatches
|
|
44
44
|
class GnomeAppDriver
|
45
45
|
def initialize(app_name, app_file: nil, verbose: false)
|
46
46
|
@app_file = app_file || "bin/#{app_name}"
|
47
|
-
@lib_dir =
|
47
|
+
@lib_dir = "lib"
|
48
48
|
@app_name = app_name
|
49
49
|
@pid = nil
|
50
50
|
@verbose = verbose
|
@@ -52,10 +52,10 @@ class GnomeAppDriver
|
|
52
52
|
@thread = nil
|
53
53
|
end
|
54
54
|
|
55
|
-
attr_reader :frame
|
55
|
+
attr_reader :frame, :application
|
56
56
|
|
57
57
|
def boot(test_timeout: 30, exit_timeout: 10, arguments: [])
|
58
|
-
raise
|
58
|
+
raise "Already booted" if @pid
|
59
59
|
|
60
60
|
spawn_process(arguments)
|
61
61
|
|
@@ -64,8 +64,8 @@ class GnomeAppDriver
|
|
64
64
|
@frame = find_and_focus_frame
|
65
65
|
|
66
66
|
@thread = Thread.new do
|
67
|
-
wait_for(
|
68
|
-
wait_for(
|
67
|
+
wait_for("test to be done", test_timeout) { @cleanup }
|
68
|
+
wait_for("pid to go away", exit_timeout) { !@pid }
|
69
69
|
kill_process if @pid
|
70
70
|
end
|
71
71
|
end
|
@@ -76,12 +76,6 @@ class GnomeAppDriver
|
|
76
76
|
@pid = Process.spawn command
|
77
77
|
end
|
78
78
|
|
79
|
-
def press_ctrl_q
|
80
|
-
Atspi.generate_keyboard_event(37, nil, :press)
|
81
|
-
Atspi.generate_keyboard_event(24, nil, :pressrelease)
|
82
|
-
Atspi.generate_keyboard_event(37, nil, :release)
|
83
|
-
end
|
84
|
-
|
85
79
|
def cleanup
|
86
80
|
status = exit_status
|
87
81
|
@pid = nil
|
@@ -92,14 +86,14 @@ class GnomeAppDriver
|
|
92
86
|
private
|
93
87
|
|
94
88
|
def find_and_focus_frame
|
95
|
-
|
96
|
-
raise
|
89
|
+
@application = wait_for("app to appear", 10) { find_app }
|
90
|
+
raise "App not found" unless @application
|
97
91
|
|
98
|
-
frame =
|
92
|
+
frame = @application.get_child_at_index 0
|
99
93
|
role = frame.role
|
100
94
|
raise "Frame has unexpected role #{role.inspect}" unless role == :frame
|
101
95
|
|
102
|
-
wait_for(
|
96
|
+
wait_for("frame to be focused", 10) do
|
103
97
|
frame.state_set.contains(Atspi::StateType::ACTIVE)
|
104
98
|
end
|
105
99
|
|
@@ -108,7 +102,7 @@ class GnomeAppDriver
|
|
108
102
|
|
109
103
|
def kill_process
|
110
104
|
log "About to kill child process #{@pid}"
|
111
|
-
Process.kill
|
105
|
+
Process.kill "KILL", @pid
|
112
106
|
end
|
113
107
|
|
114
108
|
def log(message)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gnome_app_driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matijs van Zuijlen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gobject-introspection
|
@@ -25,94 +25,158 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: gtk3
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3.2'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '3.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5.12'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '5.12'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.13.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.13.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '13.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
83
|
-
|
82
|
+
version: '13.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.3.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.3.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop-minitest
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.10.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.10.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-packaging
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.5.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.5.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop-performance
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.8.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.8.0
|
139
|
+
description: 'Driver to test the UI of applications using Ruby-GNOME2 by interacting
|
140
|
+
with them via Atspi.
|
141
|
+
|
142
|
+
'
|
84
143
|
email:
|
85
144
|
- matijs@matijs.net
|
86
145
|
executables: []
|
87
146
|
extensions: []
|
88
|
-
extra_rdoc_files:
|
147
|
+
extra_rdoc_files:
|
148
|
+
- README.md
|
149
|
+
- Changelog.md
|
89
150
|
files:
|
90
151
|
- Changelog.md
|
91
|
-
- Gemfile
|
92
152
|
- LICENSE
|
93
153
|
- README.md
|
94
|
-
- Rakefile
|
95
154
|
- lib/gnome_app_driver.rb
|
96
155
|
homepage: http://www.github.com/mvz/ruby-gnome2_app_driver
|
97
|
-
licenses:
|
98
|
-
|
156
|
+
licenses:
|
157
|
+
- LGPL-2.1+
|
158
|
+
metadata:
|
159
|
+
homepage_uri: http://www.github.com/mvz/ruby-gnome2_app_driver
|
160
|
+
source_code_uri: https://github.com/mvz/ruby-gnome2_app_driver
|
161
|
+
changelog_uri: https://github.com/mvzruby-gnome2_app_driver/blob/master/Changelog.md
|
99
162
|
post_install_message:
|
100
|
-
rdoc_options:
|
163
|
+
rdoc_options:
|
164
|
+
- "--main"
|
165
|
+
- README.md
|
101
166
|
require_paths:
|
102
167
|
- lib
|
103
168
|
required_ruby_version: !ruby/object:Gem::Requirement
|
104
169
|
requirements:
|
105
170
|
- - ">="
|
106
171
|
- !ruby/object:Gem::Version
|
107
|
-
version: 2.
|
172
|
+
version: 2.5.0
|
108
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
174
|
requirements:
|
110
175
|
- - ">="
|
111
176
|
- !ruby/object:Gem::Version
|
112
177
|
version: '0'
|
113
178
|
requirements: []
|
114
|
-
|
115
|
-
rubygems_version: 2.7.6
|
179
|
+
rubygems_version: 3.1.2
|
116
180
|
signing_key:
|
117
181
|
specification_version: 4
|
118
182
|
summary: Test Ruby-GNOME2 applications using Atspi
|
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rake/clean'
|
4
|
-
require 'bundler/gem_tasks'
|
5
|
-
require 'rake/testtask'
|
6
|
-
|
7
|
-
namespace :test do
|
8
|
-
Rake::TestTask.new(:end_to_end) do |t|
|
9
|
-
t.libs = ['lib']
|
10
|
-
t.test_files = FileList['test/end_to_end/*_test.rb']
|
11
|
-
t.warning = true
|
12
|
-
end
|
13
|
-
|
14
|
-
task all: [:end_to_end]
|
15
|
-
end
|
16
|
-
|
17
|
-
task test: 'test:all'
|
18
|
-
|
19
|
-
task default: 'test'
|