appium_lib_core 4.1.0 → 5.0.0.rc6

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +8 -0
  3. data/.github/workflows/unittest.yml +8 -9
  4. data/.rubocop.yml +89 -1
  5. data/CHANGELOG.md +64 -277
  6. data/README.md +7 -6
  7. data/Rakefile +4 -0
  8. data/appium_lib_core.gemspec +4 -4
  9. data/ci-jobs/functional/run_appium.yml +3 -3
  10. data/ci-jobs/functional_test.yml +3 -3
  11. data/docs/mobile_command.md +2 -2
  12. data/lib/appium_lib_core/android/device/auth_finger_print.rb +2 -1
  13. data/lib/appium_lib_core/android/device.rb +4 -4
  14. data/lib/appium_lib_core/common/base/bridge.rb +297 -90
  15. data/lib/appium_lib_core/common/base/capabilities.rb +10 -3
  16. data/lib/appium_lib_core/common/base/device_ime.rb +49 -0
  17. data/lib/appium_lib_core/common/base/driver.rb +148 -128
  18. data/lib/appium_lib_core/common/base/driver_settings.rb +51 -0
  19. data/lib/appium_lib_core/common/base/has_location.rb +80 -0
  20. data/lib/appium_lib_core/common/base/has_network_connection.rb +56 -0
  21. data/lib/appium_lib_core/common/base/http_default.rb +1 -3
  22. data/lib/appium_lib_core/common/base/remote_status.rb +31 -0
  23. data/lib/appium_lib_core/common/base/rotable.rb +54 -0
  24. data/lib/appium_lib_core/common/base/screenshot.rb +6 -6
  25. data/lib/appium_lib_core/common/base/search_context.rb +11 -4
  26. data/lib/appium_lib_core/common/base.rb +1 -3
  27. data/lib/appium_lib_core/common/command.rb +259 -4
  28. data/lib/appium_lib_core/common/device/image_comparison.rb +12 -4
  29. data/lib/appium_lib_core/common/device/keyevent.rb +4 -4
  30. data/lib/appium_lib_core/common/{command/mjsonwp.rb → device/orientation.rb} +14 -11
  31. data/lib/appium_lib_core/common/device/value.rb +6 -6
  32. data/lib/appium_lib_core/common/error.rb +4 -1
  33. data/lib/appium_lib_core/common/log.rb +4 -1
  34. data/lib/appium_lib_core/common/touch_action/touch_actions.rb +1 -1
  35. data/lib/appium_lib_core/common/wait.rb +42 -10
  36. data/lib/appium_lib_core/device.rb +1 -5
  37. data/lib/appium_lib_core/driver.rb +27 -46
  38. data/lib/appium_lib_core/{patch.rb → element.rb} +66 -9
  39. data/lib/appium_lib_core/ios/uiautomation/patch.rb +1 -1
  40. data/lib/appium_lib_core/{common/base/command.rb → mac2/bridge.rb} +9 -8
  41. data/lib/appium_lib_core/mac2/device/screen.rb +48 -0
  42. data/lib/appium_lib_core/mac2/device.rb +92 -0
  43. data/lib/appium_lib_core/mac2.rb +17 -0
  44. data/lib/appium_lib_core/version.rb +2 -2
  45. data/lib/appium_lib_core.rb +2 -5
  46. data/release_notes.md +92 -0
  47. data/script/commands.rb +3 -37
  48. metadata +28 -28
  49. data/lib/appium_lib_core/common/base/bridge/mjsonwp.rb +0 -81
  50. data/lib/appium_lib_core/common/base/bridge/w3c.rb +0 -252
  51. data/lib/appium_lib_core/common/command/common.rb +0 -110
  52. data/lib/appium_lib_core/common/command/w3c.rb +0 -56
