taiga-front/e2e/suites/backlog.e2e.js

679 lines
21 KiB
JavaScript

var utils = require('../utils');
var backlogHelper = require('../helpers').backlog;
var commonHelper = require('../helpers').common;
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
describe('backlog', function() {
before(async function() {
browser.get(browser.params.glob.host + 'project/project-3/backlog');
await utils.common.waitLoader();
utils.common.takeScreenshot('backlog', 'backlog');
});
describe('create US', function() {
let createUSLightbox = null;
before(async function() {
backlogHelper.openNewUs();
createUSLightbox = backlogHelper.getCreateEditUsLightbox();
await createUSLightbox.waitOpen();
});
it('capture screen', function() {
utils.common.takeScreenshot('backlog', 'create-us');
});
it('fill form', async function() {
// subject
createUSLightbox.subject().sendKeys('subject');
// roles
await createUSLightbox.setRole(1, 3);
await createUSLightbox.setRole(3, 4);
let totalPoints = await createUSLightbox.getRolePoints();
expect(totalPoints).to.be.equal('3');
// status
createUSLightbox.status(2).click();
// tags
createUSLightbox.tags().sendKeys('aaa');
browser.actions().sendKeys(protractor.Key.ENTER).perform();
createUSLightbox.tags().sendKeys('bbb');
browser.actions().sendKeys(protractor.Key.ENTER).perform();
// description
createUSLightbox.description().sendKeys('test test');
//settings
createUSLightbox.settings(0).click();
await utils.common.waitTransitionTime(createUSLightbox.settings(0));
});
it('upload attachments', commonHelper.lightboxAttachment);
it('screenshots', function() {
utils.common.takeScreenshot('backlog', 'create-us-filled');
});
it('send form', async function() {
let htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
let usCount = await backlogHelper.userStories().count();
createUSLightbox.submit();
await utils.lightbox.close(createUSLightbox.el);
await htmlChanges();
let newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.equal(usCount + 1);
});
});
describe('bulk create US', function() {
let createUSLightbox = null;
before(async function() {
backlogHelper.openBulk();
createUSLightbox = backlogHelper.getBulkCreateLightbox();
await createUSLightbox.waitOpen();
});
it('fill form', function() {
createUSLightbox.textarea().sendKeys('aaa');
browser.actions().sendKeys(protractor.Key.ENTER).perform();
createUSLightbox.textarea().sendKeys('bbb');
browser.actions().sendKeys(protractor.Key.ENTER).perform();
});
it('send form', async function() {
let usCount = await backlogHelper.userStories().count();
createUSLightbox.submit();
await createUSLightbox.waitClose();
let newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.equal(usCount + 2);
});
});
describe('edit US', function() {
let editUSLightbox = null;
before(async function() {
backlogHelper.openUsBacklogEdit(0);
editUSLightbox = backlogHelper.getCreateEditUsLightbox();
await editUSLightbox.waitOpen();
});
it('fill form', async function() {
// subject
editUSLightbox.subject().sendKeys('subjectedit');
// roles
await editUSLightbox.setRole(0, 3);
await editUSLightbox.setRole(1, 3);
await editUSLightbox.setRole(2, 3);
await editUSLightbox.setRole(3, 3);
let totalPoints = await editUSLightbox.getRolePoints();
expect(totalPoints).to.be.equal('4');
// status
editUSLightbox.status(3).click();
// tags
editUSLightbox.tags().sendKeys('www');
browser.actions().sendKeys(protractor.Key.ENTER).perform();
editUSLightbox.tags().sendKeys('xxx');
browser.actions().sendKeys(protractor.Key.ENTER).perform();
// description
editUSLightbox.description().sendKeys('test test test test');
//settings
editUSLightbox.settings(1).click();
});
it('upload attachments', commonHelper.lightboxAttachment);
it('send form', async function() {
editUSLightbox.submit();
await editUSLightbox.waitClose();
});
});
it('edit status inline', async function() {
await backlogHelper.setUsStatus(0, 1);
// debounce
await browser.sleep(2000);
let statusText = await backlogHelper.setUsStatus(0, 2);
expect(statusText).to.be.equal('In progress');
});
it('edit points inline', async function() {
let usPointsOriginal = await backlogHelper.getUsPoints(0, 1, 1);
await backlogHelper.setUsPoints(0, 1, 1);
let usPointsNew = await backlogHelper.getUsPoints(0);
expect(usPointsOriginal).not.to.be.equal(usPointsNew);
});
it('delete US', async function() {
let usCount = await backlogHelper.userStories().count();
backlogHelper.deleteUs(0);
await utils.lightbox.confirm.ok();
let newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.equal(usCount - 1);
});
it('drag backlog us', async function() {
let dragableElements = backlogHelper.userStories();
let dragElement = dragableElements.get(4);
let dragElementHandler = dragElement.$('.icon-drag');
let draggedElementRef = await backlogHelper.getUsRef(dragElement);
await utils.common.drag(dragElementHandler, dragableElements.get(0));
await browser.waitForAngular();
let firstElementTextRef = await backlogHelper.getUsRef(dragableElements.get(0));
expect(firstElementTextRef).to.be.equal(draggedElementRef);
});
it('reorder multiple us', async function() {
let dragableElements = backlogHelper.userStories();
let count = await dragableElements.count();
let draggedRefs = [];
//element 1
let dragElement = dragableElements.get(count - 1);
dragElement.$('input[type="checkbox"]').click();
let ref1 = await backlogHelper.getUsRef(dragElement);
draggedRefs.push(await backlogHelper.getUsRef(dragElement));
//element 2
dragElement = dragableElements.get(count - 2);
dragElement.$('input[type="checkbox"]').click();
let ref2 = await backlogHelper.getUsRef(dragElement);
draggedRefs.push(await backlogHelper.getUsRef(dragElement));
await utils.common.drag(dragElement.$('.icon-drag'), dragableElements.get(0));
let elementRef1 = await backlogHelper.getUsRef(dragableElements.get(0));
let elementRef2 = await backlogHelper.getUsRef(dragableElements.get(1));
expect(elementRef2).to.be.equal(draggedRefs[0]);
expect(elementRef1).to.be.equal(draggedRefs[1]);
});
it.only('drag multiple us to milestone', async function() {
let sprint = backlogHelper.sprints().get(0);
let initUssSprintCount = await backlogHelper.getSprintUsertories(sprint).count();
let dragableElements = backlogHelper.userStories();
let draggedRefs = [];
// the us 1 and 2 are selected on the previous test
let dragElement = dragableElements.get(0);
let dragElementHandler = dragElement.$('.icon-drag');
await utils.common.drag(dragElementHandler, sprint.$('.sprint-table'));
await browser.waitForAngular();
let ussSprintCount = await backlogHelper.getSprintUsertories(sprint).count();
expect(ussSprintCount).to.be.equal(initUssSprintCount + 2);
});
it('drag us to milestone', async function() {
let sprint = backlogHelper.sprints().get(0).$('.sprint-table');
let dragableElements = backlogHelper.userStories();
let dragElement = dragableElements.get(0);
let dragElementHandler = dragElement.$('.icon-drag');
let draggedElementRef = await backlogHelper.getUsRef(dragElement);
let initUssSprintCount = await backlogHelper.getSprintUsertories(sprint).count();
await utils.common.drag(dragElementHandler, sprint);
await browser.waitForAngular();
let ussSprintCount = await backlogHelper.getSprintUsertories(sprint).count();
expect(ussSprintCount).to.be.equal(initUssSprintCount + 1);
});
it('move to current sprint button', async function() {
let dragElement = backlogHelper.userStories().first();
dragElement.$('input[type="checkbox"]').click();
let draggedRef = await backlogHelper.getUsRef(dragElement);
let htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
$('#move-to-current-sprint').click();
await htmlChanges();
let sprint = backlogHelper.sprintsOpen().last();
let sprintRefs = await backlogHelper.getSprintsRefs(sprint);
expect(sprintRefs.indexOf(draggedRef)).to.be.not.equal(-1);
});
it('reorder milestone us', async function() {
let sprint = backlogHelper.sprints().get(0);
let dragableElements = backlogHelper.getSprintUsertories(sprint);
let dragElement = await dragableElements.get(3);
let draggedElementRef = await backlogHelper.getUsRef(dragElement);
await utils.common.drag(dragElement, dragableElements.get(0));
await browser.waitForAngular();
let firstElementRef = await backlogHelper.getUsRef(dragableElements.get(0));
expect(firstElementRef).to.be.equal(firstElementRef);
});
it('drag us from milestone to milestone', async function() {
let sprint1 = backlogHelper.sprints().get(0);
let sprint2 = backlogHelper.sprints().get(1);
let initUssSprintCount = await backlogHelper.getSprintUsertories(sprint2).count();
let dragElement = backlogHelper.getSprintUsertories(sprint1).get(0);
await utils.common.drag(dragElement, sprint2.$('.sprint-table'));
await browser.waitForAngular();
let firstElement = backlogHelper.getSprintUsertories(sprint2).get(0);
let ussSprintCount = await backlogHelper.getSprintUsertories(sprint2).count();
expect(ussSprintCount).to.be.equal(initUssSprintCount + 1);
});
utils.common.browserSkip('internet explorer', 'select us with SHIFT', async function() {
await browser.sleep(5000);
let dragableElements = backlogHelper.userStories();
let firstInput = dragableElements.get(0).$('input[type="checkbox"]');
let lastInput = dragableElements.get(3).$('input[type="checkbox"]');
await browser.actions()
.mouseMove(firstInput)
.keyDown(protractor.Key.SHIFT)
.click()
.mouseMove(lastInput)
.click()
.keyUp(protractor.Key.SHIFT)
.perform();
let count = await backlogHelper.selectedUserStories().count();
expect(count).to.be.equal(4);
});
it('role filters', async function() {
await backlogHelper.fiterRole(1);
utils.common.takeScreenshot('backlog', 'backlog-role-filters');
let usPoints = await backlogHelper.getUsPoints(0);
expect(usPoints).to.match(/[0-9?]+\s\/\s[0-9?]+/);
});
describe('milestones', function() {
it('create', async function() {
backlogHelper.openNewMilestone();
let createMilestoneLightbox = backlogHelper.getCreateEditMilestone();
await createMilestoneLightbox.waitOpen();
utils.common.takeScreenshot('backlog', 'create-milestone');
let sprintName = 'sprintName' + new Date().getTime();
createMilestoneLightbox.name().sendKeys(sprintName);
createMilestoneLightbox.submit();
await browser.waitForAngular();
// debounce
await browser.sleep(2000);
let sprintTitles = await backlogHelper.getSprintsTitles();
expect(sprintTitles.indexOf(sprintName)).to.be.not.equal(-1);
});
it('edit', async function() {
backlogHelper.openMilestoneEdit(0);
let createMilestoneLightbox = backlogHelper.getCreateEditMilestone();
await createMilestoneLightbox.waitOpen();
await createMilestoneLightbox.name().clear();
let sprintName = 'sprintName' + new Date().getTime();
createMilestoneLightbox.name().sendKeys(sprintName);
createMilestoneLightbox.submit();
await createMilestoneLightbox.waitClose();
let sprintTitles = await backlogHelper.getSprintsTitles();
expect(sprintTitles.indexOf(sprintName)).to.be.not.equal(-1);
});
it('delete', async function() {
backlogHelper.openMilestoneEdit(0);
let createMilestoneLightbox = backlogHelper.getCreateEditMilestone();
await createMilestoneLightbox.waitOpen();
createMilestoneLightbox.delete();
await utils.lightbox.confirm.ok();
await browser.waitForAngular();
let sprintName = createMilestoneLightbox.name().getAttribute('value');
let sprintTitles = await backlogHelper.getSprintsTitles();
expect(sprintTitles.indexOf(sprintName)).to.be.equal(-1);
});
});
describe('tags', function() {
it('show', function() {
$('#show-tags').click();
utils.common.takeScreenshot('backlog', 'backlog-tags');
let tag = $$('.backlog-table .tag').get(0);
expect(tag.isDisplayed()).to.be.eventually.true;
});
it('hide', function() {
$('#show-tags').click();
let tag = $$('.backlog-table .tag').get(0);
expect(tag.isDisplayed()).to.be.eventually.false;
});
});
describe('filters', function() {
it('show filters', async function() {
let transition = utils.common.transitionend('.menu-secondary.filters-bar', 'opacity');
$('#show-filters-button').click();
await transition();
utils.common.takeScreenshot('backlog', 'backlog-filters');
});
it('filter by subject', async function() {
let usCount = await backlogHelper.userStories().count();
let filterQ = element(by.model('filtersQ'));
let htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
await filterQ.sendKeys('add');
await htmlChanges();
let newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.below(usCount);
htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
// clear status
await filterQ.clear();
await htmlChanges();
});
it('filter by ref', async function() {
let userstories = backlogHelper.userStories();
let filterQ = element(by.model('filtersQ'));
let htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
let ref = await backlogHelper.getTestingFilterRef();
ref = ref.replace('#', '');
await filterQ.sendKeys(ref);
await htmlChanges();
let newUsCount = await userstories.count();
expect(newUsCount).to.be.equal(1);
htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
// clear status
await filterQ.clear();
await htmlChanges();
});
it('filter by status', async function() {
let usCount = await backlogHelper.userStories().count();
let htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
$$('.filters-cats a').first().click();
$$('.filter-list a').first().click();
await htmlChanges();
let newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.below(usCount);
//remove status
htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
$$('.filters-applied a').first().click();
await htmlChanges();
newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.equal(usCount);
backlogHelper.goBackFilters();
});
it('filter by tags', async function() {
let usCount = await backlogHelper.userStories().count();
let htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
$$('.filters-cats a').get(1).click();
await browser.waitForAngular();
$$('.filter-list a').first().click();
await htmlChanges();
let newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.below(usCount);
//remove tags
htmlChanges = await utils.common.outerHtmlChanges('.backlog-table-body');
$$('.filters-applied a').first().click();
await htmlChanges();
newUsCount = await backlogHelper.userStories().count();
expect(newUsCount).to.be.equal(usCount);
});
it('trying drag with filters open', async function() {
let dragableElements = backlogHelper.userStories();
let dragElement = dragableElements.get(5);
await utils.common.drag(dragElement, dragableElements.get(0));
let waitErrorOpen = await utils.notifications.error.open();
expect(waitErrorOpen).to.be.true;
await utils.notifications.error.close();
});
it('hide filters', async function() {
let menu = $('.menu-secondary.filters-bar');
let transition = utils.common.transitionend('.menu-secondary.filters-bar', 'width');
$('#show-filters-button').click();
await transition();
let waitWidth = await menu.getCssValue('width');
expect(waitWidth).to.be.equal('0px');
});
});
describe('closed sprints', function() {
async function createEmptyMilestone() {
backlogHelper.openNewMilestone();
let createMilestoneLightbox = backlogHelper.getCreateEditMilestone();
await createMilestoneLightbox.waitOpen();
createMilestoneLightbox.name().sendKeys('sprintName' + new Date().getTime());
createMilestoneLightbox.submit();
return createMilestoneLightbox.waitClose();
}
async function dragClosedUsToMilestone() {
//create us
backlogHelper.openNewUs();
let createUSLightbox = backlogHelper.getCreateEditUsLightbox();
await createUSLightbox.waitOpen();
createUSLightbox.subject().sendKeys('subject');
//closed status
createUSLightbox.status(5).click();
createUSLightbox.submit();
await utils.lightbox.close(createUSLightbox.el);
await backlogHelper.loadFullBacklog();
// drag us to milestone
let dragElement = backlogHelper.userStories().last();
let dragElementHandler = dragElement.$('.icon-drag');
let sprint = backlogHelper.getClosedSprintTable();
await utils.common.drag(dragElementHandler, sprint);
return browser.waitForAngular();
}
before(async function() {
await createEmptyMilestone();
await dragClosedUsToMilestone();
});
it('open closed sprints', async function() {
backlogHelper.toggleClosedSprints();
let closedSprints = await backlogHelper.closedSprints().count();
expect(closedSprints).to.be.equal(1);
});
it('close closed sprints', async function() {
backlogHelper.toggleClosedSprints();
let closedSprints = await backlogHelper.closedSprints().count();
expect(closedSprints).to.be.equal(0);
});
it('open sprint by drag open US to closed sprint', async function() {
backlogHelper.toggleClosedSprints();
await backlogHelper.setUsStatus(1, 1);
let dragElement = backlogHelper.userStories().get(1);
let dragElementHandler = dragElement.$('.icon-drag');
let sprint = backlogHelper.sprints().last();
await backlogHelper.toggleSprint(sprint);
await utils.common.drag(dragElementHandler, sprint.$('.sprint-table'));
await browser.waitForAngular();
let closedSprints = await backlogHelper.closedSprints().count();
expect(closedSprints).to.be.equal(0);
});
});
});