scoutui 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/examples/capabilities/win10.chrome46.json +6 -0
  3. data/examples/ex1/test-example.sh +4 -4
  4. data/examples/ex1/test.config.json +1 -1
  5. data/examples/ex2/appmodel/common.json +51 -0
  6. data/examples/ex2/appmodel/page_model.json +106 -0
  7. data/examples/ex2/appmodel/register.model.json +42 -0
  8. data/examples/ex2/commands/commands.basic.appmodel.yml +8 -0
  9. data/examples/ex2/commands/commands.yml +115 -0
  10. data/examples/ex2/commands/ex1.yml +7 -0
  11. data/examples/ex2/commands/ex1c.yml +8 -0
  12. data/examples/ex2/commands/ex1d.yml +22 -0
  13. data/examples/ex2/commands/ex2.hover.yml +43 -0
  14. data/examples/ex2/commands/ex2.yml +24 -0
  15. data/examples/ex2/data.json +6 -0
  16. data/examples/ex2/test-configs/test.config.basic.json +12 -0
  17. data/examples/ex2/{test.config.json → test-configs/test.config.json} +8 -2
  18. data/examples/ex2/tests/run-test.sh +125 -0
  19. data/examples/ex2/tests/test-basic-appmodel.sh +14 -0
  20. data/examples/ex2/{test-example.sh → tests/test-example.sh} +3 -3
  21. data/examples/ex2/tests/test-example1a.sh +16 -0
  22. data/examples/ex2/tests/test-example1b.sh +13 -0
  23. data/examples/ex2/tests/test-example1c.sh +15 -0
  24. data/examples/ex2/tests/test-example1d.sh +15 -0
  25. data/examples/ex2/tests/test-example2.forms.eyes.sh +40 -0
  26. data/examples/ex2/tests/test-example2.hover.eyes.sh +40 -0
  27. data/examples/ex2/tests/test-example2.hover.sh +26 -0
  28. data/examples/ex2/tests/test-example2.sh +43 -0
  29. data/examples/ex2/tests/test-example3.sauce.sh +77 -0
  30. data/examples/ex2/tests/test-example3.sh +41 -0
  31. data/lib/scoutui/appmodel/q_model.rb +105 -0
  32. data/lib/scoutui/base/assertions.rb +570 -10
  33. data/lib/scoutui/base/q_applitools.rb +2 -2
  34. data/lib/scoutui/base/q_browser.rb +38 -5
  35. data/lib/scoutui/base/q_form.rb +7 -7
  36. data/lib/scoutui/base/test_scout.rb +2 -1
  37. data/lib/scoutui/base/user_vars.rb +29 -2
  38. data/lib/scoutui/base/visual_test_framework.rb +308 -24
  39. data/lib/scoutui/commands/click_object.rb +86 -13
  40. data/lib/scoutui/commands/commands.rb +20 -7
  41. data/lib/scoutui/commands/jsalert/action_jsalert.rb +1 -1
  42. data/lib/scoutui/commands/mouse_over.rb +94 -8
  43. data/lib/scoutui/commands/select_object.rb +1 -1
  44. data/lib/scoutui/commands/select_window.rb +43 -0
  45. data/lib/scoutui/commands/strategy.rb +40 -3
  46. data/lib/scoutui/commands/type.rb +99 -11
  47. data/lib/scoutui/commands/update_url.rb +1 -1
  48. data/lib/scoutui/commands/utils.rb +43 -5
  49. data/lib/scoutui/commands/verify_element.rb +38 -7
  50. data/lib/scoutui/eyes/eye_factory.rb +7 -1
  51. data/lib/scoutui/eyes/eye_scout.rb +20 -7
  52. data/lib/scoutui/utils/utils.rb +59 -1
  53. data/lib/scoutui/version.rb +1 -1
  54. data/scoutui.gemspec +5 -4
  55. metadata +77 -39
  56. data/examples/ex2/commands.yml +0 -35
  57. data/examples/ex2/page_model.json +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fe92fe04ff0e9daf07a6521ad4ba598f5e32bd5c
4
- data.tar.gz: 104265382adad105254e0b5e9e357fc53b60e27f
3
+ metadata.gz: 8875e31f650ade4f1ffcdb2dec0ef8bc7e6d7580
4
+ data.tar.gz: 0008e2ed3e998cd9917a0a3ec7ea630c8d8c0e99
5
5
  SHA512:
