scoutui 2.0.5.2.1.pre → 2.0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +6 -2
- data/README.md +0 -7
- data/examples/ex1/phantom.chrome.json +4 -0
- data/examples/ex1/run.sh +85 -0
- data/examples/ex1/simple.yml +13 -0
- data/examples/ex1/win10.chromebeta.json +6 -0
- data/lib/scoutui/base/q_har_mgr.rb +63 -0
- data/lib/scoutui/base/test_data.rb +0 -6
- data/lib/scoutui/commands/click_object.rb +1 -7
- data/lib/scoutui/version.rb +1 -1
- data/scoutui.gemspec +3 -4
- metadata +17 -62
- data/bin/scoutui_driver +0 -1
- data/examples/benchmark/ex.rb +0 -16
- data/examples/capabilities/win10.chrome46.json +0 -6
- data/examples/carmax/appmodel/search_results.json +0 -27
- data/examples/carmax/commands/commands.yml +0 -63
- data/examples/cmdshell/commands/hello.yml +0 -22
- data/examples/converters/jsonupdate.rb +0 -31
- data/examples/ex2/appmodel/common.json +0 -51
- data/examples/ex2/appmodel/page_model.json +0 -106
- data/examples/ex2/appmodel/register.model.json +0 -42
- data/examples/ex2/commands/commands.basic.appmodel.yml +0 -8
- data/examples/ex2/commands/commands.yml +0 -115
- data/examples/ex2/commands/ex1.yml +0 -7
- data/examples/ex2/commands/ex1c.yml +0 -8
- data/examples/ex2/commands/ex1d.yml +0 -22
- data/examples/ex2/commands/ex2.hover.yml +0 -43
- data/examples/ex2/commands/ex2.yml +0 -24
- data/examples/ex2/data.json +0 -6
- data/examples/ex2/test-configs/test.config.basic.json +0 -12
- data/examples/ex2/test-configs/test.config.json +0 -31
- data/examples/ex2/tests/run-test.sh +0 -125
- data/examples/ex2/tests/test-basic-appmodel.sh +0 -14
- data/examples/ex2/tests/test-example.sh +0 -39
- data/examples/ex2/tests/test-example1a.sh +0 -16
- data/examples/ex2/tests/test-example1b.sh +0 -13
- data/examples/ex2/tests/test-example1c.sh +0 -15
- data/examples/ex2/tests/test-example1d.sh +0 -15
- data/examples/ex2/tests/test-example2.forms.eyes.sh +0 -40
- data/examples/ex2/tests/test-example2.hover.eyes.sh +0 -40
- data/examples/ex2/tests/test-example2.hover.sh +0 -26
- data/examples/ex2/tests/test-example2.sh +0 -43
- data/examples/ex2/tests/test-example3.sauce.sh +0 -77
- data/examples/ex2/tests/test-example3.sh +0 -41
- data/examples/headless/run.sh +0 -15
- data/examples/http/sendreq.rb +0 -29
- data/examples/js.rb +0 -48
@@ -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
|
-
|
@@ -1,42 +0,0 @@
|
|
1
|
-
{
|
2
|
-
|
3
|
-
"register": {
|
4
|
-
|
5
|
-
"error_msgs": {
|
6
|
-
|
7
|
-
"email": {
|
8
|
-
"reqid": "REQ:Email - is required",
|
9
|
-
"locator": "//*[@class='field-validation-error' and text()='Email is required.']",
|
10
|
-
"visible_when": "text(page(register).get(form).get(email))="
|
11
|
-
|
12
|
-
}
|
13
|
-
},
|
14
|
-
|
15
|
-
"form": {
|
16
|
-
"firstname": {
|
17
|
-
"locator": "//input[@id='FirstName']",
|
18
|
-
"visible_when": "always"
|
19
|
-
},
|
20
|
-
|
21
|
-
"lastname": {
|
22
|
-
"locator": "//input[@id='LastName']",
|
23
|
-
"visible_when": "always"
|
24
|
-
},
|
25
|
-
|
26
|
-
"email": {
|
27
|
-
"locator": "//input[@id='EmailAddress']",
|
28
|
-
"visible_when": "always"
|
29
|
-
},
|
30
|
-
|
31
|
-
"register_btn": {
|
32
|
-
"locator": "//input[@id='next']",
|
33
|
-
"visible_when": "visible(page(register).get(form).get(firstname))",
|
34
|
-
"action_object": true
|
35
|
-
}
|
36
|
-
|
37
|
-
}
|
38
|
-
|
39
|
-
}
|
40
|
-
|
41
|
-
|
42
|
-
}
|
@@ -1,115 +0,0 @@
|
|
1
|
-
page:
|
2
|
-
reqid: Beta Page Loaded
|
3
|
-
execute_when: url(beta.carmax.com)
|
4
|
-
action: stop
|
5
|
-
---
|
6
|
-
page:
|
7
|
-
reqid: Initial Load
|
8
|
-
url: http://www.carmax.com
|
9
|
-
expected:
|
10
|
-
|
11
|
-
---
|
12
|
-
page:
|
13
|
-
reqid: Survey
|
14
|
-
description: Survey popup answered by Yes
|
15
|
-
execute_when: visible(//area[@alt='no'])
|
16
|
-
action: click(//area[@alt='no'])
|
17
|
-
---
|
18
|
-
page:
|
19
|
-
name: Home
|
20
|
-
description: Navigate to a specified URL and wait until the expected elements are present
|
21
|
-
url: http://www.carmax.com
|
22
|
-
expected:
|
23
|
-
wait: page(home).get(cars4sale)
|
24
|
-
wait2: page(home).get(whyCarMax)
|
25
|
-
wait3: page(find_cars_by).get(make)
|
26
|
-
assertions: [
|
27
|
-
assert1: {
|
28
|
-
"locator": "page(find_cars_by).get(make)",
|
29
|
-
"visible_when": "always",
|
30
|
-
"reqid": "REQ-HOME"
|
31
|
-
},
|
32
|
-
assert2: {
|
33
|
-
"locator": "page(home).get(whyCarMax)",
|
34
|
-
"visible_when": "always"
|
35
|
-
},
|
36
|
-
assert3: {
|
37
|
-
"locator": "page(home)",
|
38
|
-
"reqid": "REQ-HOME2"
|
39
|
-
}
|
40
|
-
]
|
41
|
-
---
|
42
|
-
page:
|
43
|
-
name: Click on Make
|
44
|
-
action: click(page(find_cars_by).get(make))
|
45
|
-
expected:
|
46
|
-
wait: //div[contains(@class, 'open')]//a[text()='Porsche']
|
47
|
-
---
|
48
|
-
page:
|
49
|
-
name: Select Porsche
|
50
|
-
action: click(//div[contains(@class, 'open')]//a[text()='${MyMake}'])
|
51
|
-
expected:
|
52
|
-
wait: //*[@id='Model']//*[text()='${MyMake}']
|
53
|
-
assertions: [
|
54
|
-
assert1: {
|
55
|
-
"locator": "page(find_cars_by).get(price_list)",
|
56
|
-
|
57
|
-
}
|
58
|
-
]
|
59
|
-
---
|
60
|
-
page:
|
61
|
-
name: Select the within Mileage List
|
62
|
-
action: click(//div[@id='selectedDistanceDesc'])
|
63
|
-
expected:
|
64
|
-
wait: //*[@id='distance']//a[text()='any distance']
|
65
|
-
---
|
66
|
-
page:
|
67
|
-
name: Select Any Distance
|
68
|
-
action: click(//*[@id='distance']//a[text()='any distance'])
|
69
|
-
---
|
70
|
-
page:
|
71
|
-
name: Enter Zipcode
|
72
|
-
action: type!(//*[@id='zip'], 94030)
|
73
|
-
---
|
74
|
-
page:
|
75
|
-
name: Update Distance
|
76
|
-
action: click(//*[@id='distanceSubmit'])
|
77
|
-
expected:
|
78
|
-
wait: //*[@id='distance']//a[text()='any distance']
|
79
|
-
wait2: //*[@id='zip' and @value='94030']
|
80
|
-
---
|
81
|
-
page:
|
82
|
-
action: pause
|
83
|
-
skip: true
|
84
|
-
---
|
85
|
-
page:
|
86
|
-
name: Mouseover View Tickets
|
87
|
-
action: mouseover(page(home).get(whyCarMax))
|
88
|
-
snapit: true
|
89
|
-
---
|
90
|
-
page:
|
91
|
-
name: Click - specified by Alias
|
92
|
-
action: click(${WhyCarMax})
|
93
|
-
snapit: true
|
94
|
-
---
|
95
|
-
page:
|
96
|
-
skip: true
|
97
|
-
action: pause
|
98
|
-
---
|
99
|
-
page:
|
100
|
-
skip: false
|
101
|
-
name: Click on Input
|
102
|
-
action: click(page(main_nav).get(search_input))
|
103
|
-
snapit: true
|
104
|
-
---
|
105
|
-
page:
|
106
|
-
action: type(page(main_nav).get(search_input), ${Search_Me})
|
107
|
-
---
|
108
|
-
page:
|
109
|
-
action: pause
|
110
|
-
skip: true
|
111
|
-
---
|
112
|
-
page:
|
113
|
-
action: click(page(main_nav).get(search_btn))
|
114
|
-
expected:
|
115
|
-
wait: //input[@id='zip']
|