scoutui 2.0.1 → 2.0.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 (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
@@ -0,0 +1,24 @@
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(home).get(cars4sale)
8
+ wait2: page(home).get(whyCarMax)
9
+ wait3: page(find_cars_by).get(make)
10
+ assertions: [
11
+ assert1: {
12
+ "locator": "page(find_cars_by).get(make)",
13
+ "visible_when": "never",
14
+ "reqid": "REQ-MAKE"
15
+ },
16
+ assert2: {
17
+ "locator": "page(home)",
18
+ "reqid": "REQ-HOME"
19
+ }
20
+ ]
21
+ ---
22
+ page:
23
+ action: pause
24
+ skip: false
@@ -0,0 +1,6 @@
1
+ {
2
+
3
+ "make": "porsche"
4
+
5
+
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "Project": "Example",
3
+ "Version": "1.00",
4
+ "Description": "Example - CarMax",
5
+
6
+ "browser": "chrome",
7
+
8
+ "host": "http://www.carmax.com",
9
+
10
+ "dut": ""
11
+ }
12
+
@@ -12,13 +12,19 @@
12
12
  },
13
13
 
14
14
  "host": "http://www.carmax.com",
15
- "dut": "./commands.yml",
15
+ "dut": "../commands/home.command.yml",
16
+ "dut2": "../commands/commands.yml",
16
17
 
17
18
 
18
19
  "user_vars": {
19
20
  "Search_Me": "BMW M3",
20
21
  "View_Tickets_Link": "page(main_nav).get(ViewTicketsLink)",
21
- "WhyCarMax": "page(home).get(whyCarMax)"
22
+ "WhyCarMax": "page(home).get(whyCarMax)",
23
+
24
+ "firstname": "Elvis",
25
+
26
+ "MyMake": "Porsche",
27
+ "make_aut": "file(porsche.json)"
22
28
  }
23
29
 
