Drew13
Drew13

Reputation: 1371

Errors when e2e testing angular2 app with protractor

I'm trying to run some simple tests on my Angular2 app using protractor. I run ng serve in one command prompt and ng e2e in another. I get several errors/comments related to a session exception. Here is a portion of it:

ERROR:child_process_launcher.cc(536)] Failed to launch child process
...
I/direct - Using ChromeDriver directly...
I/launcher - Running 1 instances of WebDriver
E/launcher - session not created exception from tab crashed
(Session info: chrome=55.0.2883.87)
(Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa
),platform=Windows NT 6.1.7601 SP1 x86_64)
  at WebDriverError (C:\development\SolarUI11\node_modules\protractor\node_mod
es\selenium-webdriver\lib\error.js:27:5)
  at SessionNotCreatedError (C:\development\SolarUI11\node_modules\protractor\
de_modules\selenium-webdriver\lib\error.js:308:5)
  at Object.checkLegacyResponse (C:\development\SolarUI11\node_modules\protrac
tor\node_modules\selenium-webdriver\lib\error.js:639:15)

I'm very new to Angular2 and e2e testing, so I'm a complete loss for what I'm looking at here and what I should be expecting.

app.po.ts:

import { browser, element, by } from 'protractor';

export class SolarUi4Page {
  navigateTo() {
    return browser.get('http://localhost:4200/');
  }

  getTitle() {
    return element(by.css('h1')).getText();
  }

  getAddButton() {
    return element(by.css('.icon-plus'));
  }

  getAddButtonDp() {
    return element(by.binding('dPoint.tDataPoint'));
  }

  getAddButtonIccp() {
    return element(by.binding('dPoint.tICCP'));
  }
  getAddButtonStartD() {
    return element(by.binding('dPoint.tStartDate'));
  }

  getAddButtonEndD() {
    return element(by.binding('dPoint.tEndDate'));
  }

  getAddButtonSubmit() {
    return element(by.id('addSubmit'));
  }

  getStartDate() {
    return element(by.id('calStartTest'));
  }

  getEndDate() {
    return element(by.id('calEndTest'));
  }

  getSearchButton() {
    return element(by.css('.icon-search'));
  }

  getTable() {
    return element(by.id('myTable'));
  }
}

app.e2e-spec.ts:

import { SolarUi4Page } from './app.po';
import { by } from 'protractor';

describe('solar-ui4 main page', function() {
  let page: SolarUi4Page;

  beforeEach(() => {
    page = new SolarUi4Page();
  });

  it('should display title Solar Project', () => {
    page.navigateTo();
    expect(page.getTitle()).toEqual('Solar Project');
  });

  it('should add new value to array/table and display it', () => {
    page.navigateTo();
    let addButton = page.getAddButton();
    addButton.click();
    let addDp = page.getAddButtonDp();
    let addIccp = page.getAddButtonIccp();
    let addSd = page.getAddButtonStartD();
    let addEd = page.getAddButtonEndD();
    addDp.sendKeys('newDp');
    addIccp.sendKeys('newIccp');
    addSd.sendKeys('11/12/2016');
    addEd.sendKeys('11/20/2016');
    let addSubmit = page.getAddButtonSubmit();
    addSubmit.click();
    let startFormVal = page.getStartDate();
    let endFormVal = page.getEndDate();
    startFormVal.sendKeys('11/02/2016');
    endFormVal.sendKeys('12/20/2016');
    let searchButton = page.getSearchButton();
    searchButton.click();
    let table = page.getTable();
    let lastRow = table.all(by.tagName('tr')).last();
    expect(lastRow.get(0).getText()).toEqual('newDp');
    expect(lastRow.get(1).getText()).toEqual('newIccp');
    expect(lastRow.get(2).getText()).toEqual('11/02/2016');
    expect(lastRow.get(3).getText()).toEqual('12/20/2016');
  })

protractor.conf.js:

// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  useAllAngular2AppRoots: true,
  beforeLaunch: function() {
    require('ts-node').register({
      project: 'e2e'
    });
  },
  onPrepare: function() {
    jasmine.getEnv().addReporter(new SpecReporter());
  }
};

If I need to show more errors/add more code let me know.

Upvotes: 0

Views: 568

Answers (1)

Drew13
Drew13

Reputation: 1371

This doesn't solve the problem with Chrome/chromedriver/webdriver-manager but to at least get the e2e tests to run correctly, change the browser in protractor.conf.js:

'browserName': 'firefox'

Then the e2e tests will at least be run in Firefox.

Upvotes: -1

Related Questions