taiga-front/e2e/helpers/detail-helper.js

562 lines
16 KiB
JavaScript

var utils = require('../utils');
var helper = module.exports;
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.description = function(){
let el = $('section[tg-editable-description]');
let obj = {
el: el,
focus: function() {
el.$('textarea').click();
},
enabledEditionMode: async function(){
await el.$(".view-description").click();
},
getInnerHtml: async function(text){
let html = await el.$(".wysiwyg.editable").getAttribute("innerHTML");
return html;
},
setText: async function(text){
await el.$("textarea").clear().sendKeys(text);
},
save: async function(){
await el.$(".save").click();
await browser.waitForAngular();
}
};
return obj;
};
helper.tags = function() {
let el = $('tg-tag-line-common');
let obj = {
el:el,
clearTags: async function() {
let tags = await el.$$('.e2e-delete-tag');
let totalTags = tags.length;
let htmlChanges = null;
while (totalTags > 0) {
htmlChanges = await utils.common.outerHtmlChanges(el.$(".tags-container"));
await el.$$('.e2e-delete-tag').first().click();
totalTags --;
await htmlChanges();
}
},
getTagsText: function() {
return el.$$('tg-tag span').getText();
},
addTags: async function(tags) {
let htmlChanges = null
$('.e2e-show-tag-input').click();
for (let tag of tags){
htmlChanges = await utils.common.outerHtmlChanges(el.$(".tags-container"));
el.$('.e2e-add-tag-input').sendKeys(tag);
el.$('.save').click();
await htmlChanges();
}
}
};
return obj;
};
helper.statusSelector = function() {
let el = $('.ticket-data');
let obj = {
el: el,
setStatus: async function(value) {
let status = el.$('.detail-status-inner');
await utils.popover.open(status, value);
return this.getSelectedStatus();
},
getSelectedStatus: async function(){
return el.$$('.detail-status-inner .e2e-status').first().getAttribute("innerHTML");
}
};
return obj;
};
helper.assignedTo = function() {
let el = $('.menu-secondary .assigned-to');
let obj = {
el: el,
clear: async function() {
if (await el.$('.icon-delete').isPresent()) {
await browser.actions()
.mouseMove(el.$('.icon-delete'))
.click()
.perform();
await utils.lightbox.confirm.ok();
await browser.waitForAngular();
}
},
assign: function() {
el.$('.user-assigned').click();
},
getUserName: function() {
return el.$('.user-assigned').getText();
},
isUnassigned: function() {
return el.$('.assign-to-me').isPresent();
}
};
return obj;
};
helper.history = function() {
let el = $('section.history');
let obj = {
el:el,
selectCommentsTab: async function() {
el.$('.e2e-comments-tab').click();
await browser.waitForAngular();
},
selectActivityTab: async function() {
el.$('.e2e-activity-tab').click();
await browser.waitForAngular();
},
countComments: async function() {
let comments = await el.$$(".comment-wrapper");
return comments.length;
},
countActivities: async function() {
let activities = await el.$$(".activity");
return activities.length;
},
countDeletedComments: async function() {
let comments = await el.$$(".deleted-comment-wrapper");
return comments.length;
},
editLastComment: async function() {
let lastComment = el.$$(".comment-wrapper").last();
browser
.actions()
.mouseMove(lastComment)
.perform();
lastComment.$$(".comment-option").first().click();
await browser.waitForAngular();
},
deleteLastComment: async function() {
let lastComment = el.$$(".comment-wrapper").last();
browser
.actions()
.mouseMove(lastComment)
.perform();
lastComment.$$(".comment-option").last().click();
await browser.waitForAngular();
},
getComments: function() {
return $$('tg-comment');
},
showVersionsLastComment: async function() {
el.$$(".comment-edited a").last().click();
await browser.waitForAngular();
},
closeVersionsLastComment: async function() {
$(".lightbox-display-historic .close").click();
await browser.waitForAngular();
},
enableEditModeLastComment: async function() {
let lastComment = el.$$(".comment-wrapper").last();
browser
.actions()
.mouseMove(lastComment)
.perform();
lastComment.$$(".comment-option").last().click();
await browser.waitForAngular();
},
restoreLastComment: async function() {
el.$$(".deleted-comment-wrapper .restore-comment").last().click();
await browser.waitForAngular();
}
};
return obj;
};
helper.block = function() {
let el = $('tg-block-button');
let obj = {
el:el,
block: function() {
el.$('.item-block').click();
},
unblock: async function() {
el.$('.item-unblock').click();
}
};
return obj;
};
helper.blockLightbox = function() {
let el = $('div[tg-lb-block]');
let obj = {
el: el,
waitOpen: function() {
return utils.lightbox.open(el);
},
waitClose: function() {
return utils.notifications.success.close();
},
fill: async function(text) {
el.$('textarea').sendKeys(text);
await browser.waitForAngular();
},
submit: async function() {
el.$('a.button-green').click();
await browser.waitForAngular();
}
};
return obj;
};
helper.delete = function() {
let el = $('tg-delete-button');
let obj = {
el:el,
delete: async function(){
el.$('.button-red').click();
await utils.lightbox.confirm.ok();
}
};
return obj;
};
helper.attachment = function() {
let el = $('tg-attachments-full');
let obj = {
el:el,
waitEditableClose: function() {
return browser.wait(async () => {
let editableAttachmentsCount = await $$('tg-attachment .editable-attachment-comment').count();
return !editableAttachmentsCount;
}, 5000);
},
upload: async function(filePath, name) {
let addAttach = el.$('#add-attach');
let countAttachments = await $$('tg-attachment').count();
let toggleInput = function() {
$('#add-attach').toggle();
};
await browser.executeScript(toggleInput);
await el.$('#add-attach').sendKeys(filePath);
await browser.waitForAngular();
await browser.wait(async () => {
let count = await $$('tg-attachment .editable-attachment-comment input').count();
return !!count;
}, 5000);
await el.$('tg-attachment .editable-attachment-comment input').sendKeys(name);
await browser.sleep(500);
await browser.actions().sendKeys(protractor.Key.ENTER).perform();
await browser.executeScript(toggleInput);
await browser.waitForAngular();
await obj.waitEditableClose();
},
renameLastAttchment: async function (name) {
await browser.actions().mouseMove(el.$$('tg-attachment').last()).perform();
let settingsGroup = el.$$('tg-attachment .attachment-settings').last();
await settingsGroup.$$('.settings').first().click();
await browser.wait(async () => {
let count = await $$('tg-attachment .editable-attachment-comment input').count();
return !!count;
}, 5000);
await el.$$('tg-attachment .editable-attachment-comment input').last().sendKeys(name);
await browser.actions().sendKeys(protractor.Key.ENTER).perform();
await browser.waitForAngular();
await obj.waitEditableClose();
},
getFirstAttachmentName: async function () {
let name = await el.$$('tg-attachment .attachment-comments').first().getText();
return name;
},
getLastAttachmentName: async function () {
let name = await el.$$('tg-attachment .attachment-comments').last().getText();
return name;
},
countAttachments: async function(){
return await el.$$('tg-attachment').count();
},
countDeprecatedAttachments: async function(){
let hasDeprecateds = await el.$('.more-attachments .more-attachments-num').isPresent();
if (hasDeprecateds) {
let attachmentsJSON = await el.$('.more-attachments .more-attachments-num').getAttribute('translate-values');
return parseInt(eval(attachmentsJSON));
} else {
return 0;
}
},
deprecateLastAttachment: async function() {
await browser.actions().mouseMove(el.$$('tg-attachment').last()).perform();
let editEl = el.$$('tg-attachment').last().$('.attachment-settings .e2e-edit');
await browser
.actions()
.mouseMove(editEl)
.click()
.perform();
await el.$$('tg-attachment .editable-attachment-deprecated input').last().click();
await el.$$('tg-attachment .attachment-settings').last().$('.e2e-save').click();
await browser.waitForAngular();
},
showDeprecated: async function(){
await el.$('.more-attachments-num').click();
},
deleteLastAttachment: async function() {
let attachment = await $$('tg-attachment').last();
await browser.actions().mouseMove(attachment).perform();
let isEditable = await attachment.$('.editable').isPresent();
// close edit
if(isEditable) {
let iconDelete = await attachment.$$('.attachment-settings a').get(1);
await browser.actions().mouseMove(iconDelete).perform();
iconDelete.click();
await browser.waitForAngular();
}
let iconDelete = await attachment.$$('.attachment-settings a').get(1);
await browser.actions().mouseMove(iconDelete).perform();
iconDelete.click();
await utils.lightbox.confirm.ok();
await browser.waitForAngular();
},
dragLastAttchmentToFirstPosition: async function() {
await browser.actions().mouseMove(el.$$('tg-attachment').last()).perform();
let lastDraggableAttachment = el.$$('tg-attachment .attachment-settings a').last();
let destination = el.$$('tg-attachment .attachment-settings').first();
await utils.common.drag(lastDraggableAttachment, destination);
},
galleryImages: function() {
return $$('tg-attachment-gallery');
},
gallery: function() {
$('.view-gallery').click();
},
list: function() {
$('.view-list').click();
},
previewLightbox: function() {
return utils.lightbox.open($('tg-attachments-preview'));
},
getPreviewSrc: function() {
return $('tg-attachments-preview img').getAttribute('src');
},
nextPreview: function() {
return $('tg-attachments-preview .next').click();
},
attachmentLinks: function() {
return $$('.e2e-attachment-link');
}
};
return obj;
};
helper.watchers = function() {
let el = $('.ticket-watch-buttons');
let obj = {
el: el,
addWatcher: async function() {
await el.$('.add-watcher').click();
},
getWatchersUserNames: async function() {
return el.$$('.user-list-name span').getText();
},
removeAllWatchers: async function() {
let totalWatchers = await await el.$$('.js-delete-watcher').count();
if(!totalWatchers) return;
let htmlChanges = htmlChanges = await utils.common.outerHtmlChanges(el);
while (totalWatchers > 0) {
await el.$$('.js-delete-watcher').first().click();
await utils.lightbox.confirm.ok();
totalWatchers --;
}
await htmlChanges();
}
};
return obj;
};
helper.watchersLightbox = function() {
let el = $('div[tg-lb-watchers]');
let obj = {
el: el,
waitOpen: function() {
return utils.lightbox.open(el);
},
waitClose: function() {
return utils.lightbox.close(el);
},
close: function() {
el.$$('.close').first().click();
},
selectFirst: async function() {
el.$$('div[data-user-id]').first().click();
await browser.waitForAngular();
},
getFirstName: function() {
return el.$$('.lightbox .ticket-watchers div[data-user-id]').first().getText();
},
getNames: function() {
return el.$$('.user-list-name').getText();
},
filter: function(text) {
return el.$('input').sendKeys(text);
},
userList: function() {
return el.$$('.user-list-single');
}
};
return obj;
};
helper.teamRequirement = function() {
let el = $('tg-us-team-requirement-button');
let obj = {
el: el,
toggleStatus: async function(){
await el.$("label").click();
await browser.waitForAngular();
},
isRequired: async function() {
let classes = await el.$("label").getAttribute('class');
return classes.includes("active");
}
};
return obj;
};
helper.clientRequirement = function() {
let el = $('tg-us-client-requirement-button');
let obj = {
el: el,
toggleStatus: async function(){
await el.$("label").click();
await browser.waitForAngular();
},
isRequired: async function() {
let classes = await el.$("label").getAttribute('class');
return classes.includes("active");
}
};
return obj;
};