Refactor protractor tests.

pull/2633/head
mhirtie 10 years ago
parent 747e1019f4
commit e44eab76ed
  1. 2
      frontend/tests/integration/protractor.conf.js
  2. 7
      frontend/tests/integration/spec_helper.js
  3. 80
      frontend/tests/integration/specs/work-packages/details-pane/details-pane-editable-spec.js
  4. 11
      frontend/tests/integration/specs/work-packages/details-pane/details-pane-helper.js
  5. 72
      frontend/tests/integration/specs/work-packages/details-pane/details-pane-spec.js
  6. 9
      frontend/tests/integration/specs/work-packages/work-packages-spec.js

@ -32,7 +32,7 @@ exports.config = {
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
'browserName': 'firefox'
},
directConnect: true,

@ -0,0 +1,7 @@
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
module.exports = {
expect: chai.expect
};

@ -26,42 +26,18 @@
// See doc/COPYRIGHT.rdoc for more details.
//++
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
var WorkPackageDetailsPane = require('../../pages/work-package-details-pane.js');
var expect = require('../../../spec_helper.js').expect,
detailsPaneHelper = require('./work-package-details-pane-helper.js');
/*jshint expr: true*/
describe('OpenProject', function() {
function loadPane(workPackageId) {
var page = new WorkPackageDetailsPane(workPackageId, 'overview');
page.get();
browser.waitForAngular();
}
describe('pane itself', function() {
beforeEach(function() {
loadPane(819);
});
it('should be visible', function() {
expect($('.work-packages--details').isPresent()).to.eventually.be.true;
});
});
describe('OpenProject', function(){
describe('editable', function() {
function behaveLikeEmbeddedDropdown(name, correctValue) {
context('behaviour', function() {
var editor = $('[ined-attribute=\'' + name + '\'] .inplace-editor');
beforeEach(function() {
loadPane(819);
detailsPaneHelper.loadPane(819, 'overview');
});
describe('read state', function() {
@ -105,7 +81,7 @@ describe('OpenProject', function() {
context('work package with updateImmediately link', function() {
beforeEach(function() {
loadPane(819);
detailsPaneHelper.loadPane(819, 'overview');
});
it('should render an editable subject', function() {
@ -115,7 +91,7 @@ describe('OpenProject', function() {
context('work package without updateImmediately link', function() {
beforeEach(function() {
loadPane(820);
detailsPaneHelper.loadPane(820, 'overview');
});
it('should not render an editable subject', function() {
@ -125,7 +101,7 @@ describe('OpenProject', function() {
context('work package with a wrong version', function() {
beforeEach(function() {
loadPane(821);
detailsPaneHelper.loadPane(821, 'overview');
subjectEditor.$('.ined-read-value').click();
subjectEditor.$('.ined-edit-save a').click();
});
@ -144,7 +120,7 @@ describe('OpenProject', function() {
var descriptionEditor = $('.inplace-editor.attribute-description');
beforeEach(function() {
loadPane(819);
detailsPaneHelper.loadPane(819, 'overview');
});
describe('read state', function() {
@ -166,6 +142,7 @@ describe('OpenProject', function() {
expect(descriptionEditor.$('textarea').isPresent()).to.eventually.be.false;
});
});
describe('preview', function() {
var previewButton = descriptionEditor.$('.btn-preview');
@ -201,7 +178,7 @@ describe('OpenProject', function() {
context('when work package version link is present', function() {
beforeEach(function() {
loadPane(819);
detailsPaneHelper.loadPane(819, 'overview');
});
it('should render a link to the version', function() {
@ -221,7 +198,7 @@ describe('OpenProject', function() {
context('when work package link is missing', function() {
beforeEach(function() {
loadPane(822);
detailsPaneHelper.loadPane(822, 'overview');
});
it('should not render an anchor', function() {
@ -235,11 +212,10 @@ describe('OpenProject', function() {
});
context('user field', function() {
var assigneeEditor = $('[ined-attribute=\'assignee\'] .inplace-editor'),
responsibleEditor = $('[ined-attribute=\'responsible\'] .inplace-editor')
;
responsibleEditor = $('[ined-attribute=\'responsible\'] .inplace-editor');
beforeEach(function() {
loadPane(822);
detailsPaneHelper.loadPane(822, 'overview');
});
context('read state', function() {
@ -291,32 +267,4 @@ describe('OpenProject', function() {
});
});
});
describe('activities', function() {
describe('overview tab', function() {
before(function() {
loadPane(819);
});
it('should render the last 3 activites', function() {
expect(
$('ul li:nth-child(1) div.comments-number').getText()
).to.eventually.equal('#59');
expect(
$('ul li:nth-child(2) div.comments-number').getText()
).to.eventually.equal('#58');
expect(
$('ul li:nth-child(3) div.comments-number').getText()
).to.eventually.equal('#57');
});
it('should contain the activities details', function() {
expect(
$('ul.work-package-details-activities-messages li:nth-child(1) .message').getText()
).to.eventually.equal('Status changed from tested to rejected');
});
});
});
});
});

@ -0,0 +1,11 @@
var WorkPackageDetailsPane = require('../../../pages/work-package-details-pane.js');
function loadPane(workPackageId, paneName) {
var page = new WorkPackageDetailsPane(workPackageId, paneName);
page.get();
browser.waitForAngular();
};
module.exports = {
loadPane: loadPane
};

@ -0,0 +1,72 @@
//-- copyright
// OpenProject is a project management system.
// Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 3.
//
// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
// Copyright (C) 2006-2013 Jean-Philippe Lang
// Copyright (C) 2010-2013 the ChiliProject Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See doc/COPYRIGHT.rdoc for more details.
//++
var expect = require('../../../spec_helper.js').expect,
detailsPaneHelper = require('./work-package-details-pane-helper.js');
/*jshint expr: true*/
describe('OpenProject', function() {
describe('pane itself', function() {
beforeEach(function() {
detailsPaneHelper.loadPane(819, 'overview');
});
it('should be visible', function() {
expect($('.work-packages--details').isPresent()).to.eventually.be.true;
});
});
describe('activities', function() {
describe('overview tab', function() {
before(function() {
detailsPaneHelper.loadPane(819, 'overview');
});
it('should render the last 3 activites', function() {
expect(
$('ul li:nth-child(1) div.comments-number').getText()
).to.eventually.equal('#59');
expect(
$('ul li:nth-child(2) div.comments-number').getText()
).to.eventually.equal('#58');
expect(
$('ul li:nth-child(3) div.comments-number').getText()
).to.eventually.equal('#57');
});
it('should contain the activities details', function() {
expect(
$('ul.work-package-details-activities-messages li:nth-child(1) .message').getText()
).to.eventually.equal('Status changed from tested to rejected');
});
});
});
});

@ -26,13 +26,8 @@
// See doc/COPYRIGHT.rdoc for more details.
//++
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
var WorkPackagesPage = require('../../pages/work-packages-page.js');
var expect = require('../../spec_helper.js').expect,
WorkPackagesPage = require('../../pages/work-packages-page.js');
describe('OpenProject', function() {
var page = new WorkPackagesPage();

Loading…
Cancel
Save