true_automation 0.5.6 → 0.6.0

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: 7817185c09008c4bbfc9eb5bc706d7282e4a60309aa85d169c6d663000664c61
4
- data.tar.gz: a13df17aadc21dd127a0a65d4acff2fd18c631f64e46fbf1d2b660459da31776
3
+ metadata.gz: f0bf53dc1f2d8755f2b13e7c63a2b62172225fcc26c8fddfc461963a77ecc595
4
+ data.tar.gz: 1ca188644cd2411f68f4153b7352fc31a9bf821c5d6613718d6202ef939f641d
5
5
  SHA512:
6
- metadata.gz: a0cea005c2118dc1ea284e7f697b07ecf31b1cbab7d47fcd95d71cb31d8f1eedc7145a721e5d7206a03941f474b1369e5ea8315d5e946bd40da5f2420a664dd1
7
- data.tar.gz: 0ec109cf392b6345449b74928c7c3f1588dd35765da9203b80bb84a5faf33058197dfdd9ced67a643bc953b68fee1ddc018c4438b9a6a81126b8f03ca4712636
6
+ metadata.gz: 7945c55acaa37f7bf931aed7760648d0abc941ed4b8607ff7166a92290c1a7556eebff9b3627e2bad3d926d0df4fec06a9e9ba969b686052d19567b40ac10baa
7
+ data.tar.gz: baba5d0a9b3d6ee227cc3c7d89ca759db46d5f9b25c8c57ff0f57ebf870e45cf55ad45df2800b977f0fd49f8f5e53f8b77c98c4bf44c6a32db868874c170b8f4
@@ -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)
@@ -81,7 +85,7 @@ module TrueAutomation
81
85
  @ta_service = options.delete(:ta_service)
82
86
  end
83
87
 
84
- super(app, options)
88
+ super(app, **options)
85
89
 
86
90
  @ta_client = TrueAutomation::Client.new
87
91
  @remote = ''
@@ -89,19 +93,20 @@ module TrueAutomation
89
93
  options ||= {}
90
94
  ta_url = options[:ta_url] || "http://localhost:#{@port}/"
91
95
 
92
- capabilities = options[:desired_capabilities] || {}
96
+ capabilities = options[:capabilities] || {}
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
- capabilities[:taRemoteUrl] = options[:url]
100
+ input_caps = opts_to_json(options[:capabilities]) || {}
101
+ browser = opts_browser(options[:capabilities] || Selenium::WebDriver::Options.chrome)
102
+ capabilities = options_class(browser).new(**input_caps)
103
+ capabilities.add_preference(:taRemoteUrl, options[:url])
97
104
  @remote = ' --remote'
98
- else
99
- capabilities[:browser] = options[:browser] || :chrome
100
105
  end
101
106
 
102
107
  @options.merge!(browser: :remote,
103
108
  url: ta_url,
104
- desired_capabilities: capabilities)
109
+ capabilities: capabilities)
105
110
  end
106
111
 
107
112
  def browser
@@ -111,7 +116,8 @@ module TrueAutomation
111
116
  ta_debug: @ta_debug,
112
117
  driver: @driver,
113
118
  ta_service_path: @ta_service&.executable_path,
114
- driver_version: @driver_version)
119
+ driver_version: @driver_version,
120
+ ta_recorder: @ta_recorder)
115
121
 
116
122
  @ta_client.wait_until_start
117
123
 
@@ -142,18 +148,48 @@ module TrueAutomation
142
148
  end
143
149
 
144
150
  private
151
+
152
+ def options_class(browser)
153
+ browser.to_s == 'remote' ?
154
+ Selenium::WebDriver::Remote::Options :
155
+ eval("Selenium::WebDriver::#{browser_class_name(browser)}::Options")
156
+ end
157
+
158
+ def browser_class_name(browser)
159
+ browser.to_s.slice(0,1).capitalize + browser.to_s.slice(1..-1)
160
+ end
161
+
162
+ def opts_browser(opts)
163
+ opts.class.name.split('::')[2].downcase.to_sym
164
+ end
165
+
166
+ def opts_to_json(opts)
167
+ opts.is_a?(Selenium::WebDriver::Options) ?
168
+ opts&.options :
169
+ opts&.as_json
170
+ end
171
+
145
172
  def fetch_options(options)
173
+ if options.delete(:ta_recorder)
174
+ @ta_recorder = ' --ta-recorder'
175
+ end
146
176
  if options.key?(:options)
147
- browser = options[:options].class.name.split('::')[2]
148
- desCaps = Selenium::WebDriver::Remote::Capabilities.send(browser.downcase)
149
- opts = options[:options].as_json
150
- desCaps[opts.keys.first] = opts[opts.keys.first]
151
- options[:desired_capabilities] = desCaps
177
+ browser = opts_browser(options[:options])
178
+ opts = opts_to_json(options[:options])
179
+ desCaps = options_class(browser).new(**opts)
180
+ options[:capabilities] = desCaps
152
181
  options.delete(:options)
153
182
  end
154
183
  options
155
184
  end
156
185
 
186
+ def copy_options(caps, opts)
187
+ # Add options to capabilities mapping if required
188
+ opts.keys.each do |key|
189
+ caps.add_option(key, opts[key])
190
+ end
191
+ end
192
+
157
193
  def find_available_port(host)
158
194
  server = TCPServer.new(host, rand(9515..65515))
159
195
  server.addr[1]
@@ -1,3 +1,3 @@
1
1
  module TrueAutomation
2
- VERSION = '0.5.6'
2
+ VERSION = '0.6.0'
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.6
4
+ version: 0.6.0
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-04-04 00:00:00.000000000 Z
11
+ date: 2023-06-13 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.2.3
140
+ rubygems_version: 3.4.13
141
141
  signing_key:
142
142
  specification_version: 4
143
143
  summary: TrueAutomation.IO