taiga-front/e2e/shared/detail.js

585 lines
18 KiB
JavaScript

var path = require('path');
var utils = require('../utils');
var detailHelper = require('../helpers').detail;
var commonHelper = require('../helpers').common;
var customFieldsHelper = require('../helpers/custom-fields-helper');
var commonUtil = require('../utils/common');
var lightbox = require('../utils/lightbox');
var notifications = require('../utils/notifications');
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
var shared = module.exports;
shared.titleTesting = async function() {
let titleHelper = detailHelper.title();
let title = await titleHelper.getTitle();
let date = Date.now();
titleHelper.setTitle("New title " + date);
titleHelper.save();
let notificationSuccess = await notifications.success.open();
expect(notificationSuccess).to.be.true;
let newTitle = await titleHelper.getTitle();
expect(newTitle).to.be.not.equal(title);
await notifications.success.close();
}
shared.tagsTesting = async function() {
let tagsHelper = detailHelper.tags();
let tagsText = await tagsHelper.getTagsText();
await tagsHelper.clearTags();
let date = Date.now();
let tags = [1, 2, 3].map((i) => date + "-" + i);
await tagsHelper.addTags(tags);
let newtagsText = await tagsHelper.getTagsText();
expect(newtagsText).to.be.not.eql(tagsText);
}
shared.descriptionTesting = function() {
it('confirm close with ESC', async function() {
let descriptionHelper = detailHelper.description();
descriptionHelper.enabledEditionMode();
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
await lightbox.confirm.cancel();
let descriptionVisibility = await $('.edit-description').isDisplayed();
expect(descriptionVisibility).to.be.true;
descriptionHelper.focus();
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
await lightbox.confirm.ok();
descriptionVisibility = await $('.edit-description').isDisplayed();
expect(descriptionVisibility).to.be.false;
});
it('edit', async function() {
let descriptionHelper = detailHelper.description();
let description = await descriptionHelper.getInnerHtml();
let date = Date.now();
descriptionHelper.enabledEditionMode();
descriptionHelper.setText("New description " + date);
descriptionHelper.save();
let newDescription = await descriptionHelper.getInnerHtml();
let notificationOpen = await notifications.success.open();
expect(notificationOpen).to.be.equal.true;
expect(newDescription).to.be.not.equal(description);
await notifications.success.close();
});
}
shared.statusTesting = async function(status1 , status2) {
let statusHelper = detailHelper.statusSelector();
// Status 1
await statusHelper.setStatus(1);
let selectedStatus = await statusHelper.getSelectedStatus();
expect(selectedStatus).to.be.equal(status1);
// Status 2
await statusHelper.setStatus(2);
let newSelectedStatus = await statusHelper.getSelectedStatus();
expect(newSelectedStatus).to.be.equal(status2);
}
shared.assignedToTesting = function() {
before(function () {
let assignedTo = detailHelper.assignedTo();
return assignedTo.clear();
});
it('assign', async function() {
let assignedTo = detailHelper.assignedTo();
let assignToLightbox = commonHelper.assignToLightbox();
let userName = detailHelper.assignedTo().getUserName();
assignedTo.assign();
await assignToLightbox.waitOpen();
assignToLightbox.selectFirst();
await assignToLightbox.waitClose();
let newUserName = assignedTo.getUserName();
expect(newUserName).to.be.not.equal(userName);
});
it('unassign', async function() {
let assignedTo = detailHelper.assignedTo();
await assignedTo.clear();
let isUnsassigned = assignedTo.isUnassigned();
expect(isUnsassigned).to.be.equal.true;
});
it('filter', async function () {
let assignedTo = detailHelper.assignedTo();
let assignToLightbox = commonHelper.assignToLightbox();
assignedTo.assign();
await assignToLightbox.waitOpen();
let names = await assignToLightbox.getNames();
await assignToLightbox.filter(names[1]);
let newNames = await assignToLightbox.getNames();
expect(newNames).to.have.length.below(3);
assignToLightbox.selectFirst();
await assignToLightbox.waitClose();
});
it('keyboard navigation', async function() {
let assignedTo = detailHelper.assignedTo();
let assignToLightbox = commonHelper.assignToLightbox();
assignedTo.assign();
await assignToLightbox.waitOpen();
browser
.actions()
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ARROW_UP)
.perform();
let selected = assignToLightbox.userList().get(2);
let isSelected = await commonUtil.hasClass(selected, 'selected');
expect(isSelected).to.be.true;
assignToLightbox.close();
await assignToLightbox.waitClose();
});
}
shared.historyTesting = async function(screenshotsFolder) {
let historyHelper = detailHelper.history();
//Adding a comment
historyHelper.selectCommentsTab();
await utils.common.takeScreenshot(screenshotsFolder, "show comments tab");
let commentsCounter = await historyHelper.countComments();
let date = Date.now();
await historyHelper.addComment("New comment " + date);
await utils.common.takeScreenshot(screenshotsFolder, "new coment");
let newCommentsCounter = await historyHelper.countComments();
expect(newCommentsCounter).to.be.equal(commentsCounter+1);
//Edit last comment
historyHelper.editLastComment();
let editComment = detailHelper.editComment();
editComment.updateText("This is the new and updated text");
editComment.saveComment();
await utils.common.takeScreenshot(screenshotsFolder, "edit comment");
//Show versions from last comment edited
historyHelper.showVersionsLastComment();
await utils.common.takeScreenshot(screenshotsFolder, "show comment versions");
historyHelper.closeVersionsLastComment();
//Deleting last comment
let deletedCommentsCounter = await historyHelper.countDeletedComments();
await historyHelper.deleteLastComment();
let newDeletedCommentsCounter = await historyHelper.countDeletedComments();
expect(newDeletedCommentsCounter).to.be.equal(deletedCommentsCounter+1);
await utils.common.takeScreenshot(screenshotsFolder, "deleted comment");
//Restore last comment
deletedCommentsCounter = await historyHelper.countDeletedComments();
await historyHelper.restoreLastComment();
newDeletedCommentsCounter = await historyHelper.countDeletedComments();
expect(newDeletedCommentsCounter).to.be.equal(deletedCommentsCounter-1);
await utils.common.takeScreenshot(screenshotsFolder, "restored comment");
//Store comment with a modification
commentsCounter = await historyHelper.countComments();
historyHelper.writeComment("New comment " + date);
let title = detailHelper.title();
title.setTitle('changed');
await title.save();
await utils.notifications.success.close();
newCommentsCounter = await historyHelper.countComments();
expect(newCommentsCounter).to.be.equal(commentsCounter+1);
//Check activity
await historyHelper.selectActivityTab();
await utils.common.takeScreenshot(screenshotsFolder, "show activity tab");
let activitiesCounter = await historyHelper.countActivities();
expect(newCommentsCounter).to.be.least(1);
}
shared.blockTesting = async function() {
let blockHelper = detailHelper.block();
let blockLightboxHelper = detailHelper.blockLightbox();
blockHelper.block();
await blockLightboxHelper.waitOpen();
await blockLightboxHelper.fill('This is a testing block reason');
await blockLightboxHelper.submit();
await blockLightboxHelper.waitClose();
let descriptionText = await $('.block-description').getText();
expect(descriptionText).to.be.equal('This is a testing block reason');
let isDisplayed = $('.block-desc-container').isDisplayed();
expect(isDisplayed).to.be.equal.true;
blockHelper.unblock();
isDisplayed = $('.block-desc-container').isDisplayed();
expect(isDisplayed).to.be.equal.false;
await notifications.success.close();
}
shared.attachmentTesting = async function() {
let attachmentHelper = detailHelper.attachment();
let date = Date.now();
// Uploading attachment
let attachmentsLength = await attachmentHelper.countAttachments();
var fileToUpload = commonUtil.uploadFilePath();
await attachmentHelper.upload(fileToUpload, 'This is the testing name ' + date);
await browser.sleep(5000);
// Check set name
let name = await attachmentHelper.getLastAttachmentName();
expect(name).to.be.equal('This is the testing name ' + date);
// Check new length
let newAttachmentsLength = await attachmentHelper.countAttachments();
expect(newAttachmentsLength).to.be.equal(attachmentsLength + 1);
//Drag'n drop
// await attachmentHelper.dragLastAttchmentToFirstPosition();
// name = await attachmentHelper.getFirstAttachmentName();
// expect(name).to.be.equal('This is the testing name ' + date);
// Renaming
await attachmentHelper.renameLastAttchment('This is the new testing name ' + date);
name = await attachmentHelper.getLastAttachmentName();
expect(name).to.be.equal('This is the new testing name ' + date);
// Deprecating
let deprecatedAttachmentsLength = await attachmentHelper.countDeprecatedAttachments();
await attachmentHelper.deprecateLastAttachment();
let newDeprecatedAttachmentsLength = await attachmentHelper.countDeprecatedAttachments();
expect(newDeprecatedAttachmentsLength).to.be.equal(deprecatedAttachmentsLength + 1);
// Show deprecated
attachmentsLength = await attachmentHelper.countAttachments();
deprecatedAttachmentsLength = await attachmentHelper.countDeprecatedAttachments();
await attachmentHelper.showDeprecated();
await browser.waitForAngular();
newAttachmentsLength = await attachmentHelper.countAttachments();
expect(newAttachmentsLength).to.be.equal(attachmentsLength + deprecatedAttachmentsLength);
// Gallery
attachmentHelper.gallery();
let countImages = await attachmentHelper.galleryImages().count();
commonUtil.takeScreenshot('attachments', 'gallery');
expect(countImages).to.be.above(0);
attachmentHelper.list();
// Gallery images
var fileToUploadImage = commonUtil.uploadImagePath();
await attachmentHelper.upload(fileToUploadImage, 'testing image ' + date);
await attachmentHelper.upload(fileToUpload, 'testing image ' + date);
await attachmentHelper.upload(fileToUploadImage, 'testing image ' + date);
attachmentHelper.attachmentLinks().last().click();
await attachmentHelper.previewLightbox();
let previewSrc = await attachmentHelper.getPreviewSrc();
await attachmentHelper.nextPreview();
let previewSrc2 = await attachmentHelper.getPreviewSrc();
expect(previewSrc).not.to.be.equal(previewSrc2);
await lightbox.exit();
// Deleting
attachmentsLength = await attachmentHelper.countAttachments();
await attachmentHelper.deleteLastAttachment();
newAttachmentsLength = await attachmentHelper.countAttachments();
expect(newAttachmentsLength).to.be.equal(attachmentsLength - 1);
}
shared.deleteTesting = async function() {
let deleteHelper = detailHelper.delete();
await deleteHelper.delete();
}
shared.watchersTesting = function() {
before(function () {
let watchersHelper = detailHelper.watchers();
return watchersHelper.removeAllWatchers();
});
it('add watcher', async function() {
let watchersHelper = detailHelper.watchers();
let watchersLightboxHelper = detailHelper.watchersLightbox();
let userNames = await watchersHelper.getWatchersUserNames();
await watchersHelper.addWatcher();
await watchersLightboxHelper.waitOpen();
let newWatcherName = await watchersLightboxHelper.getFirstName();
await watchersLightboxHelper.selectFirst();
await watchersLightboxHelper.waitClose();
let newUserNames = await watchersHelper.getWatchersUserNames();
await userNames.push(newWatcherName);
expect(newUserNames.join(',')).to.be.equal(userNames.join(','));
});
it('clear watcher', async function() {
let watchersHelper = detailHelper.watchers();
await watchersHelper.removeAllWatchers();
let newUserNames = await watchersHelper.getWatchersUserNames();
expect(newUserNames.join()).to.be.equal('');
});
it('filter watcher', async function () {
let watchersHelper = detailHelper.watchers();
let watchersLightboxHelper = detailHelper.watchersLightbox();
let userNames = await watchersHelper.getWatchersUserNames();
await watchersHelper.addWatcher();
await watchersLightboxHelper.waitOpen();
let names = await watchersLightboxHelper.getNames();
await watchersLightboxHelper.filter(names[0]);
let newNames = await watchersLightboxHelper.getNames();
expect(newNames).to.have.length(1);
await watchersLightboxHelper.selectFirst();
await watchersLightboxHelper.waitClose();
});
it('keyboard navigatin', async function() {
let watchersHelper = detailHelper.watchers();
let watchersLightboxHelper = detailHelper.watchersLightbox();
await watchersHelper.addWatcher();
await watchersLightboxHelper.waitOpen();
browser
.actions()
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ARROW_UP)
.perform();
let selected = watchersLightboxHelper.userList().get(1);
let isSelected = await commonUtil.hasClass(selected, 'selected');
expect(isSelected).to.be.true;
watchersLightboxHelper.close();
await watchersLightboxHelper.waitClose();
});
}
shared.customFields = function(typeIndex) {
before(async function() {
let url = await browser.getCurrentUrl();
let rootUrl = await commonUtil.getProjectUrlRoot();
await browser.get(rootUrl + '/admin/project-values/custom-fields');
await browser.sleep(2000);
await customFieldsHelper.create(typeIndex, 'detail-test-custom-fields-text', 'desc1', 1);
// debounce :(
await browser.sleep(2000);
await customFieldsHelper.create(typeIndex, 'detail-test-custom-fields-multi', 'desc1', 3);
// debounce :(
await browser.sleep(2000);
browser.get(url);
await commonUtil.waitLoader();
});
it('text create', async function() {
let customFields = customFieldsHelper.getDetailFields();
let count = await customFields.count();
let textField = customFields.get(count - 2);
textField.$('input').sendKeys('test text');
textField.$('.js-save-description').click();
// debounce
await browser.sleep(2000);
let fieldText = textField.$('.custom-field-value span').getText();
expect(fieldText).to.be.eventually.equal('test text');
});
it('text edit', async function() {
let customFields = customFieldsHelper.getDetailFields();
let count = await customFields.count();
let textField = customFields.get(count - 2);
textField.$('.js-edit-description').click();
textField.$('input').sendKeys('test text edit');
textField.$('.js-save-description').click();
// debounce
await browser.sleep(2000);
let fieldText = textField.$('.custom-field-value span').getText();
expect(fieldText).to.be.eventually.equal('test text edit');
});
it('multi', async function() {
let customFields = customFieldsHelper.getDetailFields();
let count = await customFields.count();
let textField = customFields.get(count - 1);
textField.$('textarea').sendKeys('test text2');
textField.$('.js-save-description').click();
// debounce
await browser.sleep(2000);
let fieldText = textField.$('.custom-field-value span').getText();
expect(fieldText).to.be.eventually.equal('test text2');
});
it('multi edit', async function() {
let customFields = customFieldsHelper.getDetailFields();
let count = await customFields.count();
let textField = customFields.get(count - 1);
textField.$('.js-edit-description').click();
textField.$('textarea').sendKeys('test text2 edit');
textField.$('.js-save-description').click();
// // debounce
await browser.sleep(2000);
let fieldText = await textField.$('.custom-field-value span').getText();
expect(fieldText).to.be.equal('test text2 edit');
});
};
shared.teamRequirementTesting = function() {
it('team requirement edition', async function() {
let requirementHelper = detailHelper.teamRequirement();
let isRequired = await requirementHelper.isRequired();
// Toggle
requirementHelper.toggleStatus();
let newIsRequired = await requirementHelper.isRequired();
expect(isRequired).to.be.not.equal(newIsRequired);
// Toggle again
requirementHelper.toggleStatus();
newIsRequired = await requirementHelper.isRequired();
expect(isRequired).to.be.equal(newIsRequired);
});
}
shared.clientRequirementTesting = function () {
it('client requirement edition', async function() {
let requirementHelper = detailHelper.clientRequirement();
let isRequired = await requirementHelper.isRequired();
// Toggle
requirementHelper.toggleStatus();
let newIsRequired = await requirementHelper.isRequired();
expect(isRequired).to.be.not.equal(newIsRequired);
// Toggle again
requirementHelper.toggleStatus();
newIsRequired = await requirementHelper.isRequired();
expect(isRequired).to.be.equal(newIsRequired);
});
}