Add e2e tests for epics

stable
Xavier Julián 2016-08-19 10:29:27 +02:00 committed by David Barragán Merino
parent 1ad2dd70b3
commit e291f98a46
8 changed files with 271 additions and 18 deletions

View File

@ -15,12 +15,12 @@ tg-lightbox-close
ng-if="vm.assigned" ng-if="vm.assigned"
) )
tg-assigned-item(member="member") tg-assigned-item(member="member")
tg-svg.unassign-epic( tg-svg.unassign-epic.e2e-unassign(
svg-icon="icon-close" svg-icon="icon-close"
svg-title-translate="COMMON.ASSIGNED_TO.REMOVE_ASSIGNED" svg-title-translate="COMMON.ASSIGNED_TO.REMOVE_ASSIGNED"
ng-click="vm.onRemoveAssigned()" ng-click="vm.onRemoveAssigned()"
) )
li(ng-repeat="member in vm.nonAssignedMembers | filter: vm.assignToMember.name | limitTo:6") li.e2e-assigned-to-selector(ng-repeat="member in vm.nonAssignedMembers | filter: vm.assignToMember.name | limitTo:6")
tg-assigned-item.assigned-members-option( tg-assigned-item.assigned-members-option(
member="member" member="member"
ng-click="vm.onAssignTo({'member': member})" ng-click="vm.onAssignTo({'member': member})"

View File

@ -1,24 +1,24 @@
img.assigned-to( img.assigned-to.e2e-assigned-to-image(
ng-if="vm.assignedTo && vm.has_permissions" ng-if="vm.assignedTo && vm.has_permissions"
tg-avatar="vm.assignedTo" tg-avatar="vm.assignedTo"
alt="{{vm.assignedTo.get('full_name_display')}}" alt="{{vm.assignedTo.get('full_name_display')}}"
title="{{vm.assignedTo.get('full_name_display')}}" title="{{vm.assignedTo.get('full_name_display')}}"
ng-click="vm.onSelectAssignedTo(vm.assignedTo, vm.project)" ng-click="vm.onSelectAssignedTo(vm.assignedTo, vm.project)"
) )
img.assigned-to( img.assigned-to.e2e-assigned-to-image(
ng-if="vm.assignedTo && !vm.has_permissions" ng-if="vm.assignedTo && !vm.has_permissions"
tg-avatar="vm.assignedTo" tg-avatar="vm.assignedTo"
alt="{{vm.assignedTo.get('full_name_display')}}" alt="{{vm.assignedTo.get('full_name_display')}}"
title="{{vm.assignedTo.get('full_name_display')}}" title="{{vm.assignedTo.get('full_name_display')}}"
) )
img.assigned-to( img.assigned-to.e2e-assigned-to-image(
ng-if="!vm.assignedTo && vm.has_permissions" ng-if="!vm.assignedTo && vm.has_permissions"
src="/#{v}/images/unnamed.png" src="/#{v}/images/unnamed.png"
alt="{{EPICS.DASHBOARD.UNASSIGNED | translate}}" alt="{{'EPICS.DASHBOARD.UNASSIGNED' | translate}}"
ng-click="vm.onSelectAssignedTo(vm.assignedTo, vm.project)" ng-click="vm.onSelectAssignedTo(vm.assignedTo, vm.project)"
) )
img.assigned-to( img.assigned-to.e2e-assigned-to-image(
ng-if="!vm.assignedTo && !vm.has_permissions" ng-if="!vm.assignedTo && !vm.has_permissions"
src="/#{v}/images/unnamed.png" src="/#{v}/images/unnamed.png"
alt="{{EPICS.DASHBOARD.UNASSIGNED | translate}}" alt="{{'EPICS.DASHBOARD.UNASSIGNED' | translate}}"
) )

View File

@ -1,4 +1,4 @@
.epic-row( .epic-row.e2e-epic-row(
ng-class="{'is-blocked': vm.epic.get('is_blocked'), 'is-closed': vm.epic.get('is_closed'), 'unfold': vm.displayUserStories}" ng-class="{'is-blocked': vm.epic.get('is_blocked'), 'is-closed': vm.epic.get('is_closed'), 'unfold': vm.displayUserStories}"
ng-click="vm.requestUserStories(vm.epic)" ng-click="vm.requestUserStories(vm.epic)"
) )
@ -31,7 +31,7 @@
.sprint( .sprint(
ng-if="vm.column.sprint" ng-if="vm.column.sprint"
) )
.assigned .assigned.e2e-assigned-to
tg-assigned-to-component( tg-assigned-to-component(
assigned-to="vm.epic.get('assigned_to_extra_info')" assigned-to="vm.epic.get('assigned_to_extra_info')"
project="vm.project" project="vm.project"
@ -51,13 +51,13 @@
ng-style="{'color': vm.epic.getIn(['status_extra_info', 'color'])}" ng-style="{'color': vm.epic.getIn(['status_extra_info', 'color'])}"
tg-loading="vm.loadingStatus" tg-loading="vm.loadingStatus"
) )
span {{vm.epic.getIn(['status_extra_info', 'name'])}} span.e2e-epic-status {{vm.epic.getIn(['status_extra_info', 'name'])}}
tg-svg( tg-svg(
svg-icon="icon-arrow-down" svg-icon="icon-arrow-down"
) )
ul.epic-statuses(ng-if="vm.displayStatusList") ul.epic-statuses(ng-if="vm.displayStatusList")
li( li.e2e-edit-epic-status(
ng-repeat="status in vm.project.epic_statuses | orderBy:'order'" ng-repeat="status in vm.project.epic_statuses | orderBy:'order'"
ng-click="vm.updateEpicStatus(status.id)" ng-click="vm.updateEpicStatus(status.id)"
) {{status.name}} ) {{status.name}}
@ -70,7 +70,7 @@
.epic-stories-wrapper(ng-if="vm.displayUserStories && vm.epicStories") .epic-stories-wrapper(ng-if="vm.displayUserStories && vm.epicStories")
.epic-story(tg-repeat="story in vm.epicStories track by story.get('id')") .epic-story(tg-repeat="story in vm.epicStories track by story.get('id')")
tg-story-row( tg-story-row.e2e-story(
epic="vm.epic" epic="vm.epic"
story="story" story="story"
project="vm.project" project="vm.project"

View File

@ -11,8 +11,8 @@ mixin epicSwitch(name, model)
span.check-text.check-yes(translate="COMMON.YES") span.check-text.check-yes(translate="COMMON.YES")
span.check-text.check-no(translate="COMMON.NO") span.check-text.check-no(translate="COMMON.NO")
.epics-table .epics-table.e2e-epic-table
.epics-table-header .epics-table-header.e2e-epics-table-header
.vote( .vote(
translate="EPICS.TABLE.VOTES" translate="EPICS.TABLE.VOTES"
ng-if="vm.column.votes" ng-if="vm.column.votes"
@ -42,10 +42,10 @@ mixin epicSwitch(name, model)
ng-if="vm.column.progress" ng-if="vm.column.progress"
) )
.epics-table-options-wrapper(ng-mouseleave="vm.displayOptions = false") .epics-table-options-wrapper(ng-mouseleave="vm.displayOptions = false")
button.epics-table-option-button(ng-click="vm.displayOptions = true") button.epics-table-option-button.e2e-epics-column-button(ng-click="vm.displayOptions = true")
span(translate="EPICS.TABLE.VIEW_OPTIONS") span(translate="EPICS.TABLE.VIEW_OPTIONS")
tg-svg(svg-icon="icon-arrow-down") tg-svg(svg-icon="icon-arrow-down")
form.epics-table-dropdown(ng-show="vm.displayOptions") form.epics-table-dropdown.e2e-epics-column-dropdown(ng-show="vm.displayOptions")
.fieldset .fieldset
label.epics-table-options-vote( label.epics-table-options-vote(
translate="EPICS.TABLE.VOTES" translate="EPICS.TABLE.VOTES"
@ -90,7 +90,7 @@ mixin epicSwitch(name, model)
+epicSwitch('switch-progress', 'vm.column.progress') +epicSwitch('switch-progress', 'vm.column.progress')
.epics-table-body(tg-epic-sortable) .epics-table-body(tg-epic-sortable)
.epics-table-body-row(tg-repeat="epic in vm.epics track by epic.get('id')") .epics-table-body-row(tg-repeat="epic in vm.epics track by epic.get('id')")
tg-epic-row( tg-epic-row.e2e-epic(
epic="epic" epic="epic"
project="vm.project" project="vm.project"
column="vm.column" column="vm.column"

View File

@ -38,6 +38,7 @@ var config = {
issues: "e2e/suites/issues/*.e2e.js", issues: "e2e/suites/issues/*.e2e.js",
tasks: "e2e/suites/tasks/*.e2e.js", tasks: "e2e/suites/tasks/*.e2e.js",
userProfile: "e2e/suites/user-profile/*.e2e.js", userProfile: "e2e/suites/user-profile/*.e2e.js",
epics: "e2e/suites/epics/*.e2e.js",
userStories: "e2e/suites/user-stories/*.e2e.js", userStories: "e2e/suites/user-stories/*.e2e.js",
backlog: "e2e/suites/backlog.e2e.js", backlog: "e2e/suites/backlog.e2e.js",
home: "e2e/suites/home.e2e.js", home: "e2e/suites/home.e2e.js",

176
e2e/helpers/epics-helper.js Normal file
View File

@ -0,0 +1,176 @@
var utils = require('../utils');
var helper = module.exports;
helper.epic = function() {
let el = $$('.e2e-epic');
let obj = {
el: el,
displayUserStoriesinEpic: async function() {
await utils.common.takeScreenshot("epics", "epics-child-closed");
let storiesCount = await el.count();
let epicChildren;
for (var i = 0; i < storiesCount; i++) {
let story = await el.get(i);
story.click();
epicChildren = await story.$$('.e2e-story').count();
if (epicChildren > 0) {
await utils.common.takeScreenshot("epics", "epics-child-open");
break;
}
}
return epicChildren;
},
getAssignedTo: async function() {
return await el.get(0).$('.e2e-assigned-to-image').getAttribute("title");
},
resetAssignedTo: async function() {
el.get(0).$('.e2e-assigned-to-image').click();
$$('.e2e-assigned-to-selector').get(0).click();
},
editAssignedTo: async function() {
el.get(0).$('.e2e-assigned-to-image').click();
$$('.e2e-assigned-to-selector').last().click();
},
removeAssignedTo: async function() {
el.get(0).$('.e2e-assigned-to-image').click();
$$('.e2e-unassign').click();
return el.get(0).$('.e2e-assigned-to-image').getAttribute("alt");
},
resetStatus: function() {
el.get(0).$('.e2e-epic-status').click();
el.get(0).$$('.e2e-edit-epic-status').get(0).click();
},
getStatus: function() {
return el.get(0).$('.e2e-epic-status').getText();
},
editStatus: function() {
el.get(0).$('.e2e-epic-status').click();
el.get(0).$$('.e2e-edit-epic-status').last().click();
},
getColumns: function() {
return $$('.e2e-epics-table-header > div').count();
},
removeColumns: function() {
$('.e2e-epics-column-button').click();
$$('.e2e-epics-column-dropdown .check').first().click();
}
}
return obj;
}
// helper.title = function() {
// let el = $('.e2e-story-header');
//
// let obj = {
// el: el,
//
// getTitle: function() {
// return el.$('.e2e-title-subject').getText();
// },
//
// setTitle: function(title) {
// el.$('.e2e-detail-edit').click();
// el.$('.e2e-title-input').clear().sendKeys(title);
// },
//
// save: async function() {
// el.$('.e2e-title-button').click();
// await browser.waitForAngular();
// }
// };
//
// return obj;
// };
//
// helper.getCreateIssueLightbox = function() {
// let el = $('div[tg-lb-create-issue]');
//
// let obj = {
// el: el,
// waitOpen: function() {
// return utils.lightbox.open(el);
// },
// waitClose: function() {
// return utils.lightbox.close(el);
// },
// subject: function() {
// return el.$$('input').first();
// },
// tags: function() {
// return el.$('.tag-input');
// },
// submit: function() {
// el.$('button[type="submit"]').click();
// }
// };
//
// return obj;
// };
//
// helper.getBulkCreateLightbox = function() {
// let el = $('div[tg-lb-create-bulk-issues]');
//
// let obj = {
// el: el,
// waitOpen: function() {
// return utils.lightbox.open(el);
// },
// textarea: function() {
// return el.$('textarea');
// },
// submit: function() {
// el.$('button[type="submit"]').click();
// },
// waitClose: function() {
// return utils.lightbox.close(el);
// }
// };
//
// return obj;
// };
//
// helper.openNewIssueLb = function() {
// $('.new-issue .button-green').click();
// };
//
// helper.openBulk = function() {
// $('.new-issue .button-bulk').click();
// };
//
// helper.clickColumn = function(index) {
// $$('.row.title > div').get(index).click();
// };
//
// helper.getTable = function() {
// return $('.basic-table');
// };
//
// helper.openAssignTo = function(index) {
// $$('.issue-assignedto').get(index).click();
// };
//
// helper.getAssignTo = function(index) {
// return $$('.assigned-field figcaption').get(index).getText();
// };
//
// helper.clickPagination = function(index) {
// $$('.paginator li').get(index).click();
// };
//
// helper.getIssues = function() {
// return $$('.row.table-main');
// };
//
// helper.parseIssue = async function(elm) {
// let obj = {};
//
// obj.ref = await elm.$$('.subject span').get(0).getText();
// obj.ref = obj.ref.replace('#', '');
// obj.subject = await elm.$$('.subject span').get(1).getText();
//
// return obj;
// };

View File

@ -0,0 +1,67 @@
var utils = require('../../utils');
var epicsHelper = require('../../helpers/epics-helper');
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
describe('Epics Dashboard', function(){
let usUrl = '';
before(async function(){
await utils.nav
.init()
.project('Project Example 0')
.epics()
.go();
usUrl = await browser.getCurrentUrl();
});
it('screenshot', async function() {
await utils.common.takeScreenshot("epics", "dashboard");
});
it('display child stories', async function() {
let epic = epicsHelper.epic();
let childStoriesNum = await epic.displayUserStoriesinEpic();
expect(childStoriesNum).to.be.above(0);
});
it('change epic assigned from dashboard', async function() {
let epic = epicsHelper.epic();
await epic.resetAssignedTo();
let currentAssigned = await epic.getAssignedTo();
await epic.editAssignedTo();
let newAssigned = await epic.getAssignedTo();
expect(currentAssigned).to.be.not.equal(newAssigned);
});
it('remove assigned from dashboard', async function() {
let epic = epicsHelper.epic();
await epic.resetAssignedTo();
let unAssigned = await epic.removeAssignedTo();
console.log(unAssigned);
expect(unAssigned).to.be.equal('Unassigned');
});
it('change status from dashboard', async function() {
let epic = epicsHelper.epic();
await epic.resetStatus();
let currentStatus = await epic.getStatus();
await epic.editStatus();
let newStatus = await epic.getStatus();
expect(currentStatus).to.be.not.equal(newStatus);
});
it('remove columns from dashboard', async function() {
let epic = epicsHelper.epic();
let currentColumns = await epic.getColumns();
await epic.removeColumns();
let newColumns = await epic.getColumns();
expect(currentColumns).to.be.above(newColumns);
});
})

View File

@ -46,6 +46,11 @@ var actions = {
return common.waitLoader(); return common.waitLoader();
}, },
epics: async function() {
await common.link($('#nav-epics a'));
return common.waitLoader();
},
backlog: async function() { backlog: async function() {
await common.link($$('#nav-backlog a').first()); await common.link($$('#nav-backlog a').first());
@ -101,6 +106,10 @@ var nav = {
this.actions.push(actions.issue.bind(null, index)); this.actions.push(actions.issue.bind(null, index));
return this; return this;
}, },
epics: function(index) {
this.actions.push(actions.epics.bind(null, index));
return this;
},
backlog: function(index) { backlog: function(index) {
this.actions.push(actions.backlog.bind(null, index)); this.actions.push(actions.backlog.bind(null, index));
return this; return this;