tui-td 0.2.13 → 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.
@@ -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
- elements = selector.get_by_role(role)
232
- elements = elements.select { |e| e.text&.include?(text.to_s) } if text
233
- elements = elements.select { |e| e.checked == checked } unless checked.nil?
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TUITD
4
- VERSION = "0.2.13"
4
+ VERSION = "0.2.17"
5
5
  end
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.13
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