testa_appium_driver 0.1.21 → 0.1.24

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +23 -0
  3. data/.gitignore +17 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +6 -0
  6. data/Gemfile.lock +1 -1
  7. data/bin/console +17 -0
  8. data/bin/setup +8 -0
  9. data/lib/testa_appium_driver/android/class_selectors.rb +438 -0
  10. data/lib/testa_appium_driver/android/driver.rb +71 -0
  11. data/lib/testa_appium_driver/android/locator/attributes.rb +115 -0
  12. data/lib/testa_appium_driver/android/locator.rb +142 -0
  13. data/lib/testa_appium_driver/android/scroll_actions/uiautomator_scroll_actions.rb +62 -0
  14. data/lib/testa_appium_driver/android/selenium_element.rb +12 -0
  15. data/lib/testa_appium_driver/common/bounds.rb +150 -0
  16. data/lib/testa_appium_driver/common/constants.rb +38 -0
  17. data/lib/testa_appium_driver/common/exceptions/strategy_mix_exception.rb +12 -0
  18. data/lib/testa_appium_driver/common/helpers.rb +272 -0
  19. data/lib/testa_appium_driver/common/locator/scroll_actions.rb +390 -0
  20. data/lib/testa_appium_driver/common/locator.rb +640 -0
  21. data/lib/testa_appium_driver/common/scroll_actions/json_wire_scroll_actions.rb +4 -0
  22. data/lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb +380 -0
  23. data/lib/testa_appium_driver/common/scroll_actions.rb +275 -0
  24. data/lib/testa_appium_driver/common/selenium_element.rb +19 -0
  25. data/lib/testa_appium_driver/driver.rb +338 -0
  26. data/lib/testa_appium_driver/ios/driver.rb +49 -0
  27. data/lib/testa_appium_driver/ios/locator/attributes.rb +89 -0
  28. data/lib/testa_appium_driver/ios/locator.rb +73 -0
  29. data/lib/testa_appium_driver/ios/selenium_element.rb +8 -0
  30. data/lib/testa_appium_driver/ios/type_selectors.rb +201 -0
  31. data/lib/testa_appium_driver.rb +4 -0
  32. data/testa_appium_driver.gemspec +6 -2
  33. metadata +39 -11
  34. data/appium-driver.iml +0 -79
