Reputation: 11
I am using protractor and i am getting an strange issue. I login and execute few tests and logout. Everything works fine here. I need to re-login to execute the same tests using another user id. second time even after user id and password are entered in their respective fields and login is done successfully but process exits without executing remaining test and i get error message. Below is my code and error i get
code Snippet :
ar testData = require('./Test Data/Users.json');
describe('SSUE Login', function() {
it('Verifies user access', function() {
browser.driver.get('https://url');
browser.ignoreSynchronization = true;
element(by.id('userInput')).sendKeys(testData[1].username);
element(by.id('passwordInput')).sendKeys(testData[1].passwordField);
element(by.id('login-button')).click();
browser.driver.sleep(9000);
browser.waitForAngular();
element(by.css('.AtlanticIcon_header_logout')).getText().then(function(text){
console.log('Login Successful '+text+' icon visible in UI');
});
if(element(by.xpath('//div[@class="walkme-custom-balloon-content-wrapper"]')).isPresent().then(function(){
element(by.xpath('//div[@class="walkme-custom-balloon-content-wrapper"]/div[1]')).click();
}));
browser.driver.sleep(2000);
}
}, 90000);
});
Below is my config file Notice I login and execute 6 test. In last of 6 tests 'gridFilter.js' i have a logout action. Next i Login again using another user id through 'login2.js'. User is successfully loged in but the next test after login does not execute and browser repeatedly loads on its own and finally process exits and get results output in json and I am also adding the result in the end
exports.config = {
seleniumAddress : 'http://localhost:4444/wd/hub',
specs : ['login.js', 'userType.js', 'globalFilterOptions.js', 'languageTest.js', 'loadDatagrid.js', 'datagridicons.js', 'gridFilter.js', 'login2.js', 'userType.js', 'globalFilterOptions.js', 'languageTest.js', 'loadDatagrid.js', 'datagridicons.js', 'gridFilter.js', 'login3.js', 'userType.js', 'globalFilterOptions.js', 'languageTest.js', 'loadDatagrid.js', 'datagridicons.js', 'gridFilter.js', 'login4.js', 'userType.js', 'globalFilterOptions.js', 'languageTest.js', 'loadDatagrid.js', 'datagridicons.js', 'gridFilter.js', 'login5.js', 'userType.js', 'globalFilterOptions.js', 'languageTest.js', 'loadDatagrid.js', 'datagridicons.js', 'gridFilter.js', 'login6.js', 'userType.js', 'globalFilterOptions.js', 'languageTest.js', 'loadDatagrid.js', 'datagridicons.js', 'gridFilter.js'],
// Exclude files if needed
exclude: [],
baseUrl: 'http://localhost:8000',
rootElement: 'html',
framework : 'jasmine2',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
,print: function() {}
},
onPrepare: function() {
var SpecReporter = require('jasmine-spec-reporter');
// add jasmine spec reporter
jasmine.getEnv().addReporter(new SpecReporter({displayStacktrace: true}));
},
onPrepare: function() {
var JSONReporter = require('jasmine-json-test-reporter');
jasmine.getEnv().addReporter(new JSONReporter({
file: 'SSUE-Daily-Satus-Report.json',
beautify: true,
indentationLevel: 4 // used if beautify === true
}));
},
// An array of capability objects
multiCapabilities : [
{
browserName : 'chrome'
// Add another set of specs for this browser only
// specs: []
}
]
};
Here is the test results that i am converted to JSON
"suite1": {
"id": "suite1",
"description": "SSUE Login",
"fullName": "SSUE Login",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec0",
"description": "Verifies user access",
"fullName": "SSUE Login Verifies user access",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite2": {
"id": "suite2",
"description": "User Details:",
"fullName": "User Details:",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec1",
"description": "User type and id",
"fullName": "User Details: User type and id",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite3": {
"id": "suite3",
"description": "Global Filter:",
"fullName": "Global Filter:",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec2",
"description": "Displays User entitled customers and inventories",
"fullName": "Global Filter: Displays User entitled customers and inventories",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite4": {
"id": "suite4",
"description": "Langauge Selection : ",
"fullName": "Langauge Selection : ",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec3",
"description": "Test check the language options",
"fullName": "Langauge Selection : Test check the language options",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite5": {
"id": "suite5",
"description": "Datagrid Load Test :",
"fullName": "Datagrid Load Test :",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec4",
"description": "Datagrid Clickable in LNP",
"fullName": "Datagrid Load Test : Datagrid Clickable in LNP",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite6": {
"id": "suite6",
"description": "Datagrid Icons :",
"fullName": "Datagrid Icons :",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec5",
"description": "Displayed after the grid loads",
"fullName": "Datagrid Icons : Displayed after the grid loads",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite7": {
"id": "suite7",
"description": "Group Filter Test ",
"fullName": "Group Filter Test ",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec6",
"description": "Testing filtering groups",
"fullName": "Group Filter Test Testing filtering groups",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite8": {
"id": "suite8",
"description": "SSUE Login",
"fullName": "SSUE Login",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec7",
"description": "Verifies user access",
"fullName": "SSUE Login Verifies user access",
"failedExpectations": [],
"passedExpectations": [],
"pendingReason": "",
"status": "passed"
}
]
},
"suite9": {
"id": "suite9",
"description": "SSUE Login",
"fullName": "SSUE Login",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec8",
"description": "Verifies user access",
"fullName": "SSUE Login Verifies user access",
"failedExpectations": [
{
"matcherName": "",
"message": "Failed: No element found using locator: By(css selector, *[id=\"userInput\"])",
"stack": "NoSuchElementError: No element found using locator: By(css selector, *[id=\"userInput\"])\n at WebDriverError (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\error.js:27:10)\n at NoSuchElementError (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\error.js:242:10)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:808:27\n at ManagedPromise.invokeCallback_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:1379:14)\n at TaskQueue.execute_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2913:14)\n at TaskQueue.executeNext_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2896:21)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2775:27\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:639:7\n at process._tickCallback (node.js:369:9)Error\n at ElementArrayFinder.applyAction_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:461:27)\n at ElementArrayFinder._this.(anonymous function) [as sendKeys] (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:103:30)\n at ElementFinder.(anonymous function) [as sendKeys] (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:829:22)\n at Object.<anonymous> (C:\\Protector\\SSUE_Daily_Status\\login3.js:11:35)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasminewd2\\index.js:94:23\n at new ManagedPromise (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:1082:7)\n at controlFlowExecute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasminewd2\\index.js:80:18)\n at TaskQueue.execute_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2913:14)\n at TaskQueue.executeNext_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2896:21)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2820:25\nFrom: Task: Run it(\"Verifies user access\") in control flow\n at Object.<anonymous> (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasminewd2\\index.js:79:14)\n at attemptAsync (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1916:24)\n at QueueRunner.run (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1871:9)\n at QueueRunner.execute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1859:10)\n at Spec.Env.queueRunnerFactory (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:697:35)\n at Spec.execute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:359:10)\n at Object.fn (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:2479:37)\n at attemptAsync (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1916:24)\n at QueueRunner.run (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1871:9)\n at QueueRunner.execute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1859:10)\nFrom asynchronous test: \nError\n at Suite.<anonymous> (C:\\Protector\\SSUE_Daily_Status\\login3.js:6:3)\n at addSpecsToSuite (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:833:25)\n at Env.describe (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:802:7)\n at jasmineInterface.describe (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:3375:18)\n at Object.<anonymous> (C:\\Protector\\SSUE_Daily_Status\\login3.js:4:1)\n at Module._compile (module.js:409:26)\n at Object.Module._extensions..js (module.js:416:10)\n at Module.load (module.js:343:32)\n at Function.Module._load (module.js:300:12)",
"passed": false,
"expected": "",
"actual": ""
}
],
"passedExpectations": [],
"pendingReason": "",
"status": "failed"
}
]
},
"suite10": {
"id": "suite10",
"description": "SSUE Login",
"fullName": "SSUE Login",
"failedExpectations": [],
"status": "finished",
"specs": [
{
"id": "spec9",
"description": "Verifies user access",
"fullName": "SSUE Login Verifies user access",
"failedExpectations": [
{
"matcherName": "",
"message": "Failed: No element found using locator: By(css selector, *[id=\"userInput\"])",
"stack": "NoSuchElementError: No element found using locator: By(css selector, *[id=\"userInput\"])\n at WebDriverError (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\error.js:27:10)\n at NoSuchElementError (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\error.js:242:10)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:808:27\n at ManagedPromise.invokeCallback_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:1379:14)\n at TaskQueue.execute_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2913:14)\n at TaskQueue.executeNext_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2896:21)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2775:27\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:639:7\n at process._tickCallback (node.js:369:9)Error\n at ElementArrayFinder.applyAction_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:461:27)\n at ElementArrayFinder._this.(anonymous function) [as sendKeys] (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:103:30)\n at ElementFinder.(anonymous function) [as sendKeys] (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\built\\element.js:829:22)\n at Object.<anonymous> (C:\\Protector\\SSUE_Daily_Status\\login4.js:13:35)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasminewd2\\index.js:94:23\n at new ManagedPromise (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:1082:7)\n at controlFlowExecute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasminewd2\\index.js:80:18)\n at TaskQueue.execute_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2913:14)\n at TaskQueue.executeNext_ (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2896:21)\n at C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\selenium-webdriver\\lib\\promise.js:2820:25\nFrom: Task: Run it(\"Verifies user access\") in control flow\n at Object.<anonymous> (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasminewd2\\index.js:79:14)\n at attemptAsync (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1916:24)\n at QueueRunner.run (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1871:9)\n at QueueRunner.execute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1859:10)\n at Spec.Env.queueRunnerFactory (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:697:35)\n at Spec.execute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:359:10)\n at Object.fn (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:2479:37)\n at attemptAsync (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1916:24)\n at QueueRunner.run (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1871:9)\n at QueueRunner.execute (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:1859:10)\nFrom asynchronous test: \nError\n at Suite.<anonymous> (C:\\Protector\\SSUE_Daily_Status\\login4.js:6:3)\n at addSpecsToSuite (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:833:25)\n at Env.describe (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:802:7)\n at jasmineInterface.describe (C:\\Users\\surbhat\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\jasmine\\node_modules\\jasmine-core\\lib\\jasmine-core\\jasmine.js:3375:18)\n at Object.<anonymous> (C:\\Protector\\SSUE_Daily_Status\\login4.js:4:1)\n at Module._compile (module.js:409:26)\n at Object.Module._extensions..js (module.js:416:10)\n at Module.load (module.js:343:32)\n at Function.Module._load (module.js:300:12)",
"passed": false,
"expected": "",
"actual": ""
}
],
"passedExpectations": [],
"pendingReason": "",
"status": "failed"
}
]
},
Upvotes: 0
Views: 367
Reputation: 5016
You could add a browser.pause
in your code and see what state your browser is in. You might notice that you are still logged in or the user name input doesn't exist (maybe the app's workflow remembers the username). This cannot be concluded from either your code or your stacktrace but trying it out.
This is what I would try:
Something like:
describe('login and logout', () => {
beforeEach(() => {
// navigate to login page
});
it('should be logged in user 0', () => {
element(by.id('userInput')).sendKeys(testData[0].username);
element(by.id('passwordInput')).sendKeys(testData[0].passwordField);
element(by.id('login-button')).click();
// assertions about logging in
// process to log out
// assertions about logging out
});
// this spec should not run but we'll leave it in.
it('should be logged in user 1', () => {
element(by.id('userInput')).sendKeys(testData[1].username);
element(by.id('passwordInput')).sendKeys(testData[1].passwordField);
element(by.id('login-button')).click();
// assertions about logging in
// process to log out
// assertions about logging out
});
afterEach(() => {
// stop here to see what's going on with your browser.
// in the window, navigate to your login page. possibly your
// username input does not exist for various reasons. maybe this
// is a bug.
browser.pause();
});
});
Upvotes: 1