24
30
  }
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env bash
2
+
3
+
4
+
5
+ #VIEXPORT="--viewport 800x600"
6
+
7
+ while getopts ":a:b:c:d:eh:il:m:p:r:st:u:A:P:O:S:T:V:vw:" opt; do
8
+ case $opt in
9
+ a)
10
+ echo "-a was triggered, Parameter: $OPTARG" >&2
11
+ ;;
12
+ b)
13
+ BROWSER="--browser $OPTARG"
14
+
15
+ if [[ $BROWSER=="chrome" ]];
16
+ then
17
+ rc=`/usr/local/bin/which chromedriver`
18
+ if [ $? -ne 0 ]
19
+ then
20
+ echo "-- Error: unable to find chromedriver. --"
21
+ exit 2
22
+ fi
23
+
24
+ fi
25
+ ;;
26
+ c)
27
+ CAPS="--capabilities $OPTARG"
28
+ ;;
29
+ d)
30
+ DUT="--dut $OPTARG"
31
+ ;;
32
+ e)
33
+ EYES="--eyes"
34
+ ;;
35
+ h)
36
+ HOST="--host \"$OPTARG\""
37
+ ;;
38
+ i)
39
+ INC_EXP="--include_expectations"
40
+ ;;
41
+ l)
42
+ LEVEL="--loglevel $OPTARG"
43
+ ;;
44
+ m)
45
+ MATCH_LEVEL="--match $OPTARG"
46
+ ;;
47
+ p)
48
+ PASSWORD="--password $OPTARG"
49
+ ;;
50
+ r)
51
+ ROLE="--role $OPTARG"
52
+ ;;
53
+ s)
54
+ SAUCE="--sauce"
55
+ ;;
56
+ S)
57
+ SAUCE_NAME="--sauce_name $OPTARG"
58
+ ;;
59
+ t)
60
+ TEST_CFG="$OPTARG"
61
+ ;;
62
+ u)
63
+ USERID="--user $OPTARG"
64
+ ;;
65
+ v)
66
+ VERBOSE="--debug"
67
+ ;;
68
+ w)
69
+ DEFAULT_WAIT="--wait $OPTARG"
70
+ ;;
71
+ A)
72
+ APP="--app $OPTARG"
73
+ ;;
74
+ O)
75
+ mkdir -p $OPTARGET 2>/dev/null
76
+ DIFF_DIR="--diffs $OPTARG"
77
+ ;;
78
+ P)
79
+ PAGE_MODEL="--pages $OPTARG"
80
+ ;;
81
+ T)
82
+ TITLE="--title $OPTARG"
83
+ ;;
84
+ V)
85
+ VIEWPORT="--viewport $OPTARG"
86
+ ;;
87
+ \?)
88
+ echo "Invalid option: -$OPTARG" >&2
89
+ exit 1
90
+ ;;
91
+ :)
92
+ echo "Option -$OPTARG requires an argument." >&2
93
+ exit 1
94
+ ;;
95
+ esac
96
+ done
97
+
98
+ echo "BROWSER: ${BROWSER}"
99
+ echo "EYES : ${EYES}"
100
+ echo "HOST : ${HOST}"
101
+ echo "VERBOSE: ${VERBOSE}"
102
+ echo "MATCH: ${MATCH_LEVEL}"
103
+ echo "SAUCE: ${SAUCE}"
104
+ echo "CAPS: ${CAPS}"
105
+ echo "DUT: ${DUT}"
106
+ echo "TITLE: ${TITLE}"
107
+ echo "APP: ${APP}"
108
+ echo "VIEWPORT: ${VIEWPORT}"
109
+
110
+
111
+ # --dut ../commands/login.fail.yml
112
+ #TITLE="--title DEMO-XYZ"
113
+ #APP="--app LOC.ALL-HANDS"
114
+ #PAGE_MODEL="--pages ../appmodels/page_model.cge.json,../appmodels/page_model.traveler.json,../appmodels/page_model.common_bar.json"
115
+
116
+ if [[ -f $TEST_CFG ]]; then
117
+
118
+ CMD="ruby $SCOUTUI_BIN --config ${TEST_CFG} ${INC_EXP} ${DIFF_DIR} ${LEVEL} ${USERID} ${PASSWORD} ${DUT} ${VIEWPORT} ${ROLE} ${EYES} ${SAUCE} ${SAUCE_NAME} $TITLE ${APP} ${CAPS} ${MATCH_LEVEL} ${BROWSER} ${HOST} ${PAGE_MODEL} ${DEFAULT_WAIT} ${VERBOSE}"
119
+
120
+ echo $CMD
121
+ eval $CMD
122
+ else
123
+ echo "Error: unable to access ${TEST_CFG}."
124
+ exit 1
125
+ fi
@@ -0,0 +1,14 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # Main test script.
5
+ ##
6
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
7
+
8
+
9
+ # Specify the test configuration file
10
+ TEST_CFG="../test-configs/test.config.basic.json"
11
+ APP_MODEL="../appmodel/page_model.json"
12
+
13
+
14
+ ./run-test.sh -b chrome -d ../commands/commands.basic.appmodel.yml -P $APP_MODEL -t $TEST_CFG -v
@@ -7,7 +7,7 @@
7
7
  #
8
8
  # export APPLITOOLS_API_KEY="__YOUR_KEY_HERE__"
9
9
  ##
10
- SCOUTUI_BIN=../../bin/scoutui_driver.rb
10
+ SCOUTUI_BIN=../../../bin/scoutui_driver.rb
11
11
  # Specify browser under test (chrome, firefox, ie, safari)
12
12
  BUT=firefox
13
13
 
@@ -18,7 +18,7 @@ TITLE=DEMO-CarMax
18
18
  APP=Oct2015
19
19
 
20
20
  # Specify the test configuration file
21
- TEST_CFG="./test.config.json"
21
+ TEST_CFG="../test-configs/test.config.json"
22
22
 
23
23
  ##
24
24
  # content
@@ -33,7 +33,7 @@ EYES=
33
33
 
34
34
 
35
35
  # The following command line parameters will override provided title and appName (if provided in test config file)
36
- $SCOUTUI_BIN --config $TEST_CFG --browser $BUT $EYES --app $APP --title $TITLE --match $MATCH_TYPE --pagemodel ./page_model.json --debug
36
+ $SCOUTUI_BIN --config $TEST_CFG --browser $BUT $EYES --app $APP --title $TITLE --match $MATCH_TYPE --pagemodel ../appmodel/page_model.json --debug
37
37
 
