juliemr / protractor-demo

Demo test application and protractor tests
MIT License
166 stars 139 forks source link

Protractor headless test fails using phantomjs 1.9.7 in Angularjs #9

Closed michaelnico closed 9 years ago

michaelnico commented 10 years ago

Protractor tests failed when I run it in headless tests using phantomjs 1.9.7.

Here are the error messages: Selenium standalone server started at http://192.168.1.156:4444/wd/hub Scenario 1: A user can view the login page. should redirect to the login page - pass Scenario 2: A user logins using valid username and password. should accepts valid username and password - fail

Failures: 1) Scenario 2: A user logins using valid username and password. should accepts valid username and password Message: Expected 'http://localhost:8080/app/#/login?ref=%2Fdashboard' to contain '/dashboard'. Stacktrace: Error: Failed expectation at null. (/home/user/workspace/whitelabel/web-app/app/js/test/LoginSpec.js:20:37)

2) Scenario 2: A user logins using valid username and password. should accepts valid username and password Message: Error: No element found using locator: By.linkText("Settings") Stacktrace: Error: No element found using locator: By.linkText("Settings") ==== async task ==== Asynchronous test function: it() Error at null. (/home/user/workspace/whitelabel/web-app/app/js/test/LoginSpec.js:15:3) at Object. (/home/user/workspace/whitelabel/web-app/app/js/test/LoginSpec.js:14:1)

3) Scenario 2: A user logins using valid username and password. should accepts valid username and password Message: UnknownError: {"errorMessage":"Element is not currently visible and may not be manipulated","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"27","Content-Type":"application/json; charset=utf-8","Host":"localhost:29766","User-Agent":"Apache-HttpClient/4.3.2 (java 1.5)"},"httpVersion":"1.1","method":"POST","post":"{\"id\":\":wdc:1410413286331\"}","url":"/click","urlParsed":{"anchor":"","query":"","file":"click","directory":"/","path":"/click","relative":"/click","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/click","queryKey":{},"chunks":["click"]},"urlOriginal":"/session/66a8b700-3974-11e4-bd36-35d30e8383e9/element/%3Awdc%3A1410413286331/click"}} Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03' System info: host: 'micmic.suarez', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.8.0-38-generic', java.version: '1.7.0_55' Driver info: driver.version: unknown

This is my test code: describe('Scenario 1: A user can view the login page.', function() { var loginUrl;

it('should redirect to the login page', function() { browser.get('http://localhost:8080/app/'); loginUrl = browser.getCurrentUrl(); expect(browser.getCurrentUrl()).toEqual(loginUrl); expect(browser.getCurrentUrl()).toContain('/login'); }); }, 100000);

describe('Scenario 2: A user logins using valid username and password.', function() { it('should accepts valid username and password', function() { browser.findElement(protractor.By.id('username')).sendKeys('micmic'); browser.findElement(protractor.By.id('password')).sendKeys('password'); browser.findElement(protractor.By.id('submit')).click(); browser.sleep(1000); expect(browser.getCurrentUrl()).toContain('/dashboard'); browser.findElement(protractor.By.linkText('Settings')).click(); browser.sleep(1000); browser.findElement(protractor.By.linkText('Branding')).click(); browser.sleep(1000); browser.findElement(protractor.By.linkText('sss')).click(); browser.sleep(1000); });

afterEach(function() { browser.findElement(by.id('logout')).then(function(elem) { elem.click(); }); browser.sleep(10000); }); }, 10000);

This is my code in conf.js: // conf.js exports.config = { // seleniumAddress: 'http://localhost:4444/wd/hub', seleniumServerJar: 'selenium-server-standalone-2.40.0.jar', seleniumPort: 4444, // seleniumArgs:'' specs: ['LoginSpec.js'],

capabilities: { browserName: 'phantomjs', version: '', platform: 'ANY' },

// ----- More information for your tests ---- // baseUrl: 'http://monopond.org:8080', framework: 'jasmine', onPrepare: function() { // At this point, global 'protractor' object will be set up, and // jasmine will be available. }, allScriptsTimeout: 99999, jasmineNodeOpts: { isVerbose: true, showColors: true, includeStackTrace: true, defaultTimeoutInterval: 30000 } };

juliemr commented 9 years ago

I don't think this issue belongs in this repo.

michaelnico commented 9 years ago

Hi Ma'am Julie,

Good day!

Yes Ma'am Julie, the issue belongs to phantomjs. I used xvfb(X virtual framebuffer) to make the headless tests in protractor works. Thanks Ma'am. :) Cheers, Michael