data/release_notes.md CHANGED
@@ -1,3 +1,95 @@
1
+ #### v4.7.1 2021-09-26
2
+
3
+ - [cdd8906](https://github.com/appium/ruby_lib_core/commit/cdd890662585aa5051912d20d90ec3c3866ad8b1) Release 4.7.1
4
+ - [059b092](https://github.com/appium/ruby_lib_core/commit/059b0920becd60d691b0b4fac05cc0d96bcc59c7) ci: tweak brew install
5
+ - [fb32697](https://github.com/appium/ruby_lib_core/commit/fb32697d5ee7cf4ea4367aa9f9bf4458723d6fce) feat: allow to override an existing method by add_command (#330)
6
+ - [cbf7f1f](https://github.com/appium/ruby_lib_core/commit/cbf7f1fc2ce6bb8833e2a7324446d79cbc848834) chore(deps-dev): update webmock requirement from ~> 3.13.0 to ~> 3.14.0 (#329)
7
+ - [beefb17](https://github.com/appium/ruby_lib_core/commit/beefb179ac25e9337bf2badaf4eb0c4cfc5b1e45) chore(deps-dev): update rubocop requirement from = 1.12.0 to = 1.12.1 (#322)
8
+ - [3438b48](https://github.com/appium/ruby_lib_core/commit/3438b481523ec978d06bc243cd42eee8dc00356f) docs: tweak docstring
9
+
10
+
11
+ #### v4.7.0 2021-07-17
12
+
13
+ - [0059974](https://github.com/appium/ruby_lib_core/commit/0059974b0b1d79a822db84d8b0169e8393e00ef9) Release 4.7.0
14
+ - [0f93a52](https://github.com/appium/ruby_lib_core/commit/0f93a52bbdc44bf916c9b974fe9fd09d48e5ff39) test: add more example and test (#328)
15
+ - [9e37b3b](https://github.com/appium/ruby_lib_core/commit/9e37b3bc15f72f7c0117a49945a3fe482598f374) feat: add satellites for Android emulators (#327)
16
+ - [3063a73](https://github.com/appium/ruby_lib_core/commit/3063a73fa291dc378daa53b7df2e4b0b8a6f03d2) ci: calls quit_driver to ensure close the previous session
17
+ - [43fb9e7](https://github.com/appium/ruby_lib_core/commit/43fb9e77f5492a92f4f8c5a5bda71be9c3a9e2c8) chore: tweak naming in an internal variable
18
+
19
+
20
+ #### v4.6.0 2021-06-03
21
+
22
+ - [0dacfab](https://github.com/appium/ruby_lib_core/commit/0dacfab1256e1447e1f7a5974dfcf48ee0a72b9d) Release 4.6.0
23
+ - [b9f015d](https://github.com/appium/ruby_lib_core/commit/b9f015d7dea14964a0733f2385ebcff68da1e18e) feat: allow to add commands dynamically (#325)
24
+ - [3de96ee](https://github.com/appium/ruby_lib_core/commit/3de96eea133ccbcbc5c4d77adc7d67c065a5a38c) chore(deps-dev): update webmock requirement from ~> 3.12.1 to ~> 3.13.0 (#324)
25
+ - [f1a9e79](https://github.com/appium/ruby_lib_core/commit/f1a9e79f3bd4d134e125fc2ed9adcf3d085afc9a) docs: address func test code as working example
26
+ - [eb85b1b](https://github.com/appium/ruby_lib_core/commit/eb85b1b26623436cb0aae95a00fef7bc2d795520) remove ; in a test
27
+ - [1632637](https://github.com/appium/ruby_lib_core/commit/1632637fd872c0b80dfb97b8514ada6a7164eebf) chore(deps-dev): update rubocop requirement from = 1.11.0 to = 1.12.0 (#321)
28
+ - [b9e47aa](https://github.com/appium/ruby_lib_core/commit/b9e47aa9b02f060ffa91e8410ab97dc87d3640a4) docs: add docstring
29
+ - [954a2fe](https://github.com/appium/ruby_lib_core/commit/954a2feebb768a55b496a2614d9e4dd8b702fc1e) chore(deps-dev): update rubocop requirement from = 1.8.1 to = 1.11.0 (#316)
30
+ - [a5b9651](https://github.com/appium/ruby_lib_core/commit/a5b9651aa349c10bd9759fedac6f09e27012a5e5) chore(deps-dev): update webmock requirement from ~> 3.11.0 to ~> 3.12.1 (#319)
31
+ - [485c096](https://github.com/appium/ruby_lib_core/commit/485c096273178aa5e21f28d93545fd127cbb8735) test: add assertion
32
+
33
+
34
+ #### v4.5.0 2021-03-14
35
+
36
+ - [656230e](https://github.com/appium/ruby_lib_core/commit/656230e688ed86414c06efaa73bce7359933cc91) Release 4.5.0
37
+ - [a0a3cfc](https://github.com/appium/ruby_lib_core/commit/a0a3cfc71783bed3d1b0e7afbf6bc0a27bf60a48) feat: add speed option (#318)
38
+ - [16b4f09](https://github.com/appium/ruby_lib_core/commit/16b4f0991deb639314857c3cbece1e4d00393646) feat: add multiple and match_neighbour_threshold (#313)
39
+ - [d195a5b](https://github.com/appium/ruby_lib_core/commit/d195a5ba48c2e1a7229e0145eac616fd886c1ee0) ci: use node 12
40
+
41
+
42
+ #### v4.4.1 2021-02-15
43
+
44
+ - [dc34419](https://github.com/appium/ruby_lib_core/commit/dc34419dfcc4dd8d499a6407d45ab3efe70c2445) Release 4.4.1
45
+ - [3085048](https://github.com/appium/ruby_lib_core/commit/3085048b4816e3415017ebb188e653c8e229a05e) chore: return {} in nil case as well
46
+
47
+
48
+ #### v4.4.0 2021-02-13
49
+
50
+ - [06c68fb](https://github.com/appium/ruby_lib_core/commit/06c68fbe3ffdbb7b068d2f71ad6841c66dbabf8f) Release 4.4.0
51
+ - [3c54ae2](https://github.com/appium/ruby_lib_core/commit/3c54ae25d9a334f3690c94ce8a59a5c6a4bacd20) feat: always return {} in appium_server_version for errors (#311)
52
+
53
+
54
+ #### v4.3.1 2021-02-07
55
+
56
+ - [1f4d52c](https://github.com/appium/ruby_lib_core/commit/1f4d52cc915783cf89cf4b8ca5a21bd1af5403e0) Release 4.3.1
57
+ - [fb41014](https://github.com/appium/ruby_lib_core/commit/fb410146567ed03902b602813881fd3abc3a3d28) chore: change log level
58
+ - [1e54662](https://github.com/appium/ruby_lib_core/commit/1e546628c871e4ed9c8aa038a455d03e4e2e6c4e) chore : Create Dependabot config file (#309)
59
+
60
+
61
+ #### v4.3.0 2021-02-05
62
+
63
+ - [6e85426](https://github.com/appium/ruby_lib_core/commit/6e85426c1ff8f3e4b90d3da5305d493500539467) Release 4.3.0
64
+ - [405b3d8](https://github.com/appium/ruby_lib_core/commit/405b3d8e627323376dbf74a4423d0ebce5ca0cad) feat: Add mac2 module and screen recording option (#308)
65
+ - [876d254](https://github.com/appium/ruby_lib_core/commit/876d25494c76c31ad5c26900d6e30e30ecd8d20c) chore: teak types in yardoc (#307)
66
+ - [7548ea9](https://github.com/appium/ruby_lib_core/commit/7548ea9cb7e031a3689a63e75d32da82d317488a) test: add wait
67
+ - [9d6fef4](https://github.com/appium/ruby_lib_core/commit/9d6fef469fad8bccf61ee6565f2e30095f4e2a6a) feat: makes direct_connect true by default (#303)
68
+ - [761067e](https://github.com/appium/ruby_lib_core/commit/761067e5c42cfb3e4c1e5c5a377dbeb3c903eb7b) test: add location test (#302)
69
+ - [bd33397](https://github.com/appium/ruby_lib_core/commit/bd3339791552d2eb5181ca4475c9ebc90644a456) chore(deps-dev): update rubocop requirement from = 1.8.0 to = 1.8.1 (#301)
70
+
71
+
72
+ #### v4.2.1 2021-01-10
73
+
74
+ - [23e944e](https://github.com/appium/ruby_lib_core/commit/23e944ed72c6ea861532f5acc1381af4441705e6) Release 4.2.1
75
+ - [1a416b1](https://github.com/appium/ruby_lib_core/commit/1a416b136beb2b9115d3eb6637b22817f0e55601) chore: move rotable for w3c (#300)
76
+ - [95821c6](https://github.com/appium/ruby_lib_core/commit/95821c6f1a4ebc785e2dc3e6e16c1705521237e8) ci: bump android app (#299)
77
+ - [4e1770e](https://github.com/appium/ruby_lib_core/commit/4e1770e3b9d6995b1d5430b9033097609edca1c8) chore(deps-dev): update rubocop requirement from = 1.7.0 to = 1.8.0 (#298)
78
+ - [b230512](https://github.com/appium/ruby_lib_core/commit/b230512c52875ea70545d3d2262c306640f87f7d) chore: fix rubocop
79
+
80
+
81
+ #### v4.2.0 2021-01-02
82
+
83
+ - [e55b2b6](https://github.com/appium/ruby_lib_core/commit/e55b2b6f7fe293091be0d3835075e66c74f3b9dd) Release 4.2.0
84
+ - [b0cd235](https://github.com/appium/ruby_lib_core/commit/b0cd235a7fb6e5a8957871650bf86962cf0e0368) feat: append screenshot in element module as well (#297)
85
+
86
+
87
+ #### v4.1.1 2020-12-25
88
+
89
+ - [3a4cf56](https://github.com/appium/ruby_lib_core/commit/3a4cf56c73a64fb10ca0b7fecc5800719838095c) Release 4.1.1
90
+ - [6b2d7dd](https://github.com/appium/ruby_lib_core/commit/6b2d7ddf027b5a9f49cbe9a7f5622eb345e2c076) fix: keyword argument in Ruby 3
91
+
92
+
1
93
  #### v4.1.0 2020-12-25
2
94
 
3
95
  - [89110a9](https://github.com/appium/ruby_lib_core/commit/89110a995b869471a134f8c45ebe8dfbaabfba63) Release 4.1.0
data/script/commands.rb CHANGED
@@ -18,26 +18,18 @@ require './lib/appium_lib_core'
18
18
  module Script
19
19
  class CommandsChecker
20
20
  attr_reader :spec_commands,
21
- :implemented_mjsonwp_commands, :implemented_w3c_commands, :implemented_core_commands,
22
- :webdriver_oss_commands, :webdriver_w3c_commands
21
+ :implemented_w3c_commands, :implemented_core_commands,
22
+ :webdriver_w3c_commands
23
23
 
24
24
  # Set commands implemented in this core library.
25
25
  #
26
- # - implemented_mjsonwp_commands: All commands include ::Selenium::WebDriver::Remote::OSS::Bridge::COMMANDS
27
- # - implemented_w3c_commands: All commands include ::Selenium::WebDriver::Remote::W3C::Bridge::COMMANDS
26
+ # - implemented_w3c_commands: All commands include ::Selenium::WebDriver::Remote::Bridge::COMMANDS
28
27
  # - implemented_core_commands: All commands except for selenium-webdriver's commands
29
- # - webdriver_oss_commands: ::Selenium::WebDriver::Remote::OSS::Bridge::COMMANDS
30
- # - webdriver_w3c_commands: ::Selenium::WebDriver::Remote::W3C::Bridge::COMMANDS
31
28
  #
32
29
  def initialize
33
30
  @spec_commands = nil
34
31
 
35
- @implemented_mjsonwp_commands = convert_driver_commands Appium::Core::Commands::MJSONWP::COMMANDS
36
- @implemented_w3c_commands = convert_driver_commands Appium::Core::Commands::W3C::COMMANDS
37
32
  @implemented_core_commands = convert_driver_commands Appium::Core::Commands::COMMANDS
38
-
39
- @webdriver_oss_commands = convert_driver_commands Appium::Core::Base::Commands::OSS
40
- @webdriver_w3c_commands = convert_driver_commands Appium::Core::Base::Commands::W3C
41
33
  end
42
34
 
43
35
  # Get the bellow url's file.
@@ -80,18 +72,6 @@ module Script
80
72
  end
81
73
  end
82
74
 
83
- # All commands which haven't been implemented in ruby core library yet.
84
- # @return [Hash]
85
- #
86
- def all_diff_commands_mjsonwp
87
- result = compare_commands(@spec_commands, @implemented_mjsonwp_commands)
88
-
89
- white_list.each { |v| result.delete v }
90
- w3c_spec.each { |v| result.delete v }
91
-
92
- result
93
- end
94
-
95
75
  # All commands which haven't been implemented in ruby core library yet.
96
76
  # @return [Hash]
97
77
  #
@@ -111,20 +91,6 @@ module Script
111
91
  result
112
92
  end
113
93
 
114
- def diff_webdriver_oss
115
- result = compare_commands(@spec_commands, @webdriver_oss_commands)
116
- white_list.each { |v| result.delete v }
117
- w3c_spec.each { |v| result.delete v }
118
- result
119
- end
120
-
121
- def diff_webdriver_w3c
122
- result = compare_commands(@spec_commands, @webdriver_w3c_commands)
123
- white_list.each { |v| result.delete v }
124
- mjsonwp_spec.each { |v| result.delete v }
125
- result
126
- end
127
-
128
94
  def compare_commands(command1, with_command2)
129
95
  return {} if command1.nil?
130
96
  return command1 if with_command2.nil?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.0.0.rc6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazuaki MATSUO
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-26 00:00:00.000000000 Z
11
+ date: 2021-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -16,20 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.14'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 3.14.1
19
+ version: 4.0.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '3.14'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 3.14.1
26
+ version: 4.0.0
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: faye-websocket
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -120,28 +114,28 @@ dependencies:
120
114
  requirements:
121
115
  - - "~>"
122
116
  - !ruby/object:Gem::Version
123
- version: 3.11.0
117
+ version: 3.14.0
124
118
  type: :development
125
119
  prerelease: false
126
120
  version_requirements: !ruby/object:Gem::Requirement
127
121
  requirements:
128
122
  - - "~>"
129
123
  - !ruby/object:Gem::Version
130
- version: 3.11.0
124
+ version: 3.14.0
131
125
  - !ruby/object:Gem::Dependency
132
126
  name: rubocop
133
127
  requirement: !ruby/object:Gem::Requirement
134
128
  requirements:
135
129
  - - '='
136
130
  - !ruby/object:Gem::Version
137
- version: 1.7.0
131
+ version: 1.22.2
138
132
  type: :development
139
133
  prerelease: false
140
134
  version_requirements: !ruby/object:Gem::Requirement
141
135
  requirements:
142
136
  - - '='
143
137
  - !ruby/object:Gem::Version
144
- version: 1.7.0
138
+ version: 1.22.2
145
139
  - !ruby/object:Gem::Dependency
146
140
  name: appium_thor
147
141
  requirement: !ruby/object:Gem::Requirement
@@ -221,6 +215,7 @@ extra_rdoc_files: []
221
215
  files:
222
216
  - ".github/ISSUE_TEMPLATE/issue-report.md"
223
217
  - ".github/contributing.md"
218
+ - ".github/dependabot.yml"
224
219
  - ".github/issue_template.md"
225
220
  - ".github/workflows/unittest.yml"
226
221
  - ".gitignore"
@@ -261,19 +256,19 @@ files:
261
256
  - lib/appium_lib_core/common.rb
262
257
  - lib/appium_lib_core/common/base.rb
263
258
  - lib/appium_lib_core/common/base/bridge.rb
264
- - lib/appium_lib_core/common/base/bridge/mjsonwp.rb
265
- - lib/appium_lib_core/common/base/bridge/w3c.rb
266
259
  - lib/appium_lib_core/common/base/capabilities.rb
267
- - lib/appium_lib_core/common/base/command.rb
260
+ - lib/appium_lib_core/common/base/device_ime.rb
268
261
  - lib/appium_lib_core/common/base/driver.rb
262
+ - lib/appium_lib_core/common/base/driver_settings.rb
263
+ - lib/appium_lib_core/common/base/has_location.rb
264
+ - lib/appium_lib_core/common/base/has_network_connection.rb
269
265
  - lib/appium_lib_core/common/base/http_default.rb
270
266
  - lib/appium_lib_core/common/base/platform.rb
267
+ - lib/appium_lib_core/common/base/remote_status.rb
268
+ - lib/appium_lib_core/common/base/rotable.rb
271
269
  - lib/appium_lib_core/common/base/screenshot.rb
272
270
  - lib/appium_lib_core/common/base/search_context.rb
273
271
  - lib/appium_lib_core/common/command.rb
274
- - lib/appium_lib_core/common/command/common.rb
275
- - lib/appium_lib_core/common/command/mjsonwp.rb
276
- - lib/appium_lib_core/common/command/w3c.rb
277
272
  - lib/appium_lib_core/common/device/app_management.rb
278
273
  - lib/appium_lib_core/common/device/app_state.rb
279
274
  - lib/appium_lib_core/common/device/battery_status.rb
@@ -287,6 +282,7 @@ files:
287
282
  - lib/appium_lib_core/common/device/ime_actions.rb
288
283
  - lib/appium_lib_core/common/device/keyboard.rb
289
284
  - lib/appium_lib_core/common/device/keyevent.rb
285
+ - lib/appium_lib_core/common/device/orientation.rb
290
286
  - lib/appium_lib_core/common/device/screen_record.rb
291
287
  - lib/appium_lib_core/common/device/setting.rb
292
288
  - lib/appium_lib_core/common/device/touch_actions.rb
@@ -301,6 +297,7 @@ files:
301
297
  - lib/appium_lib_core/common/ws/websocket.rb
302
298
  - lib/appium_lib_core/device.rb
303
299
  - lib/appium_lib_core/driver.rb
300
+ - lib/appium_lib_core/element.rb
304
301
  - lib/appium_lib_core/ios.rb
305
302
  - lib/appium_lib_core/ios/device.rb
306
303
  - lib/appium_lib_core/ios/device/clipboard.rb
@@ -313,7 +310,10 @@ files:
313
310
  - lib/appium_lib_core/ios/xcuitest/device/performance.rb
314
311
  - lib/appium_lib_core/ios/xcuitest/device/screen.rb
315
312
  - lib/appium_lib_core/ios_xcuitest.rb
316
- - lib/appium_lib_core/patch.rb
313
+ - lib/appium_lib_core/mac2.rb
314
+ - lib/appium_lib_core/mac2/bridge.rb
315
+ - lib/appium_lib_core/mac2/device.rb
316
+ - lib/appium_lib_core/mac2/device/screen.rb
317
317
  - lib/appium_lib_core/version.rb
318
318
  - lib/appium_lib_core/windows.rb
319
319
  - lib/appium_lib_core/windows/bridge.rb
@@ -325,7 +325,7 @@ homepage: https://github.com/appium/ruby_lib_core/
325
325
  licenses:
326
326
  - Apache-2.0
327
327
  metadata: {}
328
- post_install_message:
328
+ post_install_message:
329
329
  rdoc_options: []
330
330
  require_paths:
331
331
  - lib
@@ -333,15 +333,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
333
333
  requirements:
334
334
  - - ">="
335
335
  - !ruby/object:Gem::Version
336
- version: '2.4'
336
+ version: '2.6'
337
337
  required_rubygems_version: !ruby/object:Gem::Requirement
338
338
  requirements:
339
- - - ">="
339
+ - - ">"
340
340
  - !ruby/object:Gem::Version
341
- version: '0'
341
+ version: 1.3.1
342
342
  requirements: []
343
- rubygems_version: 3.1.2
344
- signing_key:
343
+ rubygems_version: 3.2.15
344
+ signing_key:
345
345
  specification_version: 4
346
346
  summary: Minimal Ruby library for Appium.
347
347
  test_files: []
@@ -1,81 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- class Base
18
- class Bridge
19
- class MJSONWP < ::Selenium::WebDriver::Remote::OSS::Bridge
20
- include Device::DeviceLock
21
- include Device::Keyboard
22
- include Device::ImeActions
23
- include Device::Setting
24
- include Device::Context
25
- include Device::Value
26
- include Device::FileManagement
27
- include Device::KeyEvent
28
- include Device::ImageComparison
29
- include Device::AppManagement
30
- include Device::AppState
31
- include Device::ScreenRecord::Command
32
- include Device::Device
33
- include Device::TouchActions
34
- include Device::ExecuteDriver
35
-
36
- def commands(command)
37
- ::Appium::Core::Commands::MJSONWP::COMMANDS[command]
38
- end
39
-
40
- # Returns all available sessions on the Appium server instance
41
- def sessions
42
- execute :get_all_sessions
43
- end
44
-
45
- # For Appium
46
- def log_event(vendor, event)
47
- execute :post_log_event, {}, { vendor: vendor, event: event }
48
- end
49
-
50
- # For Appium
51
- def log_events(type = nil)
52
- args = {}
53
- args['type'] = type unless type.nil?
54
-
55
- execute :get_log_events, {}, args
56
- end
57
-
58
- def take_element_screenshot(element)
59
- execute :take_element_screenshot, id: element.ref
60
- end
61
-
62
- def take_viewport_screenshot
63
- # TODO: this hasn't been supported by Espresso driver
64
- execute_script('mobile: viewportScreenshot')
65
- end
66
-
67
- def send_actions(_data)
68
- raise Error::UnsupportedOperationError, '#send_actions has not been supported in MJSONWP'
69
- end
70
-
71
- # For Appium
72
- # @param [Hash] id The id which can get as a response from server
73
- # @return [::Selenium::WebDriver::Element]
74
- def convert_to_element(id)
75
- ::Selenium::WebDriver::Element.new self, element_id_from(id)
76
- end
77
- end # class MJSONWP
78
- end # class Bridge
79
- end # class Base
80
- end # module Core
81
- end # module Appium
@@ -1,252 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- class Base
18
- class Bridge
19
- class W3C < ::Selenium::WebDriver::Remote::W3C::Bridge
20
- include Device::DeviceLock
21
- include Device::Keyboard
22
- include Device::ImeActions
23
- include Device::Setting
24
- include Device::Context
25
- include Device::Value
26
- include Device::FileManagement
27
- include Device::KeyEvent
28
- include Device::ImageComparison
29
- include Device::AppManagement
30
- include Device::AppState
31
- include Device::ScreenRecord::Command
32
- include Device::Device
33
- include Device::TouchActions
34
- include Device::ExecuteDriver
35
-
36
- def commands(command)
37
- ::Appium::Core::Commands::W3C::COMMANDS[command]
38
- end
39
-
40
- # Returns all available sessions on the Appium server instance
41
- def sessions
42
- execute :get_all_sessions
43
- end
44
-
45
- # Perform touch actions for W3C module.
46
- # Generate +touch+ pointer action here and users can use this via +driver.action+
47
- # - https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/W3CActionBuilder.html
48
- # - https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/PointerActions.html
49
- # - https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/KeyActions.html
50
- #
51
- # 'mouse' action is by default in the Ruby client. Appium server force the +mouse+ action to +touch+ once in
52
- # the server side. So we don't consider the case.
53
- #
54
- # @example
55
- #
56
- # element = @driver.find_element(:id, "some id")
57
- # @driver.action.click(element).perform # The 'click' is a part of 'PointerActions'
58
- #
59
- def action(async = false)
60
- # Used for default duration of each touch actions
61
- # Override from 250 milliseconds to 50 milliseconds
62
- action_builder = super
63
- action_builder.default_move_duration = 0.05
64
- action_builder
65
- end
66
-
67
- # Port from MJSONWP
68
- def get_timeouts
69
- execute :get_timeouts
70
- end
71
-
72
- # Port from MJSONWP
73
- def session_capabilities
74
- ::Selenium::WebDriver::Remote::W3C::Capabilities.json_create execute(:get_capabilities)
75
- end
76
-
77
- # Port from MJSONWP
78
- def send_keys_to_active_element(key)
79
- text = ::Selenium::WebDriver::Keys.encode(key).join('')
80
- execute :send_keys_to_active_element, {}, { value: text.split(//) }
81
- end
82
-
83
- # For Appium
84
- # override
85
- def page_source
86
- # For W3C
87
- # execute_script('var source = document.documentElement.outerHTML;' \
88
- # 'if (!source) { source = new XMLSerializer().serializeToString(document); }' \
89
- # 'return source;')
90
- execute :get_page_source
91
- end
92
-
93
- # For Appium
94
- # override
95
- def element_displayed?(element)
96
- # For W3C
97
- # https://github.com/SeleniumHQ/selenium/commit/b618499adcc3a9f667590652c5757c0caa703289
98
- # execute_atom :isDisplayed, element
99
- execute :is_element_displayed, id: element.ref
100
- end
101
-
102
- # For Appium
103
- # override
104
- def element_attribute(element, name)
105
- # For W3C in Selenium Client
106
- # execute_atom :getAttribute, element, name
107
- execute :get_element_attribute, id: element.ref, name: name
108
- end
109
-
110
- # For Appium
111
- # override
112
- def find_element_by(how, what, parent = nil)
113
- how, what = convert_locators(how, what)
114
-
115
- id = if parent
116
- execute :find_child_element, { id: parent }, { using: how, value: what }
117
- else
118
- execute :find_element, {}, { using: how, value: what }
119
- end
120
- ::Selenium::WebDriver::Element.new self, element_id_from(id)
121
- end
122
-
123
- # For Appium
124
- # override
125
- def find_elements_by(how, what, parent = nil)
126
- how, what = convert_locators(how, what)
127
-
128
- ids = if parent
129
- execute :find_child_elements, { id: parent }, { using: how, value: what }
130
- else
131
- execute :find_elements, {}, { using: how, value: what }
132
- end
133
-
134
- ids.map { |id| ::Selenium::WebDriver::Element.new self, element_id_from(id) }
135
- end
136
-
137
- # For Appium
138
- # @param [Hash] id The id which can get as a response from server
139
- # @return [::Selenium::WebDriver::Element]
140
- def convert_to_element(id)
141
- ::Selenium::WebDriver::Element.new self, element_id_from(id)
142
- end
143
-
144
- # For Appium
145
- # override
146
- # called in 'extend DriverExtensions::HasNetworkConnection'
147
- def network_connection
148
- execute :get_network_connection
149
- end
150
-
151
- # For Appium
152
- # override
153
- # called in 'extend DriverExtensions::HasNetworkConnection'
154
- def network_connection=(type)
155
- execute :set_network_connection, {}, { parameters: { type: type } }
156
- end
157
-
158
- # For Appium
159
- # No implementation for W3C webdriver module
160
- # called in 'extend DriverExtensions::HasLocation'
161
- def location
162
- obj = execute(:get_location) || {}
163
- ::Selenium::WebDriver::Location.new obj['latitude'], obj['longitude'], obj['altitude']
164
- end
165
-
166
- # For Appium
167
- # No implementation for W3C webdriver module
168
- # called in +extend DriverExtensions::HasLocation+
169
- # It has below code as well. We should consider the same context in Selenium 4 as backward compatibility.
170
- #
171
- # def location=(loc)
172
- # # note: Location = Struct.new(:latitude, :longitude, :altitude)
173
- # raise TypeError, "expected #{Location}, got #{loc.inspect}:#{loc.class}" unless loc.is_a?(Location)
174
- #
175
- # @bridge.set_location loc.latitude, loc.longitude, loc.altitude
176
- # end
177
- #
178
- def set_location(lat, lon, alt = 0.0)
179
- loc = { latitude: lat, longitude: lon, altitude: alt }
180
- execute :set_location, {}, { location: loc }
181
- end
182
-
183
- #
184
- # logs
185
- #
186
- # For Appium
187
- # No implementation for W3C webdriver module
188
- def available_log_types
189
- types = execute :get_available_log_types
190
- Array(types).map(&:to_sym)
191
- end
192
-
193
- # For Appium
194
- # No implementation for W3C webdriver module
195
- def log(type)
196
- data = execute :get_log, {}, { type: type.to_s }
197
-
198
- Array(data).map do |l|
199
- begin
200
- ::Selenium::WebDriver::LogEntry.new l.fetch('level', 'UNKNOWN'), l.fetch('timestamp'), l.fetch('message')
201
- rescue KeyError
202
- next
203
- end
204
- end
205
- end
206
-
207
- # For Appium
208
- def log_event(vendor, event)
209
- execute :post_log_event, {}, { vendor: vendor, event: event }
210
- end
211
-
212
- # For Appium
213
- def log_events(type = nil)
214
- args = {}
215
- args['type'] = type unless type.nil?
216
-
217
- execute :get_log_events, {}, args
218
- end
219
-
220
- def take_viewport_screenshot
221
- execute_script('mobile: viewportScreenshot')
222
- end
223
-
224
- def take_element_screenshot(element)
225
- execute :take_element_screenshot, id: element.ref
226
- end
227
-
228
- private
229
-
230
- # Don't convert locators for Appium Client
231
- # TODO: Only for Appium. Ideally, we'd like to keep the selenium-webdriver
232
- def convert_locators(how, what)
233
- # case how
234
- # when 'class name'
235
- # how = 'css selector'
236
- # what = ".#{escape_css(what)}"
237
- # when 'id'
238
- # how = 'css selector'
239
- # what = "##{escape_css(what)}"
240
- # when 'name'
241
- # how = 'css selector'
242
- # what = "*[name='#{escape_css(what)}']"
243
- # when 'tag name'
244
- # how = 'css selector'
245
- # end
246
- [how, what]
247
- end
248
- end # class W3C
249
- end # class Bridge
250
- end # class Base
251
- end # module Core
252
- end # module Appium