scoutui 0.1.2 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a30ec1b576da5316bdcab5d783e012b38162c8ff
4
- data.tar.gz: 0fa6ec360deb548399164ea9fd1ecea9726b79a1
3
+ metadata.gz: 597490bc864b9a5ab5ae2abb47f5ab6d384f26db
4
+ data.tar.gz: 250daf6f585493301d23a20b73b0ffec728ee177
5
5
  SHA512:
6
- metadata.gz: 4115dda6300e3d3ca932060c4ee560f6753db16ccc1adefaae70a3eb4ee40abda227a4d02b3964f712b3cdcefadf0171183d7bfbb1af962ff3d9fc5cc0250a8d
7
- data.tar.gz: 8380d47fae11e943e80b162fa6338862c05a7170cbcc9481b14761bc21055e94e27ddf4557999b3cb0a1c722c83eaf41e9b7ba3004419c22aaae28c17dcc3ead
6
+ metadata.gz: 9e64db3af7536e55a3d18769ef42d334c3dee36a05147a3fe014a16a77193677f8f0fc6799509377bf8a359a9e6a177bb991ebdc7ab90c9410c91351454c19b9
7
+ data.tar.gz: d64d32a4627e59340781012c27f88d08423ab4eebd407a1f8e8cdfad5482a3a9fac345d1824fbb4c1b1721361eba0fee21ffb1c8859ac928029018cb44047477
data/README.md CHANGED
@@ -1,11 +1,31 @@
1
- # Scoutui
1
+ # ScoutUI
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/scoutui`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ The ScoutUI gem provides a simple, yet powerful visual test framework to help you and your team with an automated visual test strategy.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ This project is still in beta, but working - the version '1.0.0' will be the first "stable" release.
6
+
7
+ ## What does ScoutUI provide?
8
+
9
+ 1. Command driven test strategy using YAML and/or JSON format
10
+ 2. Integration with Applitools Eyes (this is optional - only if you have an Eyes account)
11
+ 3. Leverage Selenium/WebDriver without having to hassle with it (e.g. APIs) to conduct browser testing
12
+ a. UI Regression with Eyes
13
+ b. Functional Testing
14
+
15
+
16
+ ## Helpful Links
17
+ YouTube
6
18
 
7
19
  ## Installation
8
20
 
21
+ ### Prerequisites
22
+ 1. Ruby 1.9.3 or higher
23
+ 2. Following Gems
24
+ a. selenium-webdriver
25
+ b. eyes_selenium
26
+ c. yaml
27
+ d. json
28
+
9
29
  Add this line to your application's Gemfile:
10
30
 
11
31
  ```ruby
@@ -24,16 +44,58 @@ To run unit tests:
24
44
 
25
45
  $ bundle exec rake spec
26
46
 
27
- ## Usage
47
+ ## Running the examples
28
48
 
29
- TODO: Write usage instructions here
49
+ Following these steps to get started.
50
+
51
+ 1. Goto the ./examples/ex1 folder
52
+ 2. Set the environment variable APPLITOOLS_API_KEY with your key
53
+
54
+ export APPLITOOLS_API_KEY=[__YOUR_APPLITOOLS_KEY__]
55
+ 3. Set the environment variable SCOUTUI_BIN to the ScoutUi driver
56
+
57
+ export SCOUTUI_BIN=[ScoutUI Path]\bin\scoutui_driver.rb
58
+
59
+ 4. Run the script 'test-simple.sh'
60
+ 5. Goto your Applitools account and look for the test named "Graceland"
30
61
 
31
62
  ## Development
32
63
 
33
64
 
34
- ## Ti ryb
65
+ ## Creating Tests
66
+
67
+ ### Command files
68
+ Command files are currently supported only in YAML format, however JSON will be supported very shortly (by 10/28/2015).
35
69
 
