true_automation 0.5.9 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5899752657a55d787cd0d34e450485baa81ccd00fcb04b39299646dd016404de
4
- data.tar.gz: 961a54b9115cc568ec44cfafbc9cb5c530a0d9126a3c3cfcfb0efd6efca81eda
3
+ metadata.gz: 1cc9e6c269815476bedfdab280e9bdb3f6b501c35bde134ebd1c1701cf894b5c
4
+ data.tar.gz: 50fa9493181c181937e7c49fc1c0786b62c62964832257b836e6844b20ee7f6a
5
5
  SHA512:
6
- metadata.gz: '0966514008a28ac8a073065c605b63c41d248159279560042da26459ade761fbed733fe31710a174d9e9450cd335e8ea934cfa8d20776b03a2084cb7984aab58'
7
- data.tar.gz: 81eb2f5120ec29af5bc8be0ca2794fd1a947d0a138a192dbe5a16626db5fe3489e6c03a57923ac8037a3a85b2d26c75e6d7a43331e9224350cf99c086dfcb75a
6
+ metadata.gz: c383abe0231435fdec8372e98cc45b5c8c5b96ec54e673fea2970dfcbc0fec8cc5290d0ed16ade739e8939c12277ce3179b0cb44f2560dd282aecef27c020ad4
7
+ data.tar.gz: 2d7b326dc4f5d2522d65c4d819d12862e5322a4b3a2f89dd1b7217bd7c5c9e66e94f582e2c6f547128e7998c1782a8d315e7f50b66376f6e680a8b91919a78af
@@ -10,6 +10,7 @@ module TrueAutomation
10
10
  def start(options)
11
11
  @port = options[:port]
12
12
  remote = options[:remote]
13
+ recorder = options[:ta_recorder]
13
14
  ta_debug = options[:ta_debug]
14
15
 
15
16
  if options[:ta_service]
@@ -31,7 +32,7 @@ module TrueAutomation
31
32
  Dir.mkdir('log') unless File.exist?('log')
32
33
  logfile = "log/trueautomation-#{Time.now.strftime('%Y%m%dT%H%M%S')}.log"
33
34
 
34
- @pid = spawn("#{@executable} --log-file #{logfile} --port #{@port}#{driver_path}#{remote}#{ta_debug}")
35
+ @pid = spawn("#{@executable} --log-file #{logfile} --port #{@port}#{driver_path}#{remote}#{ta_debug}#{recorder}")
35
36
  puts "Started TrueAutomation.IO client with pid #{@pid} listening to port #{@port}"
36
37
 
37
38
  @pid
@@ -3,13 +3,13 @@ require_relative '../client'
3
3
  module TrueAutomation
4
4
  module Driver
5
5
  class AppiumLib < Appium::Core::Driver
6
- def initialize(*args)
6
+ def initialize(**opts)
7
7
  @ta_client = TrueAutomation::Client.new
8
8
  @remote = ''
9
- super
9
+ super(**opts)
10
10
  end
11
11
 
12
- def start_driver(*args)
12
+ def start_driver(**opts)
13
13
  @ta_client.start(port: @port,
14
14
  remote: @remote,
15
15
  ta_debug: @ta_debug,
@@ -20,7 +20,7 @@ module TrueAutomation
20
20
  at_exit do
21
21
  @ta_client.stop
22
22
  end
23
- super
23
+ super(**opts)
24
24
  end
25
25
  end
26
26
  end
@@ -68,6 +68,10 @@ module TrueAutomation
68
68
  class Capybara < Capybara::Selenium::Driver
69
69
  def initialize(app, **options)
70
70
  options = fetch_options(options)
71
+ if options[:browser].to_s != 'remote'
72
+ default_options = Selenium::WebDriver::Options.send(options[:browser] || :chrome)
73
+ end
74
+ options[:capabilities] ||= default_options
71
75
  @port = options.delete(:port) || find_available_port('localhost')
72
76
  @driver = options.delete(:driver)
73
77
  @driver_version = options.delete(:driver_version)
@@ -89,19 +93,11 @@ module TrueAutomation
89
93
  options ||= {}
90
94
  ta_url = options[:ta_url] || "http://localhost:#{@port}/"
91
95
 
92
- capabilities = options[:capabilities] || {}
96
+ capabilities = options[:capabilities] || Selenium::WebDriver::Options.chrome
93
97
 
94
- if options and options[:browser] == :remote
98
+ if options && options[:browser] == :remote
95
99
  raise 'Remote driver URL is not specified' unless options[:url]
96
- input_caps = options[:capabilities]&.as_json || {}
97
- input_caps = options[:capabilities]&.as_json || {}
98
- browser = opts_browser(options[:capabilities] || Selenium::WebDriver::Chrome::Capabilities.new)
99
- browser_class_name = browser.to_s.slice(0,1).capitalize + browser.to_s.slice(1..-1)
100
- capabilities = browser.to_s == 'remote' ?
101
- Selenium::WebDriver::Remote::Options.new :
102
- self.class.class_eval("Selenium::WebDriver::#{browser_class_name}::Options").send(browser)
103
- copy_options(capabilities, input_caps)
104
-
100
+ capabilities = duplicate_options(capabilities)
105
101
  capabilities.add_preference(:taRemoteUrl, options[:url])
106
102
  @remote = ' --remote'
107
103
  end
@@ -118,7 +114,8 @@ module TrueAutomation
118
114
  ta_debug: @ta_debug,
119
115
  driver: @driver,
120
116
  ta_service_path: @ta_service&.executable_path,
121
- driver_version: @driver_version)
117
+ driver_version: @driver_version,
118
+ ta_recorder: @ta_recorder)
122
119
 
