scoutui 2.0.5.1.1.pre → 2.0.5.2

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -2
  3. data/README.md +0 -7
  4. data/examples/ex1/phantom.chrome.json +4 -0
  5. data/examples/ex1/run.sh +85 -0
  6. data/examples/ex1/simple.yml +13 -0
  7. data/examples/ex1/win10.chromebeta.json +6 -0
  8. data/lib/scoutui/appmodel/q_model.rb +5 -0
  9. data/lib/scoutui/base/assertions.rb +49 -11
  10. data/lib/scoutui/base/q_browser.rb +181 -15
  11. data/lib/scoutui/base/q_har_mgr.rb +63 -0
  12. data/lib/scoutui/base/test_data.rb +0 -2
  13. data/lib/scoutui/base/test_scout.rb +2 -1
  14. data/lib/scoutui/base/user_vars.rb +1 -1
  15. data/lib/scoutui/base/visual_test_framework.rb +78 -15
  16. data/lib/scoutui/commands/clauses/do_until.rb +25 -6
  17. data/lib/scoutui/commands/clauses/then_clause.rb +12 -0
  18. data/lib/scoutui/commands/click_object.rb +5 -2
  19. data/lib/scoutui/commands/commands.rb +85 -10
  20. data/lib/scoutui/commands/highlight.rb +72 -21
  21. data/lib/scoutui/commands/mouse_over.rb +4 -2
  22. data/lib/scoutui/commands/pause.rb +9 -2
  23. data/lib/scoutui/commands/strategy.rb +21 -2
  24. data/lib/scoutui/commands/type.rb +40 -5
  25. data/lib/scoutui/eyes/eye_scout.rb +2 -1
  26. data/lib/scoutui/utils/utils.rb +9 -0
  27. data/lib/scoutui/version.rb +1 -1
  28. data/scoutui.gemspec +2 -3
  29. metadata +15 -59
  30. data/bin/scoutui_driver +0 -1
  31. data/examples/benchmark/ex.rb +0 -16
  32. data/examples/capabilities/win10.chrome46.json +0 -6
  33. data/examples/carmax/appmodel/search_results.json +0 -27
  34. data/examples/carmax/commands/commands.yml +0 -63
  35. data/examples/cmdshell/commands/hello.yml +0 -22
  36. data/examples/converters/jsonupdate.rb +0 -31
  37. data/examples/ex2/appmodel/common.json +0 -51
  38. data/examples/ex2/appmodel/page_model.json +0 -106
  39. data/examples/ex2/appmodel/register.model.json +0 -42
  40. data/examples/ex2/commands/commands.basic.appmodel.yml +0 -8
  41. data/examples/ex2/commands/commands.yml +0 -115
  42. data/examples/ex2/commands/ex1.yml +0 -7
  43. data/examples/ex2/commands/ex1c.yml +0 -8
  44. data/examples/ex2/commands/ex1d.yml +0 -22
  45. data/examples/ex2/commands/ex2.hover.yml +0 -43
  46. data/examples/ex2/commands/ex2.yml +0 -24
  47. data/examples/ex2/data.json +0 -6
  48. data/examples/ex2/test-configs/test.config.basic.json +0 -12
  49. data/examples/ex2/test-configs/test.config.json +0 -31
  50. data/examples/ex2/tests/run-test.sh +0 -125
  51. data/examples/ex2/tests/test-basic-appmodel.sh +0 -14
  52. data/examples/ex2/tests/test-example.sh +0 -39
  53. data/examples/ex2/tests/test-example1a.sh +0 -16
  54. data/examples/ex2/tests/test-example1b.sh +0 -13
  55. data/examples/ex2/tests/test-example1c.sh +0 -15
  56. data/examples/ex2/tests/test-example1d.sh +0 -15
  57. data/examples/ex2/tests/test-example2.forms.eyes.sh +0 -40
  58. data/examples/ex2/tests/test-example2.hover.eyes.sh +0 -40
  59. data/examples/ex2/tests/test-example2.hover.sh +0 -26
  60. data/examples/ex2/tests/test-example2.sh +0 -43
  61. data/examples/ex2/tests/test-example3.sauce.sh +0 -77
  62. data/examples/ex2/tests/test-example3.sh +0 -41
  63. data/examples/headless/run.sh +0 -15
  64. data/examples/http/sendreq.rb +0 -29
