testa_appium_driver 0.1.21 → 0.1.24

Sign up to get free protection for your applications and to get access to all the features.
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>