mirror of
https://github.com/nasa/openmct.git
synced 2025-04-19 08:36:24 +00:00
Merge branch 'master' of https://github.com/nasa/openmctweb into search
This commit is contained in:
commit
55dd8cb1a8
@ -67,7 +67,7 @@ as described above.
|
||||
An example of this is expressed in `platform/framework`, which follows
|
||||
bundle conventions.
|
||||
|
||||
### Regression Testing
|
||||
### Functional Testing
|
||||
|
||||
The tests described above are all at the unit-level; an additional
|
||||
test suite using [Protractor](https://angular.github.io/protractor/)
|
||||
@ -76,9 +76,9 @@ us under development, in the `protractor` folder.
|
||||
To run:
|
||||
|
||||
* Install protractor following the instructions above.
|
||||
* `webdriver-manager start`
|
||||
* `node app.js -p 1984 -x platform/persistence/elastic -i example/persistence`
|
||||
* `protractor protractor/conf.js`
|
||||
* `cd protractor`
|
||||
* `npm install`
|
||||
* `npm run all`
|
||||
|
||||
## Build
|
||||
|
||||
|
69
protractor/README
Normal file
69
protractor/README
Normal file
@ -0,0 +1,69 @@
|
||||
E2e Protractor Tests.
|
||||
|
||||
1. Instructions:
|
||||
|
||||
1. 3 Control Scripts located in bin/.
|
||||
run.js : node script used to start tests
|
||||
start.js: node script used to setup test(starts node,localstorage and webdriver)
|
||||
stop.js : node script, kills the 3 process started in start.js.
|
||||
clean.js: node script used to remove the node_module directory.(clean up directory).
|
||||
|
||||
2. Use npm(Node Package Mangager) to Run Scripts.
|
||||
a. cd protractor;
|
||||
b. npm install;
|
||||
c. To Run:
|
||||
-npm start : will start processes need by protractor
|
||||
-npm stop : will stop the processes need by protractor
|
||||
-npm run-script run : will execute Protractor Script
|
||||
-npm run-script all : will execute "start", "run", and "stop" script
|
||||
|
||||
2. Directory Hierachy:
|
||||
|
||||
-protractor: base directory
|
||||
-common: contains prototype javascript functions that all other tests use.
|
||||
-Buttons: common prototype functions related to enter fullscreen
|
||||
-CreateItem: common prototype functions related to creating an item
|
||||
-drag: common functions to test drag and drop.
|
||||
-editItem: common functions used to test edit functionality.
|
||||
-Launch: common script used to navigate the specified website.
|
||||
-RightMenu: common functions for right click menu(remove).
|
||||
-create
|
||||
-e2e tests that creates the specified object.
|
||||
-delete
|
||||
-e2e tests that removes the specified object
|
||||
-logs
|
||||
-ctrl.sh redirects console output of MMAP, webdriver and elastic search and pipes them to log files.
|
||||
-UI
|
||||
-Contains tests that test the UI(drag drop, fullscreen, info bubble)
|
||||
-conf.js:
|
||||
-protractor config file. Explained below
|
||||
-stressTest:
|
||||
Tests that are used to test for memory leaks. You can use the new tab option on WARP and then open the
|
||||
timeline in the new tab during the browser.sleep(). Once the test is do the browser will pause and you
|
||||
can look a the timeline results in the new tab.
|
||||
|
||||
NOTE: Cannot open chrome dev tools on same tab as the test are run on. Protractor uses the dev tools to
|
||||
exectute the tests.
|
||||
|
||||
-StressTest will create and delete folders.
|
||||
-StressTestBubble.js: creates manny bubbles.
|
||||
(Delay variable in InfoGesture.js was changed to 0)
|
||||
3. Conf.js
|
||||
Conf.js is used by protractor to setup and execute the tests.
|
||||
-allScriptsTimeout: gives more time for protractor to synchronize with the page.
|
||||
-jasmineNodeOpts: Protractor uses jasmine for the tests and jasmine has a default time out 30 seconds
|
||||
per "it" test. Changed to maximume allowed time 360000 ms
|
||||
-seleniumAddress: Protractor uses a Selenium server as a "proxy" between the test scripts and the browser
|
||||
driver. A stand a lone version comes with protractor and to run use "webdriver-manager"
|
||||
default address is: http://localhost:4444/wd/hub.
|
||||
-specs[]: Is an array of files. Each File should have a "describe, it" test to be executed by protractor.
|
||||
-capabilities: Tells protractor what browser to use and any browser arguments.
|
||||
|
||||
4. bundle.json
|
||||
bundle.json is used by npm to determine dependencies and location of script files.
|
||||
-Dependencies:
|
||||
"protractor": Contains protractor and webdriver package.
|
||||
"psnode": Window/Unix Command, used for list/kill process.(ps aux)
|
||||
"shelljs": Window/Unix Common JS Commands. eg rm,ls,exec
|
||||
"sleep": Window/Unix Commands used to sleep the script
|
||||
"string": Window/Unix Commands for string manipulation.
|
@ -22,7 +22,7 @@
|
||||
//TODO Add filter for duplications/
|
||||
var fullScreenFile = require("../common/Buttons");
|
||||
|
||||
describe('Test Fullscreen', function() {
|
||||
describe('Enable Fullscreen', function() {
|
||||
var fullScreenClass = new fullScreenFile();
|
||||
|
||||
beforeEach(require('../common/Launch'));
|
||||
|
@ -25,7 +25,7 @@ var itemEdit = require("../common/EditItem");
|
||||
var rightMenu = require("../common/RightMenu");
|
||||
var Drag = require("../common/drag");
|
||||
|
||||
describe('Test Info Bubble', function() {
|
||||
describe('Info Bubble', function() {
|
||||
var fullScreenClass = new fullScreenFile();
|
||||
var createClass = new createItem();
|
||||
var editItemClass = new itemEdit();
|
||||
|
@ -24,7 +24,7 @@ var createClassFile = require("../common/CreateItem")
|
||||
var itemEdit = require("../common/EditItem");
|
||||
var rightMenu = require("../common/RightMenu.js");
|
||||
|
||||
describe('Test New Window', function() {
|
||||
describe('New Window', function() {
|
||||
var fullScreenClass = new fullScreenFile();
|
||||
var createClass = new createClassFile();
|
||||
var editItemClass = new itemEdit();
|
||||
|
@ -21,28 +21,64 @@
|
||||
*****************************************************************************/
|
||||
var right_click = require("../common/RightMenu.js");
|
||||
var Create = require("../common/CreateItem")
|
||||
describe('Right Click Interations', function() {
|
||||
var itemEdit = require("../common/EditItem");
|
||||
|
||||
describe('The Right Menu', function() {
|
||||
var clickClass = new right_click();
|
||||
var createClass = new Create();
|
||||
var editItemClass = new itemEdit();
|
||||
var ITEM_NAME = "Folder";
|
||||
var ITEM_TYPE = "folder";
|
||||
var ITEM_MENU_GLYPH = 'F\nFolder';
|
||||
var ITEM_GRID_SELECT = 'P\nF\nFolder\n0 Items';
|
||||
|
||||
beforeEach(require('../common/Launch'));
|
||||
|
||||
it('should delete the specified object', function(){
|
||||
createClass.createButton().click();
|
||||
var folder = createClass.selectNewItem(ITEM_TYPE);
|
||||
expect(folder.getText()).toEqual([ ITEM_MENU_GLYPH ]);
|
||||
browser.sleep(1000);
|
||||
folder.click()
|
||||
browser.sleep(1000);
|
||||
browser.wait(function () {
|
||||
return element.all(by.model('ngModel[field]')).isDisplayed();
|
||||
it('should Dissapear After Delete', function(){
|
||||
browser.wait(function() {
|
||||
createClass.createButton().click();
|
||||
return true;
|
||||
}).then(function (){
|
||||
var folder = createClass.selectNewItem(ITEM_TYPE);
|
||||
expect(folder.getText()).toEqual([ ITEM_MENU_GLYPH ]);
|
||||
browser.sleep(1000);
|
||||
folder.click()
|
||||
}).then(function() {
|
||||
browser.wait(function () {
|
||||
return element.all(by.model('ngModel[field]')).isDisplayed();
|
||||
})
|
||||
createClass.fillFolderForum(ITEM_NAME, ITEM_TYPE).click();
|
||||
browser.sleep(1000);
|
||||
}).then(function (){
|
||||
var item = editItemClass.SelectItem(ITEM_GRID_SELECT);
|
||||
expect(item.count()).toBe(1);
|
||||
browser.sleep(1000);
|
||||
}).then(function () {
|
||||
var MyItem = ">\nF\nMy Items"
|
||||
element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
return text === MyItem;
|
||||
});
|
||||
}).all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).click();
|
||||
var object = element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
return text === ">\nF\nFolder";
|
||||
});
|
||||
});
|
||||
browser.sleep(1000)
|
||||
browser.actions().mouseMove(object.get(0)).perform();
|
||||
browser.actions().click(protractor.Button.RIGHT).perform();
|
||||
browser.sleep(1000)
|
||||
var menu = element.all(by.css('.ng-binding')).filter(function (ele){
|
||||
return ele.getText().then(function (text) {
|
||||
return text == "Z\nRemove";
|
||||
})
|
||||
})
|
||||
menu.click();
|
||||
browser.sleep(1000)
|
||||
|
||||
expect(menu.isDisplayed()).toBe(false);
|
||||
})
|
||||
createClass.fillFolderForum(ITEM_NAME, ITEM_TYPE).click();
|
||||
clickClass.delete(ITEM_NAME);
|
||||
browser.sleep(1000);
|
||||
});
|
||||
|
||||
});
|
||||
|
15
protractor/bin/clean.js
Executable file
15
protractor/bin/clean.js
Executable file
@ -0,0 +1,15 @@
|
||||
#! /usr/bin/env node
|
||||
var shell = require("shelljs/global");
|
||||
|
||||
var startdir = process.cwd();
|
||||
var command = "npm unlink";
|
||||
|
||||
console.log("Cleaning Directory")
|
||||
exec(command, function(code, output) {
|
||||
if(code != 0){
|
||||
console.log('Exit code:', code);
|
||||
console.log('Program output:', output);
|
||||
}
|
||||
});
|
||||
console.log("rm -rf node_modules")
|
||||
rm('-rf', __dirname + "/../node_modules")
|
90
protractor/bin/ctrl.sh
Executable file
90
protractor/bin/ctrl.sh
Executable file
@ -0,0 +1,90 @@
|
||||
#! /bin/bash
|
||||
ARGUMENT=$1;
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
echo "Expected 1 Aurgument. Received " $# 1>&2;
|
||||
exit 1
|
||||
fi
|
||||
#Start webdrive and http-server
|
||||
if [ $ARGUMENT == start ]; then
|
||||
echo "Creating Log Directory ..."
|
||||
mkdir logs;
|
||||
|
||||
cd ..
|
||||
node app.js -p 1984 -x platform/persistence/elastic -i example/persistence > protractor/logs/nodeApp.log 2>&1 &
|
||||
sleep 3;
|
||||
if grep -iq "Error" protractor/logs/nodeApp.log; then
|
||||
if grep -iq "minimist" protractor/logs/nodeApp.log; then
|
||||
echo " Node Failed Because Minimist is not installed"
|
||||
echo " Installng Minimist ..."
|
||||
npm install minimist express > protractor/logs/minimist.log 2>&1 &
|
||||
wait $!
|
||||
if [ $? != 0 ]; then
|
||||
echo " Error: minimist"
|
||||
echo " Check Log file"
|
||||
echo
|
||||
else
|
||||
echo " Started: Minimist"
|
||||
echo
|
||||
node app.js -p 1984 -x platform/persistence/elastic -i example/persistence > protractor/logs/nodeApp.log 2>&1 &
|
||||
if grep -iq "Error" protractor/logs/nodeApp.log; then
|
||||
echo " Error: node app failed"
|
||||
echo " Check Log file"
|
||||
echo
|
||||
else
|
||||
echo " Started: node app.js"
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo " Error: node app failed"
|
||||
echo " Check Log file"
|
||||
echo
|
||||
fi
|
||||
else
|
||||
echo " Started: node app.js"
|
||||
echo
|
||||
fi
|
||||
echo "Starting webdriver ..."
|
||||
|
||||
cd protractor;
|
||||
webdriver-manager start > logs/webdriver.log 2>&1 &
|
||||
sleep 3;
|
||||
if grep -iq "Exception" logs/webdriver.log; then
|
||||
echo " Error: webdriver-manager"
|
||||
echo " Check Log file"
|
||||
echo
|
||||
else
|
||||
echo " Started: webdriver-manager"
|
||||
fi
|
||||
echo "Starting Elastic Search..."
|
||||
|
||||
elasticsearch > logs/elasticSearch.log 2>&1 &
|
||||
sleep 3;
|
||||
if grep -iq "Exception" logs/elasticSearch.log; then
|
||||
echo " Error: ElasticSearch"
|
||||
echo " Check Log file"
|
||||
echo
|
||||
else
|
||||
echo " Started: ElasticSearch"
|
||||
fi
|
||||
#Runs Protractor tests
|
||||
elif [ $ARGUMENT == run ]; then
|
||||
protractor ./conf.js
|
||||
#Kill Process
|
||||
elif [ $ARGUMENT == stop ]; then
|
||||
echo "Removing logs"
|
||||
rm -rf logs
|
||||
echo "Stopping Node"
|
||||
kill $(ps aux | grep "[n]ode app.js"| awk '{print $2}');
|
||||
|
||||
echo "Stopping webdriver ..."
|
||||
kill $(ps aux | grep "[p]rotractor" | awk '{print $2}');
|
||||
kill $(ps aux | grep "[w]ebdriver-manager" | awk '{print $2}');
|
||||
sleep 1;
|
||||
echo "Stopping Elastic..."
|
||||
kill $(ps aux | grep "[e]lastic" | awk '{print $2}');
|
||||
sleep 1;
|
||||
else
|
||||
echo "Unkown: Command" $1;
|
||||
fi
|
12
protractor/bin/run.js
Executable file
12
protractor/bin/run.js
Executable file
@ -0,0 +1,12 @@
|
||||
#! /usr/bin/env node
|
||||
var shell = require("shelljs/global");
|
||||
var sleep = require('sleep');
|
||||
|
||||
var command = __dirname + "/../node_modules/protractor/bin/protractor " +__dirname + "/../conf.js";
|
||||
console.log("Executing Protractor Test")
|
||||
exec(command, function(code, output) {
|
||||
if(code != 0){
|
||||
console.log('Exit code:', code);
|
||||
console.log('Program output:', output);
|
||||
}
|
||||
});
|
40
protractor/bin/start.js
Executable file
40
protractor/bin/start.js
Executable file
@ -0,0 +1,40 @@
|
||||
#! /usr/bin/env node
|
||||
var shell,sleep;
|
||||
try {
|
||||
shell = require("shelljs/global");
|
||||
sleep = require('sleep');
|
||||
}catch (e){
|
||||
console.log("Dependencies Error");
|
||||
console.log("Run npm install");
|
||||
throw (e);
|
||||
}
|
||||
///Users/jsanderf/git/elastic/wtd/protractor/bin
|
||||
var startdir = process.cwd();
|
||||
var command;
|
||||
mkdir(__dirname + '/../logs');
|
||||
|
||||
command = __dirname + "/../node_modules/protractor/bin/webdriver-manager update";
|
||||
console.log("Installing Webdriver");
|
||||
exec(command,{async:false});
|
||||
sleep.sleep(1);
|
||||
|
||||
console.log();
|
||||
cd(__dirname + '/../../');
|
||||
console.log('Installing Dependencies');
|
||||
exec("npm install minimist express", {async:false});
|
||||
console.log('Starting Node');
|
||||
sleep.sleep(1);
|
||||
exec("node app.js -p 1984 -x example/persistence -x platform/persistence/elastic -i example/localstorage > protractor/logs/nodeApp.log 2>&1 &", {async:false});
|
||||
console.log(' Started Node');
|
||||
|
||||
console.log();
|
||||
console.log('Starting Webdriver');
|
||||
sleep.sleep(1);
|
||||
exec("protractor/node_modules/protractor/bin/webdriver-manager start --standalone> protractor/logs/webdriver.log 2>&1 &",{async:false});
|
||||
if(error() == null){
|
||||
console.log(" Webdriver Started");
|
||||
}else{
|
||||
console.log(" Error : ", error());
|
||||
}
|
||||
sleep.sleep(1);
|
||||
cd(startdir);
|
44
protractor/bin/stop.js
Executable file
44
protractor/bin/stop.js
Executable file
@ -0,0 +1,44 @@
|
||||
#! /usr/bin/env node
|
||||
|
||||
var shell = require("shelljs/global");
|
||||
var ps = require('psnode');
|
||||
var S = require('string');
|
||||
var sleep = require('sleep');
|
||||
|
||||
// A simple pid lookup
|
||||
ps.list(function(err, results) {
|
||||
|
||||
results.forEach(function( process ){
|
||||
//Killing Node
|
||||
if(S(process.command).contains("node app.js")) {
|
||||
console.log();
|
||||
console.log( 'Killing Node: %s', process.command);
|
||||
ps.kill(process.pid, function(err, stdout) {
|
||||
if (err) {
|
||||
throw new Error(err);
|
||||
}
|
||||
console.log(stdout);
|
||||
});
|
||||
}else if(S(process.command).contains("webdriver")) {
|
||||
console.log();
|
||||
console.log( 'Killing WebDriver: %s', process.command);
|
||||
ps.kill(process.pid, function(err, stdout) {
|
||||
if (err){
|
||||
throw new Error(err);
|
||||
}
|
||||
console.log(stdout);
|
||||
});
|
||||
}else if(S(process.command).contains("protractor")) {
|
||||
console.log();
|
||||
console.log( 'Killing Chrome Drive: %s', process.command);
|
||||
ps.kill(process.pid, function(err, stdout) {
|
||||
if (err){
|
||||
throw new Error(err);
|
||||
}
|
||||
console.log(stdout);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -24,6 +24,6 @@
|
||||
module.exports = function launch() {
|
||||
'use strict';
|
||||
browser.ignoreSynchronization = true;
|
||||
browser.get('http://localhost:1984/');
|
||||
browser.sleep(2000); // 20 seconds
|
||||
browser.get('http://localhost:1984');
|
||||
browser.sleep(2000); // 2 seconds
|
||||
};
|
||||
|
@ -24,18 +24,25 @@ var RightMenu = (function () {
|
||||
|
||||
function RightMenu() {
|
||||
}
|
||||
function carrotMyItem(){
|
||||
var MyItem = ">\nF\nMy Items"
|
||||
element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
return text === MyItem;
|
||||
});
|
||||
}).all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).click();
|
||||
}
|
||||
//RightMenu Click on Object
|
||||
RightMenu.prototype.delete = function (name, flag) {
|
||||
if(typeof flag === 'undefined'){
|
||||
flag = true;
|
||||
}
|
||||
if(flag === true){
|
||||
var carrot = element.all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).get(0).click();
|
||||
carrotMyItem();
|
||||
}
|
||||
browser.sleep(1000)
|
||||
var object = element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
//expect(text).toEqual("3");
|
||||
return text === name;
|
||||
});
|
||||
});
|
||||
@ -43,7 +50,7 @@ var RightMenu = (function () {
|
||||
browser.actions().mouseMove(object.get(0)).perform();
|
||||
browser.actions().click(protractor.Button.RIGHT).perform();
|
||||
browser.sleep(1000)
|
||||
var remove = element.all(by.css('.ng-binding')).filter(function (ele){
|
||||
element.all(by.css('.ng-binding')).filter(function (ele){
|
||||
return ele.getText().then(function (text) {
|
||||
return text == "Z\nRemove";
|
||||
})
|
||||
@ -58,11 +65,10 @@ var RightMenu = (function () {
|
||||
});
|
||||
};
|
||||
RightMenu.prototype.reset = function (name) {
|
||||
var carrot = element.all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).click();
|
||||
carrotMyItem();
|
||||
browser.sleep(1000)
|
||||
var object = element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
//expect(text).toEqual("3");
|
||||
return text === name;
|
||||
});
|
||||
}).click();
|
||||
@ -75,19 +81,19 @@ var RightMenu = (function () {
|
||||
return text == "r\nRestart at 0";
|
||||
})
|
||||
}).click();
|
||||
browser.sleep(1000)
|
||||
};
|
||||
//click '<', true==yes false==no
|
||||
RightMenu.prototype.select = function(name, flag){
|
||||
if(typeof flag == "undefined"){
|
||||
flag = true;
|
||||
}
|
||||
//click '<', true==yes false==no
|
||||
if(flag == true){
|
||||
var carrot = element.all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).click();
|
||||
carrotMyItem();
|
||||
}
|
||||
browser.sleep(1000)
|
||||
return element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
// expect(text).toEqual("3");
|
||||
return text === name;
|
||||
});
|
||||
});
|
||||
@ -96,7 +102,6 @@ var RightMenu = (function () {
|
||||
RightMenu.prototype.dragDrop = function(name){
|
||||
var object = element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
//expect(text).toEqual("3");
|
||||
return text === name;
|
||||
});
|
||||
});
|
||||
|
@ -24,34 +24,34 @@
|
||||
// conf.js
|
||||
exports.config = {
|
||||
allScriptsTimeout: 500000,
|
||||
defaultTimeoutInterval: 60000,
|
||||
jasmineNodeOpts: {defaultTimeoutInterval: 360000},
|
||||
seleniumAddress: 'http://localhost:4444/wd/hub',
|
||||
//specs: ['StressTest.js'],
|
||||
//specs: ['StressTestCarrot.js'],
|
||||
specs: [
|
||||
//'create/CreateActivity.js',
|
||||
//'delete/DeleteActivity.js',
|
||||
//'create/CreateActivityMode.js',
|
||||
//'delete/DeleteActivityMode.js',
|
||||
//'create/CreateActivityMode.js',
|
||||
//'create/CreateClock.js',
|
||||
//'delete/DeleteClock.js',
|
||||
// 'create/CreateActivity.js',
|
||||
// 'delete/DeleteActivity.js',
|
||||
// 'create/CreateActivityMode.js',
|
||||
// 'delete/DeleteActivityMode.js',
|
||||
// 'create/CreateClock.js',
|
||||
// 'delete/DeleteClock.js',
|
||||
'create/CreateDisplay.js',
|
||||
//'delete/DeleteDisplay.js',
|
||||
'delete/DeleteDisplay.js',
|
||||
'create/CreateFolder.js',
|
||||
//'delete/DeleteFolder.js',
|
||||
'create/CreateTelemetry.js',
|
||||
//'delete/DeleteTelemetry.js',
|
||||
//'create/CreateTimeline.js',
|
||||
//'delete/DeleteTimeline.js',
|
||||
//'create/CreateTimer.js',
|
||||
//'delete/DeleteTimer.js',
|
||||
'delete/DeleteFolder.js',
|
||||
// 'create/CreateTelemetry.js',
|
||||
// 'delete/DeleteTelemetry.js',
|
||||
// 'create/CreateTimeline.js',
|
||||
// 'delete/DeleteTimeline.js',
|
||||
// 'create/CreateTimer.js',
|
||||
// 'delete/DeleteTimer.js',
|
||||
'create/CreateWebPage.js',
|
||||
//'delete/DeleteWebPage.js',
|
||||
'delete/DeleteWebPage.js',
|
||||
'UI/Fullscreen.js',
|
||||
'create/CreateButton.js',
|
||||
//"UI/DragDrop.js",
|
||||
//"UI/NewWindow.js",
|
||||
'UI/InfoBubble.js'
|
||||
"UI/NewWindow.js"
|
||||
//'UI/InfoBubble.js',
|
||||
//'UI/RightClick.js'
|
||||
],
|
||||
capabilities: {
|
||||
'browserName': 'chrome', // or 'safari'
|
||||
@ -61,7 +61,7 @@ exports.config = {
|
||||
|
||||
// Allow specifying binary location as an environment variable,
|
||||
// for cases where Chrome is not installed in a usual location.
|
||||
if (process.env.PROTRACTOR_CHROME_BINARY) {
|
||||
if (process.env.CHROME_BIN) {
|
||||
exports.config.capabilities.chromeOptions.binary =
|
||||
process.env.PROTRACTOR_CHROME_BINARY;
|
||||
process.env.CHROME_BIN;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@
|
||||
var itemCreate = require("../common/CreateItem");
|
||||
var itemEdit = require("../common/EditItem");
|
||||
|
||||
describe('Create Web Page', function() {
|
||||
describe('Create Activity Mode', function() {
|
||||
var createClass = new itemCreate();
|
||||
var editItemClass = new itemEdit();
|
||||
var ITEM_NAME = "Activity Mode";
|
||||
|
@ -57,7 +57,7 @@ describe('Create Clock', function() {
|
||||
});
|
||||
it('should check clock', function () {
|
||||
|
||||
function getTime() {
|
||||
function getTime(flag) {
|
||||
function addZero(time){
|
||||
if(time < 10){
|
||||
return '0' + time;
|
||||
@ -66,7 +66,6 @@ describe('Create Clock', function() {
|
||||
}
|
||||
var currentdate = new Date();
|
||||
|
||||
|
||||
var month = currentdate.getMonth() + 1;
|
||||
month = addZero(month);
|
||||
|
||||
@ -77,6 +76,9 @@ describe('Create Clock', function() {
|
||||
hour = addZero(hour);
|
||||
|
||||
var second = currentdate.getSeconds();
|
||||
if(flag == true) {
|
||||
second = second + 1;
|
||||
}
|
||||
second = addZero(second);
|
||||
|
||||
var minute = currentdate.getMinutes();
|
||||
@ -85,17 +87,23 @@ describe('Create Clock', function() {
|
||||
return ("UTC " + currentdate.getFullYear() + "/" + (month) + "/" +
|
||||
day + " " + (hour) + ":" + minute + ":" + second + " PM");
|
||||
}
|
||||
|
||||
var current,clock;
|
||||
rightClickClass.select(ITEM_MENU_GLYPH, true).click().then(function () {
|
||||
browser.sleep(1000);
|
||||
current = browser.executeScript(getTime);
|
||||
}).then(function () {
|
||||
clock = element(by.css('.l-time-display.l-digital.l-clock.s-clock.ng-scope'));
|
||||
clock.getText().then(function (time) {
|
||||
expect(current).toEqual(time);
|
||||
})
|
||||
this.addMatchers({
|
||||
toBeIn: function(expected){
|
||||
var posibilities = Array.isArray(this.actual) ? this.actual : [this.actual];
|
||||
return posibilities.indexOf(expected) > -1;
|
||||
}
|
||||
})
|
||||
|
||||
rightClickClass.select(ITEM_MENU_GLYPH, true).click().then(function () {
|
||||
browser.sleep(1000);
|
||||
browser.executeScript(getTime, false).then(function(current){
|
||||
browser.executeScript(getTime, true).then(function(current1) {
|
||||
var clock = element(by.css('.l-time-display.l-digital.l-clock.s-clock.ng-scope'));
|
||||
clock.getText().then(function (ele) {
|
||||
expect([current,current1]).toBeIn(ele);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
})
|
||||
});
|
||||
});
|
||||
|
@ -63,7 +63,11 @@ describe('Create Timer', function() {
|
||||
browser.sleep(1000)
|
||||
var timer = element(by.css('.value.ng-binding.active'))
|
||||
timer.getText().then(function (time) {
|
||||
expect(time).toEqual("0D 00:00:01")
|
||||
var timerChecker = false;
|
||||
if(time == "0D 00:00:01" || time == "0D 00:00:02"){
|
||||
timerChecker = true;
|
||||
}
|
||||
expect(timerChecker).toEqual(true)
|
||||
})
|
||||
});
|
||||
|
||||
|
20
protractor/package.json
Normal file
20
protractor/package.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "ProtractorLauncher",
|
||||
"version": "1.0.0",
|
||||
"scripts" : {
|
||||
"start" : "bin/start.js",
|
||||
"protractor" : "bin/run.js",
|
||||
"stop" : "bin/stop.js",
|
||||
"all" : "bin/start.js; bin/run.js; bin/stop.js;",
|
||||
"clean" : "bin/clean.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"protractor": "^2.1.0",
|
||||
"psnode": "0.0.1",
|
||||
"shelljs": "^0.5.2",
|
||||
"sleep": "^3.0.0",
|
||||
"string": "^3.3.1"
|
||||
},
|
||||
"description": "E2e Protractor Tests.",
|
||||
"license": "ISC"
|
||||
}
|
@ -19,10 +19,9 @@
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
//TODO Add filter for duplications/
|
||||
var itemCreate = require("./common/CreateItem");
|
||||
var itemEdit = require("./common/EditItem");
|
||||
var right_click = require("./common/RightMenu.js");
|
||||
var itemCreate = require("../common/CreateItem");
|
||||
var itemEdit = require("../common/EditItem");
|
||||
var right_click = require("../common/RightMenu.js");
|
||||
|
||||
describe('Create Folder', function() {
|
||||
var clickClass = new right_click();
|
||||
@ -41,31 +40,35 @@ describe('Create Folder', function() {
|
||||
});
|
||||
it('should Create new Folder', function(){
|
||||
browser.sleep(5000);
|
||||
for(var i=0; i < 50; i++){
|
||||
for(var i=0; i < 25; i++){
|
||||
browser.wait(function() {
|
||||
createClass.createButton().click();
|
||||
return true;
|
||||
}).then(function (){
|
||||
var folder = createClass.selectNewItem(ITEM_TYPE);
|
||||
expect(folder.getText()).toEqual([ ITEM_MENU_GLYPH ]);
|
||||
browser.sleep(1000);
|
||||
browser.sleep(500);
|
||||
folder.click()
|
||||
}).then(function() {
|
||||
browser.wait(function () {
|
||||
return element.all(by.model('ngModel[field]')).isDisplayed();
|
||||
})
|
||||
createClass.fillFolderForum(ITEM_NAME, ITEM_TYPE).click();
|
||||
browser.sleep(1000);
|
||||
browser.sleep(500);
|
||||
}).then(function (){
|
||||
browser.sleep(1000);
|
||||
// if(i === 1){
|
||||
clickClass.delete(ITEM_SIDE_SELECT, true);
|
||||
element.all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).click();
|
||||
// }else{
|
||||
browser.sleep(1000);
|
||||
|
||||
browser.sleep(500);
|
||||
clickClass.delete(ITEM_SIDE_SELECT, true);
|
||||
//element.all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).click();
|
||||
|
||||
|
||||
var MyItem = ">\nF\nMy Items"
|
||||
element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
//expect(text).toEqual(MyItem);
|
||||
return text === MyItem;
|
||||
});
|
||||
}).all(by.css('.ui-symbol.view-control.ng-binding.ng-scope')).click();
|
||||
// clickClass.delete(ITEM_SIDE_SELECT, false);
|
||||
// }
|
||||
});
|
||||
}
|
||||
browser.pause();
|
59
protractor/stressTest/StressTestBubble.js
Normal file
59
protractor/stressTest/StressTestBubble.js
Normal file
@ -0,0 +1,59 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT Web includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/StressTestBubble.jsStressTestBubble.js
|
||||
var itemCreate = require("../common/CreateItem");
|
||||
var itemEdit = require("../common/EditItem");
|
||||
var right_click = require("../common/RightMenu.js");
|
||||
|
||||
describe('Create Folder', function() {
|
||||
var clickClass = new right_click();
|
||||
var createClass = new itemCreate();
|
||||
var editItemClass = new itemEdit();
|
||||
var ITEM_NAME = "Folder";
|
||||
var ITEM_TYPE = "folder";
|
||||
var ITEM_MENU_GLYPH = 'F\nFolder';
|
||||
var ITEM_GRID_SELECT = 'P\nF\nFolder\n0 Items';
|
||||
var ITEM_SIDE_SELECT = ">\nF\nFolder"
|
||||
|
||||
beforeEach(function() {
|
||||
browser.ignoreSynchronization = true;
|
||||
browser.get('http://localhost:1984/warp/');
|
||||
browser.sleep(2000); // 20 seconds
|
||||
});
|
||||
it('should Create new Folder', function(){
|
||||
browser.sleep(10000);
|
||||
for(var i=0; i < 1000; i++){
|
||||
var object = element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
return text === ">\nF\nMy Items";
|
||||
});
|
||||
});
|
||||
//browser.sleep(1000)
|
||||
browser.actions().mouseMove(object.get(0)).perform();
|
||||
//browser.actions().click(protractor.Button.RIGHT).perform();
|
||||
|
||||
element.all(by.css('.items-holder.grid.abs.ng-scope')).click();
|
||||
}
|
||||
browser.pause();
|
||||
|
||||
});
|
||||
|
||||
});
|
56
protractor/stressTest/StressTestCreateButton.js
Normal file
56
protractor/stressTest/StressTestCreateButton.js
Normal file
@ -0,0 +1,56 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT Web includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
var itemCreate = require("../common/CreateItem");
|
||||
var itemEdit = require("../common/EditItem");
|
||||
var right_click = require("../common/RightMenu.js");
|
||||
|
||||
describe('Create Folder', function() {
|
||||
var clickClass = new right_click();
|
||||
var createClass = new itemCreate();
|
||||
var editItemClass = new itemEdit();
|
||||
var ITEM_NAME = "Folder";
|
||||
var ITEM_TYPE = "folder";
|
||||
var ITEM_MENU_GLYPH = 'F\nFolder';
|
||||
var ITEM_GRID_SELECT = 'P\nF\nFolder\n0 Items';
|
||||
var ITEM_SIDE_SELECT = ">\nF\nFolder"
|
||||
|
||||
beforeEach(function() {
|
||||
browser.ignoreSynchronization = true;
|
||||
browser.get('http://localhost:1984/warp/');
|
||||
browser.sleep(2000); // 20 seconds
|
||||
});
|
||||
it('should Create new Folder', function(){
|
||||
browser.sleep(10000);
|
||||
for(var i=0; i < 1000; i++){
|
||||
createClass.createButton().click();
|
||||
|
||||
//browser.sleep(1000)
|
||||
//browser.actions().mouseMove(object.get(0)).perform();
|
||||
//browser.actions().click(protractor.Button.RIGHT).perform();
|
||||
|
||||
element.all(by.css('.items-holder.grid.abs.ng-scope')).click();
|
||||
}
|
||||
browser.pause();
|
||||
|
||||
});
|
||||
|
||||
});
|
55
protractor/stressTest/StressTestMenu.js
Normal file
55
protractor/stressTest/StressTestMenu.js
Normal file
@ -0,0 +1,55 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT Web includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
var itemCreate = require("../common/CreateItem");
|
||||
var itemEdit = require("../common/EditItem");
|
||||
var right_click = require("../common/RightMenu.js");
|
||||
|
||||
describe('Create Folder', function() {
|
||||
var clickClass = new right_click();
|
||||
var createClass = new itemCreate();
|
||||
var editItemClass = new itemEdit();
|
||||
var ITEM_NAME = "Folder";
|
||||
var ITEM_TYPE = "folder";
|
||||
var ITEM_MENU_GLYPH = 'F\nFolder';
|
||||
var ITEM_GRID_SELECT = 'P\nF\nFolder\n0 Items';
|
||||
var ITEM_SIDE_SELECT = ">\nF\nFolder"
|
||||
|
||||
beforeEach(function() {
|
||||
browser.ignoreSynchronization = true;
|
||||
browser.get('http://localhost:1984/warp/');
|
||||
browser.sleep(2000); // 20 seconds
|
||||
});
|
||||
it('should Create new Folder', function(){
|
||||
browser.sleep(10000);
|
||||
for(var i=0; i < 1000; i++){
|
||||
browser.wait(function() {
|
||||
createClass.createButton().click();
|
||||
return true;
|
||||
}).then(function (){
|
||||
element.all(by.css('.items-holder.grid.abs.ng-scope')).click();
|
||||
})
|
||||
}
|
||||
browser.pause();
|
||||
|
||||
});
|
||||
|
||||
});
|
61
protractor/stressTest/StressTestNewPage.js
Normal file
61
protractor/stressTest/StressTestNewPage.js
Normal file
@ -0,0 +1,61 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT Web includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
var itemCreate = require("../common/CreateItem");
|
||||
var itemEdit = require("../common/EditItem");
|
||||
var right_click = require("../common/RightMenu.js");
|
||||
var fullScreenFile = require("../common/FullScreen");
|
||||
|
||||
describe('Create Folder', function() {
|
||||
var clickClass = new right_click();
|
||||
var createClass = new itemCreate();
|
||||
var editItemClass = new itemEdit();
|
||||
var fullScreenClass = new fullScreenFile();
|
||||
|
||||
var ITEM_NAME = "Folder";
|
||||
var ITEM_TYPE = "folder";
|
||||
var ITEM_MENU_GLYPH = 'F\nFolder';
|
||||
var ITEM_GRID_SELECT = 'P\nF\nFolder\n0 Items';
|
||||
var ITEM_SIDE_SELECT = ">\nF\nFolder"
|
||||
|
||||
beforeEach(function() {
|
||||
browser.ignoreSynchronization = true;
|
||||
browser.get('http://localhost:1984/warp/');
|
||||
browser.sleep(2000); // 20 seconds
|
||||
});
|
||||
it('should Create new Folder', function(){
|
||||
browser.sleep(15000);
|
||||
for(var i=0; i < 1000; i++){
|
||||
fullScreenClass.newWidnow().click();
|
||||
|
||||
browser.getAllWindowHandles().then(function (handles) {
|
||||
//browser.driver.switchTo().window(handles[1]);
|
||||
browser.sleep(1000);
|
||||
browser.driver.close();
|
||||
browser.sleep(1000);
|
||||
// browser.driver.switchTo().window(handles[0]);
|
||||
});
|
||||
}
|
||||
browser.pause();
|
||||
|
||||
});
|
||||
|
||||
});
|
59
protractor/stressTest/StressTestRightClick.js
Normal file
59
protractor/stressTest/StressTestRightClick.js
Normal file
@ -0,0 +1,59 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT Web includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
var itemCreate = require("../common/CreateItem");
|
||||
var itemEdit = require("../common/EditItem");
|
||||
var right_click = require("../common/RightMenu.js");
|
||||
|
||||
describe('Create Folder', function() {
|
||||
var clickClass = new right_click();
|
||||
var createClass = new itemCreate();
|
||||
var editItemClass = new itemEdit();
|
||||
var ITEM_NAME = "Folder";
|
||||
var ITEM_TYPE = "folder";
|
||||
var ITEM_MENU_GLYPH = 'F\nFolder';
|
||||
var ITEM_GRID_SELECT = 'P\nF\nFolder\n0 Items';
|
||||
var ITEM_SIDE_SELECT = ">\nF\nFolder"
|
||||
|
||||
beforeEach(function() {
|
||||
browser.ignoreSynchronization = true;
|
||||
browser.get('http://localhost:1984/warp/');
|
||||
browser.sleep(2000); // 20 seconds
|
||||
});
|
||||
it('should Create new Folder', function(){
|
||||
browser.sleep(8000);
|
||||
for(var i=0; i < 1000; i++){
|
||||
var object = element.all(by.repeater('child in composition')).filter(function (ele){
|
||||
return ele.getText().then(function(text) {
|
||||
return text === ">\nF\nMy Items";
|
||||
});
|
||||
});
|
||||
//browser.sleep(1000)
|
||||
browser.actions().mouseMove(object.get(0)).perform();
|
||||
browser.actions().click(protractor.Button.RIGHT).perform();
|
||||
|
||||
element.all(by.css('.items-holder.grid.abs.ng-scope')).click();
|
||||
}
|
||||
browser.pause();
|
||||
|
||||
});
|
||||
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user