tui-td 0.2.14 → 0.2.17
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 +56 -0
- data/README.md +24 -6
- data/lib/tui_td/cli.rb +103 -2
- data/lib/tui_td/configuration.rb +33 -0
- data/lib/tui_td/driver.rb +13 -0
- data/lib/tui_td/matchers.rb +258 -12
- data/lib/tui_td/mcp/server.rb +262 -7
- data/lib/tui_td/selector.rb +0 -23
- data/lib/tui_td/snapshot.rb +247 -0
- data/lib/tui_td/test_runner.rb +65 -6
- data/lib/tui_td/version.rb +1 -1
- data/lib/tui_td.rb +2 -0
- metadata +5 -3
data/lib/tui_td/test_runner.rb
CHANGED
|
@@ -170,11 +170,62 @@ module TUITD
|
|
|
170
170
|
check_role(driver, :dialog, nil)
|
|
171
171
|
|
|
172
172
|
when "assert_checkbox"
|
|
173
|
-
check_role(driver, :checkbox, value.to_s, checked: step[:checked])
|
|
173
|
+
check_role(driver, :checkbox, value.to_s, checked: step[:checked], disabled: step[:disabled])
|
|
174
174
|
|
|
175
175
|
when "assert_role"
|
|
176
176
|
role = step[:role]&.to_sym
|
|
177
|
-
check_role(driver, role, value.to_s)
|
|
177
|
+
check_role(driver, role, value.to_s, checked: step[:checked], disabled: step[:disabled])
|
|
178
|
+
|
|
179
|
+
when "assert_input"
|
|
180
|
+
check_role(driver, :input, value == true ? nil : value.to_s)
|
|
181
|
+
|
|
182
|
+
when "assert_label"
|
|
183
|
+
check_role(driver, :label, value == true ? nil : value.to_s)
|
|
184
|
+
|
|
185
|
+
when "assert_menu"
|
|
186
|
+
check_role(driver, :menu, value == true ? nil : value.to_s)
|
|
187
|
+
|
|
188
|
+
when "assert_tab"
|
|
189
|
+
check_role(driver, :tab, value == true ? nil : value.to_s)
|
|
190
|
+
|
|
191
|
+
when "assert_statusbar"
|
|
192
|
+
check_role(driver, :statusbar, value == true ? nil : value.to_s)
|
|
193
|
+
|
|
194
|
+
when "assert_progress_bar"
|
|
195
|
+
check_role(driver, :progress, value == true ? nil : value.to_s)
|
|
196
|
+
|
|
197
|
+
when "snapshot"
|
|
198
|
+
ensure_driver!(driver)
|
|
199
|
+
driver.wait_for_stable if step[:wait] || step["wait"]
|
|
200
|
+
snap_type = (step[:type] || step["type"] || :text).to_s.to_sym
|
|
201
|
+
snap = Snapshot.new(value, type: snap_type)
|
|
202
|
+
snap.save(driver.state_data)
|
|
203
|
+
Result.new(step: action, passed: true,
|
|
204
|
+
message: "Snapshot saved: #{value} (#{snap_type})",)
|
|
205
|
+
|
|
206
|
+
when "assert_snapshot"
|
|
207
|
+
ensure_driver!(driver)
|
|
208
|
+
driver.wait_for_stable if step[:wait] || step["wait"]
|
|
209
|
+
snap_type = (step[:type] || step["type"] || :text).to_s.to_sym
|
|
210
|
+
snap = Snapshot.new(value, type: snap_type)
|
|
211
|
+
|
|
212
|
+
if TUITD.configuration.update_snapshots?
|
|
213
|
+
snap.save(driver.state_data)
|
|
214
|
+
Result.new(step: action, passed: true,
|
|
215
|
+
message: "Snapshot updated: #{value} (#{snap_type})",)
|
|
216
|
+
elsif !snap.exists?
|
|
217
|
+
snap.save(driver.state_data)
|
|
218
|
+
Result.new(step: action, passed: true,
|
|
219
|
+
message: "Snapshot created: #{value} (#{snap_type})",)
|
|
220
|
+
else
|
|
221
|
+
result = snap.compare(driver.state_data)
|
|
222
|
+
msg = if result.passed?
|
|
223
|
+
"Snapshot matches: #{value}"
|
|
224
|
+
else
|
|
225
|
+
"Snapshot mismatch: #{value}\n#{result.message}"
|
|
226
|
+
end
|
|
227
|
+
Result.new(step: action, passed: result.passed?, message: msg)
|
|
228
|
+
end
|
|
178
229
|
|
|
179
230
|
when "close"
|
|
180
231
|
driver&.close
|
|
@@ -224,21 +275,29 @@ module TUITD
|
|
|
224
275
|
|
|
225
276
|
private
|
|
226
277
|
|
|
227
|
-
def check_role(driver, role, text, checked: nil)
|
|
278
|
+
def check_role(driver, role, text, checked: nil, disabled: nil)
|
|
228
279
|
ensure_driver!(driver)
|
|
229
280
|
state = State.new(driver.state_data)
|
|
230
281
|
selector = Selector.new(state)
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
282
|
+
|
|
283
|
+
filters = {}
|
|
284
|
+
filters[:text] = text.to_s if text
|
|
285
|
+
filters[:checked] = checked unless checked.nil?
|
|
286
|
+
filters[:disabled] = disabled unless disabled.nil?
|
|
287
|
+
elements = selector.get_by_role(role, **filters)
|
|
234
288
|
|
|
235
289
|
action = "assert_#{role}"
|
|
236
290
|
if elements.any?
|
|
237
291
|
count = elements.size
|
|
238
292
|
desc = text ? "#{role} #{text.inspect}" : role.to_s
|
|
293
|
+
desc += " (checked)" if checked == true
|
|
294
|
+
desc += " (unchecked)" if checked == false
|
|
295
|
+
desc += " (disabled)" if disabled == true
|
|
239
296
|
Result.new(step: action, passed: true, message: "Found #{count} #{desc} element(s)")
|
|
240
297
|
else
|
|
241
298
|
desc = text ? "#{role} with text #{text.inspect}" : role.to_s
|
|
299
|
+
desc += " (checked)" if checked == true
|
|
300
|
+
desc += " (disabled)" if disabled == true
|
|
242
301
|
Result.new(step: action, passed: false, message: "No #{desc} found")
|
|
243
302
|
end
|
|
244
303
|
end
|
data/lib/tui_td/version.rb
CHANGED
data/lib/tui_td.rb
CHANGED
|
@@ -13,6 +13,8 @@ require_relative "tui_td/driver"
|
|
|
13
13
|
require_relative "tui_td/ansi_parser"
|
|
14
14
|
require_relative "tui_td/ansi_utils"
|
|
15
15
|
require_relative "tui_td/state"
|
|
16
|
+
require_relative "tui_td/configuration"
|
|
17
|
+
require_relative "tui_td/snapshot"
|
|
16
18
|
require_relative "tui_td/screenshot"
|
|
17
19
|
require_relative "tui_td/html_renderer"
|
|
18
20
|
require_relative "tui_td/test_runner"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tui-td
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.17
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Haluk Durmus
|
|
@@ -71,14 +71,14 @@ dependencies:
|
|
|
71
71
|
requirements:
|
|
72
72
|
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: 0.1.
|
|
74
|
+
version: 0.1.3
|
|
75
75
|
type: :runtime
|
|
76
76
|
prerelease: false
|
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
78
|
requirements:
|
|
79
79
|
- - "~>"
|
|
80
80
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: 0.1.
|
|
81
|
+
version: 0.1.3
|
|
82
82
|
- !ruby/object:Gem::Dependency
|
|
83
83
|
name: bundler-audit
|
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -168,12 +168,14 @@ files:
|
|
|
168
168
|
- lib/tui_td/ansi_utils.rb
|
|
169
169
|
- lib/tui_td/cairo_renderer.rb
|
|
170
170
|
- lib/tui_td/cli.rb
|
|
171
|
+
- lib/tui_td/configuration.rb
|
|
171
172
|
- lib/tui_td/driver.rb
|
|
172
173
|
- lib/tui_td/html_renderer.rb
|
|
173
174
|
- lib/tui_td/matchers.rb
|
|
174
175
|
- lib/tui_td/mcp/server.rb
|
|
175
176
|
- lib/tui_td/screenshot.rb
|
|
176
177
|
- lib/tui_td/selector.rb
|
|
178
|
+
- lib/tui_td/snapshot.rb
|
|
177
179
|
- lib/tui_td/state.rb
|
|
178
180
|
- lib/tui_td/test_runner.rb
|
|
179
181
|
- lib/tui_td/unifont_glyphs.rb
|