Add e2e tests for epics
parent
1ad2dd70b3
commit
e291f98a46
|
@ -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})"
|
||||||
|
|
|
@ -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}}"
|
||||||
)
|
)
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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;
|
||||||
|
// };
|
|
@ -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);
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue