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
@@ -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