From 2b7dd2175ca1eb133458d62756b2297fe2d09d4d Mon Sep 17 00:00:00 2001
From: Vanderloo <212703693@logon.ds.ge.com>
Date: Thu, 31 May 2018 09:36:15 -0400
Subject: [PATCH] Test creation
---
nightwatch.conf.js | 49 ++++++++
package-lock.json | 6 +-
package.json | 8 +-
page_objects/music_page.js | 0
page_objects/nav.js | 29 +++++
reports/CHROME_66.0.3359.181_XP_tests.xml | 53 ++++++++
reports/generatedReport.html | 147 ++++++++++++++++++++++
scripts/chromewin.sh | 13 ++
selenium-debug.log | 12 ++
test_pages/close.js | 5 +
test_pages/loadPageAndVerify.js | 8 ++
tests/1-generalTests.js | 43 +++++++
views/partials/_nav.ejs | 8 +-
13 files changed, 371 insertions(+), 10 deletions(-)
create mode 100644 nightwatch.conf.js
create mode 100644 page_objects/music_page.js
create mode 100644 page_objects/nav.js
create mode 100644 reports/CHROME_66.0.3359.181_XP_tests.xml
create mode 100644 reports/generatedReport.html
create mode 100644 scripts/chromewin.sh
create mode 100644 selenium-debug.log
create mode 100644 test_pages/close.js
create mode 100644 test_pages/loadPageAndVerify.js
create mode 100644 tests/1-generalTests.js
diff --git a/nightwatch.conf.js b/nightwatch.conf.js
new file mode 100644
index 0000000..de3de5c
--- /dev/null
+++ b/nightwatch.conf.js
@@ -0,0 +1,49 @@
+const seleniumServer = require("selenium-server");
+const chromedriver = require("chromedriver");
+const iedriver = require("iedriver");
+const edgedriver = require("edgedriver");
+
+module.exports = {
+ "src_folders" : ["tests"],
+ "output_folder" : "reports",
+ "page_objects_path" : "page_objects",
+
+ "selenium": {
+ "start_process": true, // tells nightwatch to start/stop the selenium process
+ "server_path": seleniumServer.path,
+ "port": 4444, // standard selenium port
+ "cli_args": {
+ "webdriver.chrome.driver" : chromedriver.path,
+ "webdriver.ie.driver" : iedriver.path32,
+ "webdriver.edge.driver" : edgedriver.path
+ }
+ },
+
+ "test_settings" : {
+ "default" : {
+ "launch_url" : "http://localhost",
+ "selenium_port" : 4444,
+ "selenium_host" : "localhost",
+ "silent": true,
+ "screenshots" : {
+ "enabled" : false,
+ "path" : ""
+ },
+ "desiredCapabilities": {
+ "browserName": "chrome"
+ }
+ },
+
+ "chrome" : {
+ "desiredCapabilities": {
+ "browserName": "chrome"
+ }
+ },
+
+ "edge" : {
+ "desiredCapabilities": {
+ "browserName": "MicrosoftEdge"
+ }
+ }
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index 27c6dfb..264b1d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3046,9 +3046,9 @@
}
},
"selenium-server": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/selenium-server/-/selenium-server-3.12.0.tgz",
- "integrity": "sha512-2qFVvAhn6JwsJ/UnYJjISJq7flIssDMVgaYLoh24SkZJ8YEdjSbMWEK5LTpN1stma5HPHSknaXBe38trf0NUww=="
+ "version": "2.53.1",
+ "resolved": "https://registry.npmjs.org/selenium-server/-/selenium-server-2.53.1.tgz",
+ "integrity": "sha1-1oFSiBLzwuBTGmt+YT4juwLM6KY="
},
"semver": {
"version": "5.5.0",
diff --git a/package.json b/package.json
index db3b1ba..a43b5c5 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,9 @@
"test": "echo \"Error: no test specified\" && exit 1",
"build-css": "node-sass --include-path scss sass/style.scss public/css/style.css -r -w sass",
"build": "node-sass --include-path scss sass/style.scss public/css/style.css",
- "start": "npm run build && node server.js"
+ "start": "npm run build && node server.js",
+
+ "test-chromewin": "bash scripts\\chromewin.sh"
},
"author": "",
"license": "ISC",
@@ -19,11 +21,11 @@
"chromedriver": "^2.37.0",
"edgedriver": "^4.16299.0",
- "geckodriver": "^1.11.0",
+ "geckodriver": "^1.10.0",
"iedriver": "^3.9.2",
"nightwatch": "^0.9.20",
"nightwatch-html-reporter": "^2.0.5",
"selenium-download": "^2.0.12",
- "selenium-server": "^3.11.0"
+ "selenium-server": "^2.20.0"
}
}
diff --git a/page_objects/music_page.js b/page_objects/music_page.js
new file mode 100644
index 0000000..e69de29
diff --git a/page_objects/nav.js b/page_objects/nav.js
new file mode 100644
index 0000000..7f5b2d9
--- /dev/null
+++ b/page_objects/nav.js
@@ -0,0 +1,29 @@
+module.exports = {
+ url: 'http://localhost:8080',
+ elements: {
+ tab1: {
+ selector: "#nav-tab1"
+ },
+ tab2: {
+ selector: "#nav-tab2"
+ },
+ tab3: {
+ selector: "#nav-tab3"
+ },
+ tab4: {
+ selector: "#nav-tab4"
+ },
+ tab1Container: {
+ selector: "#tab1"
+ },
+ tab2Container: {
+ selector: "#tab2"
+ },
+ tab3Container: {
+ selector: "#tab3"
+ },
+ tab4Container: {
+ selector: "#tab4"
+ }
+ }
+};
diff --git a/reports/CHROME_66.0.3359.181_XP_tests.xml b/reports/CHROME_66.0.3359.181_XP_tests.xml
new file mode 100644
index 0000000..73f8755
--- /dev/null
+++ b/reports/CHROME_66.0.3359.181_XP_tests.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ at Object.Do All Tests (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\tests\tests.js:21:15)
+ at _combinedTickCallback (internal/process/next_tick.js:131:7)
+
+
+
+
+
+
+
+ ERROR: Unable to locate element: "#vue-music .music-data .artist" using: css selector
+ at F.command (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\api\assertions\containsText.js:46:21)
+ at F.module.exports.BaseAssertion._scheduleAssertion (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\assertion.js:87:17)
+ at F.module.exports.BaseAssertion._executeCommand (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\assertion.js:82:17)
+ at AssertionInstance.commandFn [as _commandFn] (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\assertion.js:180:21)
+ at AsyncTree.runCommand (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\queue.js:154:30)
+ at AsyncTree.runChildNode (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\queue.js:114:8)
+ at AsyncTree.walkDown (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\queue.js:80:10)
+ at AsyncTree.traverse (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\queue.js:73:8)
+ at Object.queueRunner [as run] (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\core\queue.js:216:18)
+ at Nightwatch.start (C:\Users\212703693\Documents\Dev\Sprint 1\node-website\node_modules\nightwatch\lib\index.js:206:14)
+
+
+
+
+
+
diff --git a/reports/generatedReport.html b/reports/generatedReport.html
new file mode 100644
index 0000000..af6cd83
--- /dev/null
+++ b/reports/generatedReport.html
@@ -0,0 +1,147 @@
+
+
+
+
+ Nightwatch HTML Report - Default Theme
+
+
+
+
+ Nightwatch Results
+
+
+
\ No newline at end of file
diff --git a/scripts/chromewin.sh b/scripts/chromewin.sh
new file mode 100644
index 0000000..8eda373
--- /dev/null
+++ b/scripts/chromewin.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+nightwatch --env chrome
+nightwatch-html-reporter -d ./reports -u true -p true
+
+if [[ $(tasklist | grep chromedriver.exe) ]] ; then
+echo "chromedriver found"
+taskkill //IM chromedriver.exe //F
+fi
+if [[ $(tasklist | grep geckodriver.exe) ]] ; then
+echo "geckodriver found"
+taskkill //IM geckodriver.exe //F
+fi
+exit 0
\ No newline at end of file
diff --git a/selenium-debug.log b/selenium-debug.log
new file mode 100644
index 0000000..28bb2ca
--- /dev/null
+++ b/selenium-debug.log
@@ -0,0 +1,12 @@
+09:36:00.889 INFO - Launching a standalone Selenium Server
+09:36:01.445 INFO - Java: "Oracle Corporation" 10.0.1+10
+09:36:01.446 INFO - OS: Windows 10 10.0 amd64
+09:36:01.521 INFO - v2.53.1, with Core v2.53.1. Built from revision a36b8b1
+09:36:01.771 INFO - Driver class not found: com.opera.core.systems.OperaDriver
+09:36:01.772 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered
+09:36:01.796 INFO - Driver provider org.openqa.selenium.safari.SafariDriver registration is skipped:
+registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform WIN10
+09:36:01.799 INFO - Driver class not found: org.openqa.selenium.htmlunit.HtmlUnitDriver
+09:36:01.801 INFO - Driver provider org.openqa.selenium.htmlunit.HtmlUnitDriver is not registered
+09:36:02.479 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
+09:36:02.479 INFO - Selenium Server is up and running
diff --git a/test_pages/close.js b/test_pages/close.js
new file mode 100644
index 0000000..8334367
--- /dev/null
+++ b/test_pages/close.js
@@ -0,0 +1,5 @@
+module.exports = function (browser) {
+ this.close = function() {
+ browser.end();
+ }
+}
diff --git a/test_pages/loadPageAndVerify.js b/test_pages/loadPageAndVerify.js
new file mode 100644
index 0000000..59798a7
--- /dev/null
+++ b/test_pages/loadPageAndVerify.js
@@ -0,0 +1,8 @@
+module.exports = function (browser) {
+ this.load = function() {
+ browser
+ .url('http://localhost:8080')
+ .resizeWindow(1920, 1080)
+ .waitForElementVisible('body')
+ }
+}
diff --git a/tests/1-generalTests.js b/tests/1-generalTests.js
new file mode 100644
index 0000000..315125f
--- /dev/null
+++ b/tests/1-generalTests.js
@@ -0,0 +1,43 @@
+var loadPage = require('../../pages/loadPageAndVerify')
+var closePage = require('../../pages/close')
+
+module.exports = {
+ 'Open And Verify Loaded' : function (browser) {
+ page = new loadPage(browser)
+ page.load()
+ },
+ 'Click Through Navigation Bar' : function (browser) {
+ var navBar = browser.page.nav();
+
+ navBar.expect.element('@tab2').to.be.visible;
+ navBar.expect.element('@tab2Container').to.not.be.visible;
+ navBar.click('@tab2').waitForElementVisible('@tab2Container', 1000);
+ navBar.expect.element('@tab1Container').to.have.css('display').which.equals('none');
+ navBar.expect.element('@tab2Container').to.have.css('display').which.does.not.equal('none');
+ },
+
+ 'Do All Tests' : function (browser) {
+ browser
+ .assert.containsText("#vue-music .music-data .artist", "Chortex")
+ .assert.containsText("#vue-music .music-data .urls :first-child a", "Soundcloud")
+ .click("#nav-tab3")
+ .waitForElementVisible('#tab3', 1000)
+ .assert.cssClassPresent('#tab3', 'active')
+ .setValue('#new-movie', ['infinity war', browser.Keys.ENTER])
+ .waitForElementPresent("#vue-movies :nth-child(2) .movie", 4000)
+ .assert.elementPresent("#vue-movies :nth-child(2) .movie")
+ .assert.containsText("#vue-movies :nth-child(2) .movie .title", "Avengers: Infinity War")
+ .assert.containsText("#vue-movies :nth-child(2) .movie .year", "2018")
+ .click("#vue-movies :nth-child(2) .movie button")
+ .assert.elementNotPresent("#vue-movies :nth-child(2) .movie")
+ .click("#nav-tab4")
+ .waitForElementVisible('#tab4', 1000)
+ .assert.cssClassPresent('#tab4', 'active')
+ .end();
+ },
+
+ 'Close Out' : function (browser) {
+ page = new closePage(browser)
+ page.close()
+ },
+};
diff --git a/views/partials/_nav.ejs b/views/partials/_nav.ejs
index 322e769..759652f 100644
--- a/views/partials/_nav.ejs
+++ b/views/partials/_nav.ejs
@@ -1,20 +1,20 @@