36
- ruby test_script.rb --file ../spec/fixtures/static_test_settings.json --host rqa3 --lang en-us --title "abc 123" --user peter --password Hello --browser chrome --eyes TruE
70
+ Each stanza of a Command YAML file starts with *page*.
71
+
72
+ page:
73
+
74
+ The following
75
+
76
+
77
+ #### Example 1. Navigate to a URL then take snapshots after user actions (e.g. mouse events).
78
+
79
+ page:
80
+ name: Home
81
+ url: http://www.elvis.com
82
+ ---
83
+ page:
84
+ name: Mouseover Music
85
+ action: mouseover(//ul[@class="nav-primary"]//a[text()="Music"])
86
+ snapit: true
87
+ ---
88
+ page:
89
+ name: Studio Albums
90
+ action: click(//*[@id='music']//a[text()="Studio Albums"])
91
+ snapit: true
92
+ expected:
93
+ wait: //footer[@id="footer"]//a[@class="credits"]
94
+
95
+
96
+ ## To run from the command line
97
+
98
+ ruby test_script.rb --config <your test settings JSON file> --eyes
37
99
 
38
100
 
39
101
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -42,20 +104,13 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
42
104
 
43
105
  ## Contributing
44
106
 
45
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/scoutui. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
46
-
107
+ Bug reports and pull requests are welcome on GitHub at https://github.com/h20dragon/scoutui.
47
108
 
48
109
  ## License
49
110
 
50
111
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
51
112
 
52
113
  ## To do
53
- 1. Refactor test_settings handling of JSON in method setConfig() - if Hash then we're fine, otherwise load the file (where String is passed)
54
-
55
- jFile = File.read(static_settings_file)
56
- jsonData=JSON.parse(jFile)
57
-
58
- puts "jsonData type is #{jsonData.class.to_s}"
59
114
 
60
- t.setConfig(jsonData)
115
+ Advanced Test Reporting
61
116
 
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/ruby
2
+ require_relative '../lib/scoutui'
3
+
4
+ require 'logger'
5
+
6
+ ##
7
+ # --file <Yaml>
8
+ # --host <String>
9
+ # --lang <String>
10
+ # --title <Applitools Title>
11
+ # --browser <chrome|firefox|ie>
12
+
13
+
14
+ nav = Scoutui::Navigator.new(Scoutui::Utils::TestUtils.instance.parseCommandLine())
15
+
16
+
17
+ runner = Scoutui::Base::TestScout.new(nav)
18
+
19
+ runner.start()
20
+ runner.report()
21
+
22
+
@@ -0,0 +1,25 @@
1
+ page:
2
+ name: Home
3
+ url: http://www.elvis.com
4
+ ---
5
+ page:
6
+ name: Mouseover Music
7
+ action: mouseover(//ul[@class="nav-primary"]//a[text()="Music"])
8
+ snapit: true
9
+ ---
10
+ page:
11
+ name: Studio Albums
12
+ action: click(//*[@id='music']//a[text()="Studio Albums"])
13
+ snapit: true
14
+ expected:
15
+ xyz: //footer[@id="footer"]//a[@class="credits"]
16
+ ---
17
+ page:
18
+ skip: true
19
+ action: type(//input[@id="password"], ${password})
20
+ ---
21
+ page:
22
+ skip: true
23
+ action: click(//input[@id="btnSubmit"])
24
+ expected:
25
+ avatar: //img[@id="cnqr-profile-avatar"]
@@ -0,0 +1,36 @@
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
+ # Specify browser under test (chrome, firefox, ie, safari)
12
+ BUT=chrome
13
+
14
+ # Specify the title and appName needed by Applitools
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=Graceland
19
+ APP=Elvis
20
+
21
+ # Specify the test configuration file
22
+ TEST_CFG="./test.config.json"
23
+
24
+ ##
25
+ # content
26
+ # strict
27
+ # exact
28
+ # layyout
29
+ ##
30
+ MATCH_TYPE="layout"
31
+
32
+ # The following command line parameters will override provided title and appName (if provided in test config file)
33
+ $SCOUTUI_BIN --config $TEST_CFG --browser $BUT --eyes --app $APP --title $TITLE --match $MATCH_TYPE
34
+
35
+ # The following
36
+ # $SCOUTUI_BIN --config $TEST_CFG --eyes --match $MATCH_TYPE --browser $BUT
@@ -0,0 +1,16 @@
1
+ {
2
+ "Project": "Example",
3
+ "Version": "1.00",
4
+ "Description": "Example1 - http://www.Elvis.com",
5
+
6
+ "browser": "chrome",
7
+
8
+ "eyes": {
9
+ "title": "Example1",
10
+ "viewport": "1700x718",
11
+ "app": "09-26"
12
+ },
13
+
14
+ "host": "http://www.elvis-presley.com",
15
+ "dut": "./commands.yml"
16
+ }
@@ -0,0 +1,35 @@
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
+ expected:
6
+ wait: page(home).get(cars4sale)
7
+ wait: page(home).get(whyCarMax)
8
+ ---
9
+ page:
10
+ name: Mouseover View Tickets
11
+ action: mouseover(page(home).get(whyCarMax))
12
+ snapit: true
13
+ ---
14
+ page:
15
+ name: Click - specified by Alias
16
+ action: click(${whyCarMax})
17
+ snapit: true
18
+ ---
19
+ page:
20
+ skip: true
21
+ action: pause
22
+ ---
23
+ page:
24
+ skip: true
25
+ name: Click on Input
26
+ action: click(page(main_nav).get(search_input))
27
+ snapit: true
28
+ ---
29
+ page:
30
+ action: type(page(main_nav).get(search_input), ${Search_Me})
31
+ ---
32
+ page:
33
+ action: click(page(main_nav).get(search_btn))
34
+ expected:
35
+ wait: //input[@id='zip']
@@ -0,0 +1,18 @@
1
+ {
2
+ "home": {
3
+ "cars4sale": "//a[text()='Find Cars for Sale']",
4
+ "whyCarMax": "//a[text()='Why CarMax']",
5
+ "wait2": "//input[text()='Sign in']"
6
+ },
7
+
8
+ "main_nav": {
9
+ "search_input": "//input[@id='search']",
10
+ "search_btn": "//a[@id='search-btn']"
11
+ },
12
+
13
+
14
+ "search": {
15
+ "header": "//title"
16
+ }
17
+ }
18
+
@@ -0,0 +1,38 @@
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=chrome
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.config.json"
22
+
23
+ ##
24
+ # content
25
+ # strict
26
+ # exact
27
+ # layyout
28
+ ##
29
+ MATCH_TYPE="layout"
30
+
31
+ EYES=--eyes
32
+
33
+
34
+ # 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 --pagemodel ./page_model.json
36
+
37
+ # The following
38
+ # $SCOUTUI_BIN --config $TEST_CFG --eyes --match $MATCH_TYPE --browser $BUT
@@ -0,0 +1,25 @@
1
+ {
2
+ "Project": "Example",
3
+ "Version": "1.00",
4
+ "Description": "Example - CarMax",
5
+
6
+ "browser": "chrome",
7
+
8
+ "eyes": {
9
+ "title": "Example - CarMax",
10
+ "viewport": "1024x718",
11
+ "app": "10-16"
12
+ },
13
+
14
+ "host": "http://www.carmax.com",
15
+ "dut": "./commands.yml",
16
+
17
+
18
+ "user_vars": {
19
+ "Search_Me": "BMW M3",
20
+ "View_Tickets_Link": "page(main_nav).get(ViewTicketsLink)",
21
+ "WhyCarMax": "page(home).get(whyCarMax)"
22
+ }
23
+
24
+ }
25
+
@@ -0,0 +1,53 @@
1
+ page:
2
+ name: Home
3
+ description: Navigate to a specified URL and wait until the expected elements are present
4
+ url: http://localhost:8081/trac/PWK/wiki
5
+ expected:
6
+ wait: page(home).get(wiki_link)
7
+ wait2: page(home).get(login_form).get(password)
8
+ ---
9
+ page:
10
+ name: Mouseover View Tickets
11
+ action: mouseover(page(main_nav).get(ViewTicketsLink))
12
+ snapit: true
13
+ ---
14
+ page:
15
+ name: Click - specified by Alias
16
+ action: click(${View_Tickets_Link})
17
+ snapit: true
18
+ ---
19
+ page:
20
+ skip: true
21
+ action: pause
22
+ ---
23
+ page:
24
+ name: Click on Input
25
+ action: click(page(main_nav).get(search_input))
26
+ snapit: true
27
+ ---
28
+ page:
29
+ action: type(page(main_nav).get(search_input), ${Search_Me})
30
+ ---
31
+ page:
32
+ skip: true
33
+ name: Mouseover Music
34
+ action: mouseover(//ul[@class="nav-primary"]//a[text()="Music"])
35
+ snapit: true
36
+ ---
37
+ page:
38
+ skip: true
39
+ name: Studio Albums
40
+ action: click(//*[@id='music']//a[text()="Studio Albums"])
41
+ snapit: true
42
+ expected:
43
+ wait: //footer[@id="footer"]//a[@class="credits"]
44
+ ---
45
+ page:
46
+ skip: true
47
+ action: type(//input[@id="password"], ${password})
48
+ ---
49
+ page:
50
+ skip: true
51
+ action: click(//input[@id="btnSubmit"])
52
+ expected:
53
+ avatar: //img[@id="cnqr-profile-avatar"]
@@ -0,0 +1,24 @@
1
+ {
2
+ "Project": "Example",
3
+ "Version": "1.00",
4
+ "Description": "Example1",
5
+
6
+ "browser": "chrome",
7
+
8
+ "eyes": {
9
+ "title": "Example1",
10
+ "viewport": "1700x718",
11
+ "app": "09-26"
12
+ },
13
+
14
+ "host": "http://localhost:8081/trac/PWK/wiki",
15
+ "dut": "./commands.yml",
16
+
17
+
18
+ "user_vars": {
19
+ "Search_Me": "Van Halen",
20
+ "View_Tickets_Link": "page(main_nav).get(ViewTicketsLink)"
21
+ }
22
+
23
+ }
24
+
@@ -0,0 +1,36 @@
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=chrome
13
+
14
+ # Specify the title and appName needed by Applitools
15
+ TITLE=DEMO-ONE
16
+ APP=Elvis
17
+
18
+ # Specify the test configuration file
19
+ TEST_CFG="./ex6.config.json"
20
+
21
+ ##
22
+ # content
23
+ # strict
24
+ # exact
25
+ # layyout
26
+ ##
27
+ MATCH_TYPE="layout"
28
+
29
+ #EYES=--eyes
30
+ EYES=""
31
+
32
+ # The following command line parameters will override provided title and appName (if provided in test config file)
33
+ $SCOUTUI_BIN --debug --config $TEST_CFG --browser $BUT $EYES --app $APP --title $TITLE --match $MATCH_TYPE --pagemodel ./page_model.json
34
+
35
+ # The following
36
+ # $SCOUTUI_BIN --config $TEST_CFG --eyes --match $MATCH_TYPE --browser $BUT