38
38
  # The following
39
39
  # $SCOUTUI_BIN --config $TEST_CFG --eyes --match $MATCH_TYPE --browser $BUT
@@ -0,0 +1,16 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # Load a page and wait for expected elements, however these are
5
+ # explicit 'waits' - included in assertions.
6
+ #
7
+ # The parameter '-i' will include the 'waits' on expected elements
8
+ # as assertions (e.g. will be used for pass/fail criteria). The "-i" is used.
9
+ ##
10
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
11
+
12
+
13
+ # Specify the test configuration file
14
+ TEST_CFG="../test-configs/test.config.basic.json"
15
+
16
+ ./run-test.sh -b chrome -d ../commands/ex1.yml -t $TEST_CFG -v -i
@@ -0,0 +1,13 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # Load a page and wait for expected elements, however these are
5
+ # explicit 'waits' - WITHOUT assertions (e.g. the "-i" is omitted).
6
+ ##
7
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
8
+
9
+
10
+ # Specify the test configuration file
11
+ TEST_CFG="../test-configs/test.config.basic.json"
12
+
13
+ ./run-test.sh -b chrome -d ../commands/ex1.yml -t $TEST_CFG -v
@@ -0,0 +1,15 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # Load a page and wait for expected elements, however these are
5
+ # explicit 'waits' - included in assertions.
6
+ #
7
+ # Set a default timeout (wait) in seconds when searching/finding for elements.
8
+ ##
9
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
10
+
11
+
12
+ # Specify the test configuration file
13
+ TEST_CFG="../test-configs/test.config.basic.json"
14
+
15
+ ./run-test.sh -b chrome -d ../commands/ex1c.yml -t $TEST_CFG -v -w 5 -i
@@ -0,0 +1,15 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # Load a page and wait for expected elements, however these are
5
+ # explicit 'waits' - included in assertions.
6
+ #
7
+ # Set a default timeout (wait) in seconds when searching/finding for elements.
8
+ ##
9
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
10
+
11
+
12
+ # Specify the test configuration file
13
+ TEST_CFG="../test-configs/test.config.basic.json"
14
+
15
+ ./run-test.sh -b chrome -d ../commands/ex1d.yml -t $TEST_CFG -v -w 5
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env bash
2
+ #/bin/bash
3
+ ##
4
+ # Description
5
+ ##
6
+
7
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
8
+ # Specify browser under test (chrome, firefox, ie, safari)
9
+ BUT=firefox
10
+
11
+ # Specify the title and appName needed by Applitools
12
+ ## NOTE: If the test configuration file specifies the title and app, it is superseded by the
13
+ ## command line options.
14
+ TITLE=DEMO-CarMax
15
+ APP=STPCon-Springx
16
+
17
+ # Specify the test configuration file
18
+ TEST_CFG="../test-configs/test.config.json"
19
+
20
+ ##
21
+ # content
22
+ # strict
23
+ # exact
24
+ # layyout
25
+ ##
26
+ MATCH_TYPE="layout"
27
+
28
+
29
+ PM="../appmodel/page_model.json,../appmodel/common.json,../appmodel/register.model.json"
30
+
31
+
32
+ eyes() {
33
+ ./run-test.sh -b chrome -i -d ../commands/ex2.hover.yml -P "${PM}" -t ../test-configs/test.config.json -v \
34
+ -e -m content -T CarMax_Hover -A Ex1 -O /tmp/vt \
35
+ -d ../commands/ex.forms.yml
36
+ }
37
+
38
+
39
+ ./run-test.sh -b firefox -i -d ../commands/ex2.hover.yml -P "${PM}" -t ../test-configs/test.config.json -v \
40
+ -d ../commands/ex.forms.yml
@@ -0,0 +1,40 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # This test script overrides the provided title and appname (if provided in the test config. file)
5
+ #
6
+ # Set the APPLITOOLS_API_KEY environment variable with your key.
7
+ #
8
+ # export APPLITOOLS_API_KEY="__YOUR_KEY_HERE__"
9
+ ##
10
+
11
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
12
+ # Specify browser under test (chrome, firefox, ie, safari)
13
+ BUT=firefox
14
+
15
+ # Specify the title and appName needed by Applitools
16
+ ## NOTE: If the test configuration file specifies the title and app, it is superseded by the
17
+ ## command line options.
18
+ TITLE=DEMO-CarMax
19
+ APP=STPCon-Springx
20
+
21
+ # Specify the test configuration file
22
+ TEST_CFG="../test-configs/test.config.json"
23
+
24
+ ##
25
+ # content
26
+ # strict
27
+ # exact
28
+ # layyout
29
+ ##
30
+ MATCH_TYPE="layout"
31
+
32
+
33
+
34
+
35
+
36
+ PM="../appmodel/page_model.json,../appmodel/common.json"
37
+
38
+
39
+ ./run-test.sh -b chrome -i -d ../commands/ex2.hover.yml -P "${PM}" -t ../test-configs/test.config.json -v \
40
+ -e -m content -T CarMax_Hover -A Ex1 -O /tmp/vt
@@ -0,0 +1,26 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # This test script overrides the provided title and appname (if provided in the test config. file)
5
+ #
6
+ # Set the APPLITOOLS_API_KEY environment variable with your key.
7
+ #
8
+ # export APPLITOOLS_API_KEY="__YOUR_KEY_HERE__"
9
+ ##
10
+
11
+ export SCOUTUI_BIN=../../../bin/scoutui_driver.rb
12
+ # Specify browser under test (chrome, firefox, ie, safari)
13
+ BUT=firefox
14
+
15
+ # Specify the title and appName needed by Applitools
16
+ ## NOTE: If the test configuration file specifies the title and app, it is superseded by the
17
+ ## command line options.
18
+ TITLE=DEMO-CarMax
19
+ APP=Oct2015
20
+
21
+ # Specify the test configuration file
22
+ TEST_CFG="../test-configs/test.config.json"
23
+
24
+ PM="../appmodel/page_model.json,../appmodel/common.json"
25
+
26
+ ./run-test.sh -b chrome -i -d ../commands/ex2.hover.yml -P "${PM}" -t ../test-configs/test.config.json -v
@@ -0,0 +1,43 @@
1
+ #/bin/bash
2
+ ##
3
+ # Description
4
+ # This test script overrides the provided title and appname (if provided in the test config. file)
5
+ #
6
+ # Set the APPLITOOLS_API_KEY environment variable with your key.
7
+ #
8
+ # export APPLITOOLS_API_KEY="__YOUR_KEY_HERE__"
9
+ ##
10
+ SCOUTUI_BIN=../../../bin/scoutui_driver.rb
11
+ # Specify browser under test (chrome, firefox, ie, safari)
12
+ BUT=firefox
13
+
14
+ # Specify the title and appName needed by Applitools
15
+ ## NOTE: If the test configuration file specifies the title and app, it is superseded by the
16
+ ## command line options.
17
+ TITLE=DEMO-CarMax
18
+ APP=Oct2015
19
+
20
+ # Specify the test configuration file
21
+ TEST_CFG="../test-configs/test.config.json"
22
+
23
+ ##
24
+ # content
25
+ # strict
26
+ # exact
27
+ # layyout
28
+ ##
29
+ MATCH_TYPE="layout"
30
+
31
+ EYES=--eyes
32
+ EYES=
33
+
34
+
35
+ # The following command line parameters will override provided title and appName (if provided in test config file)
36
+ #$SCOUTUI_BIN --config $TEST_CFG --browser $BUT $EYES --app $APP --title $TITLE --match $MATCH_TYPE --pagemodel ../appmodel/page_model.json --debug
37
+
38
+ # The following
39
+ # $SCOUTUI_BIN --config $TEST_CFG --eyes --match $MATCH_TYPE --browser $BUT
40
+
41
+ PM="../appmodel/page_model.json,../appmodel/common.json"
42
+
43
+ ./run-test.sh -b chrome -i -d ../commands/ex2.yml -P "${PM}" -t ../test-configs/test.config.json -v