Add e2e tests for epics
parent
1ad2dd70b3
commit
e291f98a46
|
@ -15,12 +15,12 @@ tg-lightbox-close
|
|||
ng-if="vm.assigned"
|
||||
)
|
||||
tg-assigned-item(member="member")
|
||||
tg-svg.unassign-epic(
|
||||
tg-svg.unassign-epic.e2e-unassign(
|
||||
svg-icon="icon-close"
|
||||
svg-title-translate="COMMON.ASSIGNED_TO.REMOVE_ASSIGNED"
|
||||
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(
|
||||
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"
|
||||
tg-avatar="vm.assignedTo"
|
||||
alt="{{vm.assignedTo.get('full_name_display')}}"
|
||||
title="{{vm.assignedTo.get('full_name_display')}}"
|
||||
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"
|
||||
tg-avatar="vm.assignedTo"
|
||||
alt="{{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"
|
||||
src="/#{v}/images/unnamed.png"
|
||||
alt="{{EPICS.DASHBOARD.UNASSIGNED | translate}}"
|
||||
alt="{{'EPICS.DASHBOARD.UNASSIGNED' | translate}}"
|
||||
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"
|
||||
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-click="vm.requestUserStories(vm.epic)"
|
||||
)
|
||||
|
@ -31,7 +31,7 @@
|
|||
.sprint(
|
||||
ng-if="vm.column.sprint"
|
||||
)
|
||||
.assigned
|
||||
.assigned.e2e-assigned-to
|
||||
tg-assigned-to-component(
|
||||
assigned-to="vm.epic.get('assigned_to_extra_info')"
|
||||
project="vm.project"
|
||||
|
@ -51,13 +51,13 @@
|
|||
ng-style="{'color': vm.epic.getIn(['status_extra_info', 'color'])}"
|
||||
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(
|
||||
svg-icon="icon-arrow-down"
|
||||
)
|
||||
|
||||
ul.epic-statuses(ng-if="vm.displayStatusList")
|
||||
li(
|
||||
li.e2e-edit-epic-status(
|
||||
ng-repeat="status in vm.project.epic_statuses | orderBy:'order'"
|
||||
ng-click="vm.updateEpicStatus(status.id)"
|
||||
) {{status.name}}
|
||||
|
@ -70,7 +70,7 @@
|
|||
.epic-stories-wrapper(ng-if="vm.displayUserStories && vm.epicStories")
|
||||
|
||||
.epic-story(tg-repeat="story in vm.epicStories track by story.get('id')")
|
||||
tg-story-row(
|
||||
tg-story-row.e2e-story(
|
||||
epic="vm.epic"
|
||||
story="story"
|
||||
project="vm.project"
|
||||
|
|
|
@ -11,8 +11,8 @@ mixin epicSwitch(name, model)
|
|||
span.check-text.check-yes(translate="COMMON.YES")
|
||||
span.check-text.check-no(translate="COMMON.NO")
|
||||
|
||||
.epics-table
|
||||
.epics-table-header
|
||||
.epics-table.e2e-epic-table
|
||||
.epics-table-header.e2e-epics-table-header
|
||||
.vote(
|
||||
translate="EPICS.TABLE.VOTES"
|
||||
ng-if="vm.column.votes"
|
||||
|
@ -42,10 +42,10 @@ mixin epicSwitch(name, model)
|
|||
ng-if="vm.column.progress"
|
||||
)
|
||||
.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")
|
||||
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
|
||||
label.epics-table-options-vote(
|
||||
translate="EPICS.TABLE.VOTES"
|
||||
|
@ -90,7 +90,7 @@ mixin epicSwitch(name, model)
|
|||
+epicSwitch('switch-progress', 'vm.column.progress')
|
||||
.epics-table-body(tg-epic-sortable)
|
||||
.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"
|
||||
project="vm.project"
|
||||
column="vm.column"
|
||||
|
|
|
@ -38,6 +38,7 @@ var config = {
|
|||
issues: "e2e/suites/issues/*.e2e.js",
|
||||
tasks: "e2e/suites/tasks/*.e2e.js",
|
||||
userProfile: "e2e/suites/user-profile/*.e2e.js",
|
||||
epics: "e2e/suites/epics/*.e2e.js",
|
||||
userStories: "e2e/suites/user-stories/*.e2e.js",
|
||||
backlog: "e2e/suites/backlog.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();
|
||||
},
|
||||
epics: async function() {
|
||||
await common.link($('#nav-epics a'));
|
||||
|
||||
return common.waitLoader();
|
||||
},
|
||||
backlog: async function() {
|
||||
await common.link($$('#nav-backlog a').first());
|
||||
|
||||
|
@ -101,6 +106,10 @@ var nav = {
|
|||
this.actions.push(actions.issue.bind(null, index));
|
||||
return this;
|
||||
},
|
||||
epics: function(index) {
|
||||
this.actions.push(actions.epics.bind(null, index));
|
||||
return this;
|
||||
},
|
||||
backlog: function(index) {
|
||||
this.actions.push(actions.backlog.bind(null, index));
|
||||
return this;
|
||||
|
|
Loading…
Reference in New Issue