@@ -0,0 +1,201 @@
1
+ module ::TestaAppiumDriver
2
+ #noinspection ALL
3
+ module TypeSelectors
4
+
5
+ # @return [TestaAppiumDriver::Locator]
6
+ def add_selector(*args, &block)
7
+ # if class selector is executed from driver, create new locator instance
8
+ if self.kind_of?(TestaAppiumDriver::Driver) || self.instance_of?(::Selenium::WebDriver::Element) || self.instance_of?(::Appium::Core::Element)
9
+ args.last[:default_find_strategy] = @default_find_strategy
10
+ args.last[:default_scroll_strategy] = @default_scroll_strategy
11
+ if self.instance_of?(::Selenium::WebDriver::Element) || self.instance_of?(::Appium::Core::Element)
12
+ driver = self.get_driver
13
+ else
14
+ driver = self
15
+ end
16
+ Locator.new(driver, self, *args)
17
+ else
18
+ # class selector is executed from locator, just add child selector criteria
19
+ self.add_child_selector(*args)
20
+ end
21
+ end
22
+
23
+ # @param selectors [Hash]
24
+ # @return [TestaAppiumDriver::Locator] first element
25
+ def element(selectors = {})
26
+ add_selector(selectors)
27
+ end
28
+
29
+ # @param params [Hash]
30
+ # @return [TestaAppiumDriver::Locator] all elements that match given selectors
31
+ def elements(params = {})
32
+ params[:single] = false
33
+ add_selector(params)
34
+ end
35
+
36
+
37
+ # @return [TestaAppiumDriver::Locator]
38
+ def window(params = {})
39
+ params[:type] = "XCUIElementTypeWindow"
40
+ add_selector(params)
41
+ end
42
+
43
+ # @return [TestaAppiumDriver::Locator]
44
+ def windows(params = {})
45
+ params[:type] = "XCUIElementTypeWindow"
46
+ params[:single] = false
47
+ add_selector(params)
48
+ end
49
+
50
+ # @return [TestaAppiumDriver::Locator]
51
+ def other(params = {})
52
+ params[:type] = "XCUIElementTypeOther"
53
+ add_selector(params)
54
+ end
55
+
56
+ # @return [TestaAppiumDriver::Locator]
57
+ def others(params = {})
58
+ params[:type] = "XCUIElementTypeOther"
59
+ params[:single] = false
60
+ add_selector(params)
61
+ end
62
+
63
+
64
+ # @return [TestaAppiumDriver::Locator]
65
+ def navigation_bar(params = {})
66
+ params[:type] = "XCUIElementTypeNavigationBar"
67
+ add_selector(params)
68
+ end
69
+
70
+ # @return [TestaAppiumDriver::Locator]
71
+ def navigation_bars(params = {})
72
+ params[:type] = "XCUIElementTypeNavigationBar"
73
+ params[:single] = false
74
+ add_selector(params)
75
+ end
76
+
77
+
78
+ # @return [TestaAppiumDriver::Locator]
79
+ def button(params = {})
80
+ params[:type] = "XCUIElementTypeButton"
81
+ add_selector(params)
82
+ end
83
+
84
+ # @return [TestaAppiumDriver::Locator]
85
+ def buttons(params = {})
86
+ params[:type] = "XCUIElementTypeButton"
87
+ params[:single] = false
88
+ add_selector(params)
89
+ end
90
+
91
+ # @return [TestaAppiumDriver::Locator]
92
+ def collection_view(params = {})
93
+ params[:type] = "XCUIElementTypeCollectionView"
94
+ add_selector(params)
95
+ end
96
+
97
+ # @return [TestaAppiumDriver::Locator]
98
+ def collection_views(params = {})
99
+ params[:type] = "XCUIElementTypeCollectionView"
100
+ params[:single] = false
101
+ add_selector(params)
102
+ end
103
+
104
+
105
+ # @return [TestaAppiumDriver::Locator]
106
+ def image(params = {})
107
+ params[:type] = "XCUIElementTypeImage"
108
+ add_selector(params)
109
+ end
110
+
111
+ # @return [TestaAppiumDriver::Locator]
112
+ def images(params = {})
113
+ params[:type] = "XCUIElementTypeImage"
114
+ params[:single] = false
115
+ add_selector(params)
116
+ end
117
+
118
+ # @return [TestaAppiumDriver::Locator]
119
+ def static_text(params = {})
120
+ params[:type] = "XCUIElementTypeStaticText"
121
+ add_selector(params)
122
+ end
123
+
124
+ # @return [TestaAppiumDriver::Locator]
125
+ def static_texts(params = {})
126
+ params[:type] = "XCUIElementTypeStaticText"
127
+ params[:single] = false
128
+ add_selector(params)
129
+ end
130
+
131
+
132
+ # @return [TestaAppiumDriver::Locator]
133
+ def scroll_view(params = {})
134
+ params[:type] = "XCUIElementTypeScrollView"
135
+ add_selector(params)
136
+ end
137
+
138
+ # @return [TestaAppiumDriver::Locator]
139
+ def scroll_views(params = {})
140
+ params[:type] = "XCUIElementTypeScrollView"
141
+ params[:single] = false
142
+ add_selector(params)
143
+ end
144
+
145
+
146
+ # @return [TestaAppiumDriver::Locator]
147
+ def table(params = {})
148
+ params[:type] = "XCUIElementTypeTable"
149
+ add_selector(params)
150
+ end
151
+
152
+ # @return [TestaAppiumDriver::Locator]
153
+ def tables(params = {})
154
+ params[:type] = "XCUIElementTypeTable"
155
+ params[:single] = false
156
+ add_selector(params)
157
+ end
158
+
159
+ # @return [TestaAppiumDriver::Locator]
160
+ def cell(params = {})
161
+ params[:type] = "XCUIElementTypeCell"
162
+ add_selector(params)
163
+ end
164
+
165
+ # @return [TestaAppiumDriver::Locator]
166
+ def cells(params = {})
167
+ params[:type] = "XCUIElementTypeCell"
168
+ params[:single] = false
169
+ add_selector(params)
170
+ end
171
+
172
+
173
+
174
+ # @return [TestaAppiumDriver::Locator]
175
+ def text_field(params = {})
176
+ params[:type] = "XCUIElementTypeTextField"
177
+ add_selector(params)
178
+ end
179
+
180
+ # @return [TestaAppiumDriver::Locator]
181
+ def text_fields(params = {})
182
+ params[:type] = "XCUIElementTypeTextField"
183
+ params[:single] = false
184
+ add_selector(params)
185
+ end
186
+
187
+
188
+ # @return [TestaAppiumDriver::Locator]
189
+ def secure_text_field(params = {})
190
+ params[:type] = "XCUIElementTypeSecureTextField"
191
+ add_selector(params)
192
+ end
193
+
194
+ # @return [TestaAppiumDriver::Locator]
195
+ def secure_text_fields(params = {})
196
+ params[:type] = "XCUIElementTypeSecureTextField"
197
+ params[:single] = false
198
+ add_selector(params)
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'testa_appium_driver/common/constants'
4
+ require_relative 'testa_appium_driver/driver'
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "testa_appium_driver"
5
- spec.version = "0.1.21"
5
+ spec.version = "0.1.24"
6
6
  spec.authors = ["karlo.razumovic"]