123
120
  @ta_client.wait_until_start
124
121
 
@@ -150,26 +147,51 @@ module TrueAutomation
150
147
 
151
148
  private
152
149
 
150
+ def options_class(browser)
151
+ browser.to_s == 'remote' ?
152
+ Selenium::WebDriver::Remote::Options :
153
+ eval("Selenium::WebDriver::#{browser_class_name(browser)}::Options")
154
+ end
155
+
156
+ def browser_class_name(browser)
157
+ browser.to_s.slice(0,1).capitalize + browser.to_s.slice(1..-1)
158
+ end
159
+
153
160
  def opts_browser(opts)
154
161
  opts.class.name.split('::')[2].downcase.to_sym
155
162
  end
156
163
 
164
+ def opts_to_json(opts)
165
+ opts.is_a?(Selenium::WebDriver::Options) ?
166
+ opts&.options :
167
+ opts&.as_json
168
+ end
169
+
170
+ def duplicate_options(original_options)
171
+ browser = opts_browser(original_options || Selenium::WebDriver::Options.chrome)
172
+ opts = opts_to_json(original_options) || {}
173
+ capabilities = options_class(browser).new(**opts)
174
+ original_options.extensions.each do |ext|
175
+ capabilities.add_extension(ext)
176
+ end
177
+ capabilities
178
+ end
179
+
157
180
  def fetch_options(options)
158
181
  if options.key?(:options)
159
- browser = opts_browser(options[:options])
160
- desCaps = Selenium::WebDriver::Remote::Capabilities.send(browser.downcase)
161
- opts = options[:options].as_json
162
- copy_options(desCaps, opts)
163
- options[:capabilities] = desCaps
182
+ options[:capabilities] = duplicate_options(options[:options])
164
183
  options.delete(:options)
165
184
  end
185
+ if options.delete(:ta_recorder)
186
+ @ta_recorder = ' --ta-recorder'
187
+ end
166
188
  options
167
189
  end
168
190
 
169
191
  def copy_options(caps, opts)
170
192
  # Add options to capabilities mapping if required
171
193
  opts.keys.each do |key|
172
- caps.add_preference(key, opts[key])
194
+ caps.add_option(key, opts[key])
173
195
  end
174
196
  end
175
197
 
@@ -1,3 +1,3 @@
1
1
  module TrueAutomation
2
- VERSION = '0.5.9'
2
+ VERSION = '0.6.1'
3
3
  end
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency 'minitest', '~> 5.0'
30
30
  spec.add_development_dependency 'rake', '~> 10.0'
31
31
  spec.add_development_dependency 'rspec', '~> 3.4'
32
- spec.add_development_dependency 'appium_lib', '~> 11.2'
33
- spec.add_development_dependency 'appium_lib_core', '~> 4.2'
32
+ spec.add_development_dependency 'appium_lib', '~> 12.2.2'
33
+ spec.add_development_dependency 'appium_lib_core', '~> 6.4.1'
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: true_automation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.9
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - TrueAutomation.IO
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-17 00:00:00.000000000 Z
11
+ date: 2023-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '11.2'
75
+ version: 12.2.2
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '11.2'
82
+ version: 12.2.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: appium_lib_core
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '4.2'
89
+ version: 6.4.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '4.2'
96
+ version: 6.4.1
97
97
  description: " true_automation gem enables awesome TrueAutomation.IO features for
98
98
  Capybara and Watir projects.\n"
99
99
  email:
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  requirements: []
140
- rubygems_version: 3.4.10
140
+ rubygems_version: 3.4.13
141
141
  signing_key:
142
142
  specification_version: 4
143
143
  summary: TrueAutomation.IO