6
- metadata.gz: 93e4bd0ada8f1a6d10ac5016ddf1b296c2df39aa721a2a3cabfc3a7088f9cd193800b971ff70a5f5fcdbc4b8b82ef4026a53c94191919cb0c6dbfbb885bf0e01
7
- data.tar.gz: f5c2df5075a7db4c9ae19b9bc898af64fa0b5e0d61d374a0270574fa0e58066a48a5b564ca4ba84593c1708ec3f65a4c03d72bcb2858134f2a85d5ba6449d317
6
+ metadata.gz: 654b8aaed5a1e5e5f5f9b0336826b8a90f30edc244638a7bf6fc1a9d34caa380c04565809de7922c807301b845f982803937000b4d5eb5d39fc9b8c24e1a3eb2
7
+ data.tar.gz: bb24997165d3fd3967413046a87cc76c7b5b6264172f1bee0e8d216dde6c0a443807cf54639991c888a037f272448328ca0705da61200f6867ccb6d40fb13dd7
@@ -0,0 +1,6 @@
1
+ {
2
+ "platform": "Windows 10",
3
+ "browser": "chrome",
4
+ "version": "46.0",
5
+ "screenResolution": "1024x768"
6
+ }
@@ -9,7 +9,7 @@
9
9
  ##
10
10
 
11
11
  # Specify browser under test (chrome, firefox, ie, safari)
12
- BUT=chrome
12
+ BUT=firefox
13
13
 
14
14
  # Specify the title and appName needed by Applitools
15
15
  # Specify the title and appName needed by Applitools
@@ -31,8 +31,8 @@ MATCH_TYPE="layout"
31
31
  EYES="--eyes"
32
32
  #EYES=
33
33
 
34
+
35
+
34
36
  # The following command line parameters will override provided title and appName (if provided in test config file)
35
- $SCOUTUI_BIN --config $TEST_CFG --browser $BUT $EYES --app $APP --title $TITLE --match $MATCH_TYPE --debug
37
+ ruby $SCOUTUI_BIN --viewport "1024x718" --config $TEST_CFG --browser $BUT $EYES --app $APP --title $TITLE --match $MATCH_TYPE --debug
36
38
 
37
- # The following
38
- # $SCOUTUI_BIN --config $TEST_CFG --eyes --match $MATCH_TYPE --browser $BUT
@@ -12,5 +12,5 @@
12
12
  },
13
13
 
14
14
  "host": "http://www.elvis-presley.com",
15
- "dut": "./commands.holidays.yml"
15
+ "dut": "./commands.yml"
16
16
  }
@@ -0,0 +1,51 @@
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
+ }
@@ -0,0 +1,106 @@
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
+
@@ -0,0 +1,42 @@
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
+ }
@@ -0,0 +1,8 @@
1
+ page:
2
+ skip: false
3
+ name: Home
4
+ description: Navigate to a specified URL and wait until the expected elements are present
5
+ url: http://www.carmax.com
6
+ expected:
7
+ wait: page(main_nav).get(search_input)
8
+ wait2: page(main_nav).get(search_btn)
@@ -0,0 +1,115 @@
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']
@@ -0,0 +1,7 @@
1
+ page:
2
+ reqid: MainPg-001
3
+ name: Home
4
+ description: Navigate to a specified URL and wait until the expected elements are present
5
+ url: http://www.carmax.com
6
+ expected:
7
+ wait: //*[@id='searchx']
@@ -0,0 +1,8 @@
1
+ page:
2
+ skip: false
3
+ reqid: MainPg-001
4
+ name: Home
5
+ description: Navigate to a specified URL and wait until the expected elements are present
6
+ url: http://www.carmax.com
7
+ expected:
8
+ wait: //*[@id='searchx']
@@ -0,0 +1,22 @@
1
+ page:
2
+ reqid: MainPg-001
3
+ name: Home
4
+ description: Navigate to a specified URL and wait until the expected elements are present
5
+ url: http://www.carmax.com
6
+ expected:
7
+ wait: //*[@id='search']
8
+ ---
9
+ page:
10
+ reqid: BETA_Loaded
11
+ description: Beta website is loaded.
12
+ execute_when: url(beta)
13
+ ---
14
+ page:
15
+ reqid: Survey
16
+ description: Survey popup answered by Yes
17
+ execute_when: visible(//area[@alt='no'])
18
+ action: click(//area[@alt='no'])
19
+ ---
20
+ page:
21
+ action: pause
22
+ skip: false
@@ -0,0 +1,43 @@
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
+ assertions: [
6
+ assert1: {
7
+ "locator": "page(find_cars_by).get(make)",
8
+ "visible_when": "never",
9
+ "reqid": "REQ-MAKE"
10
+ }
11
+ ]
12
+ ---
13
+ page:
14
+ name: Hover-Research
15
+ action: mouseover(page(basic_nav).get(research))
16
+ snapit: true
17
+ ---
18
+ page:
19
+ action: pause
20
+ skipit: true
21
+ ---
22
+ page:
23
+ name: Hover-Sell Your Car
24
+ snapit: true
25
+ action: mouseover(page(basic_nav).get(sell_us_your_car))
26
+ ---
27
+ page:
28
+ name: Hover-Find Your Car
29
+ action: mouseover(page(basic_nav).get(find_cars_for_sale))
30
+ snapit: true
31
+ ---
32
+ page:
33
+ name: Click Register
34
+ snapit: true
35
+ action: click(page(home).get(register))
36
+ ---
37
+ page:
38
+ reqid: Rover
39
+ action: verifyelement(page(register_pg))
40
+ ---
41
+ page:
42
+ action: pause
43
+ skip: false