7
7
  spec.email = ["karlo.razumovic@gmail.com"]
8
8
 
@@ -20,7 +20,11 @@ Gem::Specification.new do |spec|
20
20
  spec.metadata["changelog_uri"] = "https://github.com/Karazum/testa_appium_driver"
21
21
 
22
22
  # this can be optimized
23
- spec.files = Dir["#{File.dirname(__FILE__)}/*"]
23
+ # spec.files = Dir["#{File.dirname(__FILE__)}/*"]
24
+
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
+ end
24
28
 
25
29
  spec.bindir = "exe"
26
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testa_appium_driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.21
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - karlo.razumovic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-15 00:00:00.000000000 Z
11
+ date: 2023-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appium_lib_core
@@ -75,15 +75,43 @@ executables: []
75
75
  extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
- - "./CHANGELOG.md"
79
- - "./CODE_OF_CONDUCT.md"
80
- - "./Gemfile"
81
- - "./Gemfile.lock"
82
- - "./LICENSE.txt"
83
- - "./README.md"
84
- - "./Rakefile"
85
- - "./appium-driver.iml"
86
- - "./testa_appium_driver.gemspec"
78
+ - ".gitattributes"
79
+ - ".gitignore"
80
+ - ".rspec"
81
+ - ".rubocop.yml"
82
+ - CHANGELOG.md
83
+ - CODE_OF_CONDUCT.md
84
+ - Gemfile
85
+ - Gemfile.lock
86
+ - LICENSE.txt
87
+ - README.md
88
+ - Rakefile
89
+ - bin/console
90
+ - bin/setup
91
+ - lib/testa_appium_driver.rb
92
+ - lib/testa_appium_driver/android/class_selectors.rb
93
+ - lib/testa_appium_driver/android/driver.rb
94
+ - lib/testa_appium_driver/android/locator.rb
95
+ - lib/testa_appium_driver/android/locator/attributes.rb
96
+ - lib/testa_appium_driver/android/scroll_actions/uiautomator_scroll_actions.rb
97
+ - lib/testa_appium_driver/android/selenium_element.rb
98
+ - lib/testa_appium_driver/common/bounds.rb
99
+ - lib/testa_appium_driver/common/constants.rb
100
+ - lib/testa_appium_driver/common/exceptions/strategy_mix_exception.rb
101
+ - lib/testa_appium_driver/common/helpers.rb
102
+ - lib/testa_appium_driver/common/locator.rb
103
+ - lib/testa_appium_driver/common/locator/scroll_actions.rb
104
+ - lib/testa_appium_driver/common/scroll_actions.rb
105
+ - lib/testa_appium_driver/common/scroll_actions/json_wire_scroll_actions.rb
106
+ - lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb
107
+ - lib/testa_appium_driver/common/selenium_element.rb
108
+ - lib/testa_appium_driver/driver.rb
109
+ - lib/testa_appium_driver/ios/driver.rb
110
+ - lib/testa_appium_driver/ios/locator.rb
111
+ - lib/testa_appium_driver/ios/locator/attributes.rb
112
+ - lib/testa_appium_driver/ios/selenium_element.rb
113
+ - lib/testa_appium_driver/ios/type_selectors.rb
114
+ - testa_appium_driver.gemspec
87
115
  homepage: https://github.com/Karazum/testa_appium_driver
88
116
  licenses:
89
117
  - MIT
data/appium-driver.iml DELETED
@@ -1,79 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="NewModuleRootManager" inherit-compiler-output="true">
4
- <exclude-output />
5
- <content url="file://$MODULE_DIR$">
6
- <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
7
- </content>
8
- <orderEntry type="jdk" jdkName="RVM: ruby-2.7.6" jdkType="RUBY_SDK" />
9
- <orderEntry type="sourceFolder" forTests="false" />
10
- <orderEntry type="library" scope="PROVIDED" name="appium_lib_core (v5.2.2, RVM: ruby-2.7.6) [gem]" level="application" />
11
- <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.6) [gem]" level="application" />
12
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.3.14, RVM: ruby-2.7.6) [gem]" level="application" />
13
- <orderEntry type="library" scope="PROVIDED" name="childprocess (v4.1.0, RVM: ruby-2.7.6) [gem]" level="application" />
14
- <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.6) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="eventmachine (v1.2.7, RVM: ruby-2.7.6) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="faye-websocket (v0.11.1, RVM: ruby-2.7.6) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="json (v2.6.2, RVM: ruby-2.7.6) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, RVM: ruby-2.7.6) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="parser (v3.1.2.0, RVM: ruby-2.7.6) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, RVM: ruby-2.7.6) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.6) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.4.0, RVM: ruby-2.7.6) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.6) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.1, RVM: ruby-2.7.6) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.26.0, RVM: ruby-2.7.6) [gem]" level="application" />
30
- <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.18.0, RVM: ruby-2.7.6) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="rubocop-performance (v1.15.0, RVM: ruby-2.7.6) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
33
- <orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.2, RVM: ruby-2.7.6) [gem]" level="application" />
34
- <orderEntry type="library" scope="PROVIDED" name="selenium-webdriver (v4.3.0, RVM: ruby-2.7.6) [gem]" level="application" />
35
- <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.1.0, RVM: ruby-2.7.6) [gem]" level="application" />
36
- <orderEntry type="library" scope="PROVIDED" name="websocket (v1.2.9, RVM: ruby-2.7.6) [gem]" level="application" />
37
- <orderEntry type="library" scope="PROVIDED" name="websocket-driver (v0.7.5, RVM: ruby-2.7.6) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="websocket-extensions (v0.1.5, RVM: ruby-2.7.6) [gem]" level="application" />
39
- </component>
40
- <component name="RakeTasksCache">
41
- <option name="myRootTask">
42
- <RakeTaskImpl id="rake">
43
- <subtasks>
44
- <RakeTaskImpl description="Build testa_appium_driver-0.1.18.gem into the pkg directory" fullCommand="build" id="build" />
45
- <RakeTaskImpl id="build">
46
- <subtasks>
47
- <RakeTaskImpl description="Generate SHA512 checksum if testa_appium_driver-0.1.18.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
48
- </subtasks>
49
- </RakeTaskImpl>
50
- <RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
51
- <RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
52
- <RakeTaskImpl description="Build and install testa_appium_driver-0.1.18.gem into system gems" fullCommand="install" id="install" />
53
- <RakeTaskImpl id="install">
54
- <subtasks>
55
- <RakeTaskImpl description="Build and install testa_appium_driver-0.1.18.gem into system gems without network access" fullCommand="install:local" id="local" />
56
- </subtasks>
57
- </RakeTaskImpl>
58
- <RakeTaskImpl description="Create tag v0.1.18 and build and push testa_appium_driver-0.1.18.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
59
- <RakeTaskImpl description="Run RuboCop" fullCommand="rubocop" id="rubocop" />
60
- <RakeTaskImpl id="rubocop">
61
- <subtasks>
62
- <RakeTaskImpl description="Auto-correct RuboCop offenses" fullCommand="rubocop:auto_correct" id="auto_correct" />
63
- </subtasks>
64
- </RakeTaskImpl>
65
- <RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
66
- <RakeTaskImpl description="" fullCommand="default" id="default" />
67
- <RakeTaskImpl description="" fullCommand="release" id="release" />
68
- <RakeTaskImpl id="release">
69
- <subtasks>
70
- <RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
71
- <RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
72
- <RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
73
- </subtasks>
74
- </RakeTaskImpl>
75
- </subtasks>
76
- </RakeTaskImpl>
77
- </option>
78
- </component>
79
- </module>