@@ -27,6 +27,13 @@ module Scoutui::Commands
27
27
  rc=Scoutui::Utils::TestUtils.instance.loadModel(f)
28
28
  rescue => ex
29
29
  rc=false
30
+ Scoutui::Logger::LogMgr.instance.fatal __FILE__ + (__LINE__).to_s + " loadModel(#{f}) => Failed"
31
+ end
32
+
33
+ Testmgr::TestReport.instance.getReq("ScoutUI").testcase('Setup').add(rc, "Verify load model #{f}.")
34
+
35
+ if !rc
36
+ Scoutui::Utils::TestUtils.instance.setState(:abort, "Failed to load model file #{f}.")
30
37
  end
31
38
 
32
39
  rc
@@ -115,8 +122,9 @@ module Scoutui::Commands
115
122
  caps
116
123
  end
117
124
 
118
- def initialize()
125
+ def initialize(opts=nil)
119
126
 
127
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Scoutui::Commands.initialize(#{opts})"
120
128
  @profile=nil
121
129
  browserType = Scoutui::Base::UserVars.instance.getBrowserType()
122
130
  caps = Scoutui::Utils::TestUtils.instance.getCapabilities()
@@ -296,11 +304,22 @@ module Scoutui::Commands
296
304
 
297
305
  else
298
306
  Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Create WebDriver: #{browserType.to_s}"
299
- @drv=Selenium::WebDriver.for browserType.to_sym, :profile => @profile
307
+
308
+ if @profile.nil?
309
+ @drv=Selenium::WebDriver.for browserType.to_sym
310
+ else
311
+ @drv=Selenium::WebDriver.for browserType.to_sym, :profile => @profile
312
+ end
313
+
300
314
  setViewport()
301
315
 
302
316
  end
303
317
 
318
+
319
+ if opts.is_a?(Hash) && opts.has_key?(:loadModel).nil?
320
+ loadModel(opts[:loadModel])
321
+ end
322
+
304
323
  end
305
324
 
306
325
  end
@@ -5,6 +5,7 @@ module Scoutui::Commands
5
5
  class Type < Command
6
6
 
7
7
  KEYBOARD_CMDS={
8
+ '__DELETE__' => { :val => :delete },
8
9
  '__DOWN__' => { :val => :arrow_down },
9
10
  '__ENTER__' => { :val => :enter },
10
11
  '__ESC__' => { :val => :escape },
@@ -12,7 +13,13 @@ module Scoutui::Commands
12
13
  '__UP__' => { :val => :arrow_up },
13
14
  '__LEFT__' => { :val => :arrow_left },
14
15
  '__RIGHT__' => { :val => :arrow_right },
15
- '__TAB__' => { :val => :tab }
16
+ '__TAB__' => { :val => :tab },
17
+ '__SHIFT_TAB__' => {:val => :custom,
18
+ :run => lambda { |drv|
19
+ puts __FILE__ + (__LINE__).to_s + " *** SHIFT_TAB ***"
20
+ drv.action.key_down(:shift).send_keys(:tab).perform;
21
+ drv.action.key_up(:shift).perform;
22
+ }}
16
23
  }
17
24
 
18
25
  KEYBOARD_LIST={
@@ -66,6 +73,7 @@ module Scoutui::Commands
66
73
 
67
74
  _tm={:start => 0, :end => 0 }
68
75
 
76
+ _val=nil
69
77
  _isKb=false
70
78
  _rc=false
71
79
  _req = Scoutui::Utils::TestUtils.instance.getReq()
@@ -75,13 +83,40 @@ module Scoutui::Commands
75
83
 
76
84
  begin
77
85
 
78
- if @cmd.match(/^type\((#{KEYBOARD_CMDS.keys.join('|')})\)$/)
86
+ if @cmd.match(/^type\(focused\s*,\s*.*\)\s*$/)
87
+
88
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Type into active element"
89
+ obj = @drv.switch_to.active_element
90
+
91
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | active.Tag : " + obj.tag_name
92
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | active.Class: " + obj.attribute('class').to_s
93
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | active.ID : " + obj.attribute('id').to_s
94
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | active.Name : " + obj.attribute('name').to_s
95
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | active.Text : " + obj.text.to_s
96
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | active.Value: " + obj.attribute('value').to_s
97
+
98
+ _val = @cmd.match(/^type\(focused\s*,\s*(.*)\)\s*$/)[1].to_s
99
+
100
+ if KEYBOARD_CMDS.has_key?(_val)
101
+ _val = KEYBOARD_CMDS[_val][:val]
102
+ end
103
+
104
+ _xpath="[focused]"
105
+
106
+ obj.send_keys(_val)
107
+ _rc=true
108
+
109
+ elsif @cmd.match(/^type\((#{KEYBOARD_CMDS.keys.join('|')})\)$/)
79
110
 
80
111
  _tm[:start]=Time.now
81
112
 
82
- _keyVal=@cmd.match(/^type\((#{KEYBOARD_CMDS.keys.join('|')})\)$/)[1]
113
+ _keyVal=@cmd.match(/^type\((#{KEYBOARD_CMDS.keys.join('|')})\)$/)[1].to_s
83
114
 
84
- @drv.action.send_keys(KEYBOARD_CMDS[_keyVal][:val]).perform
115
+ if KEYBOARD_CMDS[_keyVal][:val]==:custom
116
+ KEYBOARD_CMDS[_keyVal][:run].call(@drv)
117
+ else
118
+ @drv.action.send_keys(KEYBOARD_CMDS[_keyVal][:val]).perform
119
+ end
85
120
 
86
121
  thenClause = Scoutui::Commands::ThenClause.new(@drv)
87
122
  doUntil = Scoutui::Commands::DoUntil.new(@drv)
@@ -107,7 +142,7 @@ module Scoutui::Commands
107
142
  _val = @cmd.match(/^\s*type[\!]*\((.*),\s*(.*)\s*\)\s*$/)[2]
108
143
  end
109
144
 
110
- Scoutui::Logger::LogMgr.instance.commands.debug __FILE__ + (__LINE__).to_s + "Process TYPE #{_val} into #{_xpath}"
145
+ Scoutui::Logger::LogMgr.instance.commands.debug __FILE__ + (__LINE__).to_s + " Process TYPE #{_val} into #{_xpath}"
111
146
 
112
147
  _tm[:start]=Time.now
113
148
 
@@ -308,7 +308,8 @@ module Scoutui::Eyes
308
308
  end
309
309
 
310
310
  rescue => ex
311
- Scoutui::Logger::LogMgr.instance.warn ex.backtrace
311
+ # Scoutui::Logger::LogMgr.instance.warn ex.backtrace
312
+ Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + "Backtrace:\n\t#{ex.backtrace.join("\n\t")}"
312
313
  end
313
314
 
314
315
  end
@@ -242,6 +242,15 @@ module Scoutui::Utils
242
242
  loadModel(@options[:pages])
243
243
  end
244
244
 
245
+ opt.on('--var [Key:Value]') { |o|
246
+ if o.match(/(.+?):(.*)$/)
247
+ _result=o.match(/(.+)?:(.*)$/)
248
+ Scoutui::Base::UserVars.instance.setVar(_result[1].to_s, _result[2].to_s)
249
+ else
250
+ Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " Invalid --var value : #{o}, should be <key>:<value>"
251
+ end
252
+ }
253
+
245
254
  opt.on('--pagemodel [PageModel]') { |o|
246
255
  @options[:page_model] = o
247
256
  loadModel(@options[:page_model].to_s)
@@ -1,3 +1,3 @@
1
1
  module Scoutui
2
- VERSION = "2.0.5.1.1.pre"
2
+ VERSION = "2.0.5.2"
3
3
  end
data/scoutui.gemspec CHANGED
@@ -32,9 +32,8 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "json", ">= 1.8.3"
33
33
  spec.add_development_dependency "faker"
34
34
  spec.add_development_dependency "logging"
35
- spec.add_development_dependency "sauce_whisk"
35
+ spec.add_development_dependency "sauce_whisk", "0.0.21"
36
36
  spec.add_development_dependency "testmgr", ">= 0.3.2.pre"
37
- spec.add_development_dependency "tiny_tds"
38
- spec.add_development_dependency "DataMgr", ">= 0.1.1.1.pre"
37
+ spec.add_development_dependency "DataMgr", ">=0.2.0"
39
38
  spec.add_development_dependency "CmdShellMgr", ">= 0.1.1.2.pre"
40
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scoutui
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5.1.1.pre
4
+ version: 2.0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Kim
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-21 00:00:00.000000000 Z
11
+ date: 2017-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -154,16 +154,16 @@ dependencies:
154
154
  name: sauce_whisk
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - '='
158
158
  - !ruby/object:Gem::Version
159
- version: '0'
159
+ version: 0.0.21
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - '='
165
165
  - !ruby/object:Gem::Version
166
- version: '0'
166
+ version: 0.0.21
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: testmgr
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -178,34 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: 0.3.2.pre
181
- - !ruby/object:Gem::Dependency
182
- name: tiny_tds
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
181
  - !ruby/object:Gem::Dependency
196
182
  name: DataMgr
197
183
  requirement: !ruby/object:Gem::Requirement
198
184
  requirements:
199
185
  - - ">="
200
186
  - !ruby/object:Gem::Version
201
- version: 0.1.1.1.pre
187
+ version: 0.2.0
202
188
  type: :development
203
189
  prerelease: false
204
190
  version_requirements: !ruby/object:Gem::Requirement
205
191
  requirements:
206
192
  - - ">="
207
193
  - !ruby/object:Gem::Version
208
- version: 0.1.1.1.pre
194
+ version: 0.2.0
209
195
  - !ruby/object:Gem::Dependency
210
196
  name: CmdShellMgr
211
197
  requirement: !ruby/object:Gem::Requirement
@@ -237,47 +223,16 @@ files:
237
223
  - README.md
238
224
  - Rakefile
239
225
  - bin/console
240
- - bin/scoutui_driver
241
226
  - bin/scoutui_driver.rb
242
227
  - bin/setup
243
- - examples/benchmark/ex.rb
244
- - examples/capabilities/win10.chrome46.json
245
- - examples/carmax/appmodel/search_results.json
246
- - examples/carmax/commands/commands.yml
247
- - examples/cmdshell/commands/hello.yml
248
- - examples/converters/jsonupdate.rb
249
228
  - examples/ex1/commands.holidays.yml
250
229
  - examples/ex1/commands.yml
230
+ - examples/ex1/phantom.chrome.json
231
+ - examples/ex1/run.sh
232
+ - examples/ex1/simple.yml
251
233
  - examples/ex1/test-example.sh
252
234
  - examples/ex1/test.config.json
253
- - examples/ex2/appmodel/common.json
254
- - examples/ex2/appmodel/page_model.json
255
- - examples/ex2/appmodel/register.model.json
256
- - examples/ex2/commands/commands.basic.appmodel.yml
257
- - examples/ex2/commands/commands.yml
258
- - examples/ex2/commands/ex1.yml
259
- - examples/ex2/commands/ex1c.yml
260
- - examples/ex2/commands/ex1d.yml
261
- - examples/ex2/commands/ex2.hover.yml
262
- - examples/ex2/commands/ex2.yml
263
- - examples/ex2/data.json
264
- - examples/ex2/test-configs/test.config.basic.json
265
- - examples/ex2/test-configs/test.config.json
266
- - examples/ex2/tests/run-test.sh
267
- - examples/ex2/tests/test-basic-appmodel.sh
268
- - examples/ex2/tests/test-example.sh
269
- - examples/ex2/tests/test-example1a.sh
270
- - examples/ex2/tests/test-example1b.sh
271
- - examples/ex2/tests/test-example1c.sh
272
- - examples/ex2/tests/test-example1d.sh
273
- - examples/ex2/tests/test-example2.forms.eyes.sh
274
- - examples/ex2/tests/test-example2.hover.eyes.sh
275
- - examples/ex2/tests/test-example2.hover.sh
276
- - examples/ex2/tests/test-example2.sh
277
- - examples/ex2/tests/test-example3.sauce.sh
278
- - examples/ex2/tests/test-example3.sh
279
- - examples/headless/run.sh
280
- - examples/http/sendreq.rb
235
+ - examples/ex1/win10.chromebeta.json
281
236
  - lib/scoutui.rb
282
237
  - lib/scoutui/appmodel/q_model.rb
283
238
  - lib/scoutui/base/assertions.rb
@@ -285,6 +240,7 @@ files:
285
240
  - lib/scoutui/base/q_applitools.rb
286
241
  - lib/scoutui/base/q_browser.rb
287
242
  - lib/scoutui/base/q_form.rb
243
+ - lib/scoutui/base/q_har_mgr.rb
288
244
  - lib/scoutui/base/requirements.rb
289
245
  - lib/scoutui/base/test_context.rb
290
246
  - lib/scoutui/base/test_data.rb
@@ -347,9 +303,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
303
  version: '0'
348
304
  required_rubygems_version: !ruby/object:Gem::Requirement
349
305
  requirements:
350
- - - ">"
306
+ - - ">="
351
307
  - !ruby/object:Gem::Version
352
- version: 1.3.1
308
+ version: '0'
353
309
  requirements: []
354
310
  rubyforge_project:
355
311
  rubygems_version: 2.6.2
data/bin/scoutui_driver DELETED
@@ -1 +0,0 @@
1
- scoutui_driver.rb
@@ -1,16 +0,0 @@
1
-
2
-
3
-
4
- def foo(opts)
5
-
6
- puts opts
7
-
8
-
9
- end
10
-
11
-
12
-
13
-
14
- foo(rover: 'Rover')
15
-
16
-
@@ -1,6 +0,0 @@
1
- {
2
- "platform": "Windows 10",
3
- "browser": "chrome",
4
- "version": "46.0",
5
- "screenResolution": "1024x768"
6
- }
@@ -1,27 +0,0 @@
1
- {
2
-
3
-
4
- "search_results": {
5
-
6
-
7
- "results": {
8
-
9
- "header": {
10
- "reqid": "REQ-HEADER",
11
- "locator": "//span[text()='Applied filters']",
12
- "visible_when": "title(Search Results)"
13
- }
14
-
15
-
16
- }
17
-
18
-
19
-
20
- }
21
-
22
-
23
-
24
-
25
-
26
-
27
- }
@@ -1,63 +0,0 @@
1
- page:
2
- name: Home
3
- description: Navigate to a specified URL and wait until the expected elements are present
4
- url: http://www.carmax.com
5
- ---
6
- page:
7
- name: Highlight Example
8
- action: highlight(page(main).get(nav).get(findYourCar))
9
- ---
10
- page:
11
- timeout: 5
12
- name: Click Find Your Car
13
- action: click(page(main).get(nav).get(findYourCar))
14
- expected:
15
- wait1: //header//*[text()='Pricex']
16
- ---
17
- page:
18
- name: Basic Search
19
- timeout: 5
20
- action: click(page(main).get(nav).get(basic_search))
21
- expected:
22
- wait: page(basic_search).get(free_text)
23
- assertions: [
24
- elvis: {
25
- "locator": "//button[@text()='Go']",
26
- "visible_when": "visible(page(basic_search).get(free_text))"
27
- },
28
- better_assert: {
29
- "locator": "page(basic_search)"
30
- }
31
- ]
32
- ---
33
- page:
34
- name: Popup
35
- timeout: 5
36
- execute_when: visible(//area[@alt='no'])
37
- action: click(//area[@alt='no'])
38
- ---
39
- page:
40
- name: Enter Porsche
41
- action: type(page(basic_search).get(free_text), Porsche 911)
42
- expected:
43
- wait: //a[contains(@href, 'Porsche%20911')]
44
- ---
45
- page:
46
- action: highlight(//a[contains(@href, 'Porsche%20911')])
47
- ---
48
- page:
49
- action: mouseover(//a[contains(@href, 'Porsche%20911')])
50
- ---
51
- page:
52
- action: click(page(basic_search).get(go))
53
- assertions: [
54
- assert1: {
55
- "locator": "page(search_results).get(results)"
56
- }
57
- ]
58
- ---
59
- page:
60
- name: Pause after Nav.
61
- action: pause
62
- skipit: false
63
-
@@ -1,22 +0,0 @@
1
- page:
2
- name: Assign my vars
3
- action: assignments
4
- vars:
5
- - assign(MyEntity, ScoutUI)
6
- ---
7
- page:
8
- name: Simple Cmd
9
- id: MultiLs
10
- action: defineCommand
11
- commands: sed -e 's/domain/${MyEntity}/g' /tmp/userlist-v2.txt > /tmp/mydata.txt
12
- ---
13
- page:
14
- name: Run Multi
15
- action: executeCommands
16
- commands:
17
- - id: MultiLs
18
- ---
19
- page:
20
- name: Pause afger MultiLs
21
- action: pause
22
- skip: false
@@ -1,31 +0,0 @@
1
-
2
-
3
- def iterate(h)
4
- h.each do |k, v|
5
- if v.is_a?(Hash) || v.is_a?(Array)
6
- iterate(v)
7
- else
8
- puts("k is #{k}, value is #{v}")
9
- if v.match(/peter/i)
10
- h[k]='Elvis'
11
- end
12
- end
13
- end
14
- end
15
-
16
-
17
- h={
18
- 'person': {
19
- 'first': 'Peter',
20
- 'last': 'Kim',
21
- 'address': {
22
- 'city': 'Manhattan peter',
23
- 'state': 'New York'
24
- }
25
- }
26
- }
27
-
28
-
29
- iterate(h)
30
-
31
- puts "h => #{h}"
@@ -1,51 +0,0 @@
1
- {
2
-
3
- "basic_nav": {
4
-
5
- "find_cars_for_sale": {
6
- "locator": "//*[@id='header']//a[text()='Find Cars for Sale']",
7
- "visible_when": "always"
8
- },
9
-
10
- "sell_us_your_car": {
11
- "locator": "//*[@id='header']//a[text()='Sell Us Your Car']",
12
- "visible_when": "title(Used Cars for Sale.*)"
13
- },
14
-
15
- "research": {
16
- "locator": "//*[@id='header']//a[text()='Research']",
17
- "when_hovered": [
18
- { "RSRCH": [
19
- "visible(//*[@id='header']//a[text()='Ratings and Reviews'])",
20
- "visible(//*[@id='header']//a[text()='Payment Calculators'])",
21
- "visible(page(submenu3).get(fuel_econ))"
22
- ]
23
- }
24
- ]
25
- }
26
-
27
- },
28
-
29
- "find_cars_for_sale_sm": {
30
- "description": "Example of observer-like pattern, where an element registers itself to another elements action.",
31
- "locator": "//*[@id='header']//a[text()='Nationwide Transfers']",
32
- "visible_when": "mouseover(page(basic_nav).get(find_cars_for_sale))"
33
- },
34
-
35
- "submenu2": {
36
-
37
- "faq": {
38
- "locator": "//*[@id='header']//a[text()='FAQ']",
39
- "visible_when": "mouseover(page(basic_nav).get(sell_us_your_car))"
40
- }
41
-
42
- },
43
-
44
- "submenu3": {
45
- "fuel_econ": {
46
- "locator": "//*[@id='header']//a[text()='Payment Calculators']"
47
- }
48
- }
49
-
50
-
51
- }
@@ -1,106 +0,0 @@
1
- {
2
- "home": {
3
- "cars4sale": {
4
- "locator": "//a[text()='Find Cars for Sale']",
5
- "visible_when": "always",
6
- "reqid": "REQ-Home"
7
- },
8
- "whyCarMax": {
9
- "locator": "//*[@id='header']//a[text()='Why CarMax']",
10
- "visible_when": "text(page(home).get(cars4sale))=Find Cars for Sale",
11
- "reqid": "REQ-Home"
12
- },
13
-
14
- "sign_in": {
15
- "locator": "//input[text()='Sign in']",
16
- "visible_when": "title(/Carmax.*online/)",
17
- "reqid": "REQ-Home"
18
- },
19
-
20
- "register": {
21
- "locator": "//*[@id='register']",
22
- "reqid": "REQ-register",
23
-
24
-
25
- "when_clicked": [
26
- { "req-XYZ": "page(register_pg).get(firstname)" },
27
- { "req-XYZ": "visible(page(register_pg).get(firstname))"},
28
- {
29
- "REGIS-002": [
30
- "title(Register for MyCarMax)",
31
- "visible(css=#signInLink)"
32
- ]
33
- }
34
- ],
35
-
36
-
37
- "visible_when": [
38
- { "visible_when": "visible(page(home).get(sign_in))=true"},
39
- { "visible_when": "visible(page(home).get(cars4sale))=true"},
40
- { "visible_when": "visible(page(home).get(sign_in))=false"},
41
- { "visible_when": "title(Car[mM]ax.*online)"}
42
- ]
43
- },
44
-
45
- "mycarmax": {
46
- "locator": "//*[@id='mycarmax']",
47
- "visible_when": "title(CarMax - Browse used cars and new cars online)",
48
- "reqid": "REQ-Home"
49
- },
50
-
51
- "logoff": {
52
- "locator": "//*[text()='Log off']",
53
- "visible_when": "never",
54
- "reqid": "REQ-Home"
55
- }
56
- },
57
-
58
-
59
- "register_pg": {
60
- "firstname": {
61
- "locator": "css=input#FirstName",
62
- "visible_when": "title(Register for MyCarMax)"
63
- },
64
-
65
- "lastname": {
66
- "locator": "//input[@id='LastName']",
67
- "visible_when": "always"
68
- }
69
- },
70
-
71
- "research": {
72
-
73
- "fuel_economy": {
74
- "locator": ""
75
- }
76
-
77
- },
78
-
79
- "main_nav": {
80
- "search_input": {
81
- "locator": "//input[@id='search']",
82
- "visible_when": "always"
83
- },
84
- "search_btn": {
85
- "locator": "//a[@id='search-btn']",
86
- "visible_when": "always"
87
- }
88
- },
89
-
90
- "find_cars_by": {
91
- "make": {
92
- "locator": "//*[@id='bantab0']/a[contains(text(), 'Make')]",
93
- "visible_when": "always"
94
- },
95
-
96
- "price_list": {
97
- "locator": "//*[@id='minPriceFilter']",
98
- "visible_when": "text(//*[@id='minPriceFilter'])=$0"
99
- }
100
- },
101
-
102
- "search": {
103
- "header": "//title"
104
- }
105
- }
106
-