taiga-front/e2e/utils/nav.js

99 lines
2.3 KiB
JavaScript

var helper = module.exports;
var common = require('./common');
var actions = {
project: function(index) {
browser.actions().mouseMove($('div[tg-dropdown-project-list]')).perform();
let project = $$('div[tg-dropdown-project-list] li a').get(index);
common.link(project);
return common.waitLoader();
},
issues: function(index) {
common.link($('#nav-issues a'));
return common.waitLoader();
},
issue: function(index) {
let issue = $$('section.issues-table .row.table-main .subject a').get(index);
common.link(issue);
return common.waitLoader();
},
backlog: function() {
common.link($('#nav-backlog a'));
return common.waitLoader();
},
us: function(index) {
let us = $$('.user-story-name>a').get(index);
common.link(us);
return common.waitLoader();
},
taskboard: function(index) {
let link = $$('.sprints .button-gray').get(index);
common.link(link);
return common.waitLoader();
},
task: function(index) {
common.link($$('div[tg-taskboard-task] a.task-name').get(index));
return common.waitLoader();
}
};
var nav = {
project: function(index) {
this.actions.push(actions.project.bind(null, index));
return this;
},
issues: function() {
this.actions.push(actions.issues);
return this;
},
issue: function(index) {
this.actions.push(actions.issue.bind(null, index));
return this;
},
backlog: function(index) {
this.actions.push(actions.backlog.bind(null, index));
return this;
},
us: function(index) {
this.actions.push(actions.us.bind(null, index));
return this;
},
taskboard: function(index) {
this.actions.push(actions.taskboard.bind(null, index));
return this;
},
task: function(index) {
this.actions.push(actions.task.bind(null, index));
return this;
},
go: function() {
let promise = this.actions[0]();
for (let i = 1; i < this.actions.length; i++) {
promise = promise.then(this.actions[i]);
}
return promise;
}
};
helper.init = function() {
let newNav = Object.create(nav);
newNav.actions = [];
return newNav;
};