diff --git a/conf.e2e.js b/conf.e2e.js index 74ce6992..f4303ecd 100644 --- a/conf.e2e.js +++ b/conf.e2e.js @@ -8,7 +8,8 @@ exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', framework: 'mocha', mochaOpts: { - timeout: 30000 + timeout: 30000, + compilers: 'js:babel/register' }, // capabilities: { // 'browserName': 'firefox' diff --git a/e2e/full/admin/attributes/members.e2e.js b/e2e/full/admin/attributes/members.e2e.js new file mode 100644 index 00000000..d71c916f --- /dev/null +++ b/e2e/full/admin/attributes/members.e2e.js @@ -0,0 +1,132 @@ +var utils = require('../../../utils'); + +var adminMembershipsHelper = require('../../../helpers').adminMemberships; + +var chai = require('chai'); +var chaiAsPromised = require('chai-as-promised'); + +chai.use(chaiAsPromised); +var expect = chai.expect; + +describe('admin - members', function() { + before(async function(){ + browser.get('http://localhost:9001/project/project-0/admin/memberships'); + + await utils.common.waitLoader(); + + utils.common.takeScreenshot('memberships', 'memberships'); + }); + + describe('new member', async function() { + let initMembersCount = 0; + let newMemberLightbox = null; + + before(async function() { + initMembersCount = await adminMembershipsHelper.getMembers().count(); + + newMemberLightbox = adminMembershipsHelper.getNewMemberLightbox(); + adminMembershipsHelper.openNewMemberLightbox(); + + await newMemberLightbox.waitOpen(); + utils.common.takeScreenshot('memberships', 'new-member'); + }); + + it('add members row', async function() { + newMemberLightbox.newEmail('xxx' + new Date().getTime() + '@xx.es'); + newMemberLightbox.newEmail('xxx' + new Date().getTime() + '@xx.es'); + newMemberLightbox.newEmail('xxx' + new Date().getTime() + '@xx.es'); + + let membersRows = await newMemberLightbox.getRows().count(); + + expect(membersRows).to.be.equal(3 + 1); + }); + + it('delete members row', async function() { + newMemberLightbox.deleteRow(2); + + let membersRows = await newMemberLightbox.getRows().count(); + + expect(membersRows).to.be.equal(2 + 1); + }); + + it('submit', async function() { + newMemberLightbox.submit(); + + await newMemberLightbox.waitClose(); + + let members = adminMembershipsHelper.getMembers(); + let membersCount = await members.count(); + + expect(membersCount).to.be.equal(initMembersCount + 2); + }); + + it('the last two should be pending', async function() { + let members = adminMembershipsHelper.getMembers(); + let membersCount = await members.count(); + + let lastMember1 = members.get(membersCount - 1); + let lastMember2 = members.get(membersCount - 2); + + let active1 = await adminMembershipsHelper.isActive(lastMember1); + let active2 = await adminMembershipsHelper.isActive(lastMember2); + + expect(active1).to.be.false; + expect(active2).to.be.false; + }); + }); + + it('delete member', async function() { + let initMembersCount = await adminMembershipsHelper.getMembers().count(); + + let member = adminMembershipsHelper.getMembers().last(); + + adminMembershipsHelper.delete(member); + + utils.common.takeScreenshot('memberships', 'delete-member-lb'); + + await utils.lightbox.confirm.ok(); + + let membersCount = await adminMembershipsHelper.getMembers().count(); + + expect(membersCount).to.be.equal(initMembersCount - 1); + }); + + it('change role', async function() { + let member = adminMembershipsHelper.getMembers().last(); + + adminMembershipsHelper.setRole(member, 3); + + expect(utils.notifications.success.open()).to.be.eventually.true; + }); + + it('resend invitation', async function() { + let member = adminMembershipsHelper.getMembers().last(); + + adminMembershipsHelper.sendInvitation(); + + expect(utils.notifications.success.open()).to.be.eventually.true; + }); + + it('toggle admin', async function() { + let member = adminMembershipsHelper.getMembers().last(); + let isAdmin = await adminMembershipsHelper.isAdmin(member); + + if (isAdmin) { + adminMembershipsHelper.toggleAdmin(member); + + await browser.waitForAngular(); + isAdmin = await adminMembershipsHelper.isAdmin(member); + + expect(isAdmin).not.to.be.true; + } + + adminMembershipsHelper.toggleAdmin(member); + + await browser.waitForAngular(); + + isAdmin = await adminMembershipsHelper.isAdmin(member); + + expect(isAdmin).to.be.true; + }); + +}); diff --git a/e2e/full/admin/attributes/types.e2e.js b/e2e/full/admin/attributes/types.e2e.js index afb72b75..e2c84c6f 100644 --- a/e2e/full/admin/attributes/types.e2e.js +++ b/e2e/full/admin/attributes/types.e2e.js @@ -8,7 +8,7 @@ var chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); var expect = chai.expect; -describe.only('attributes - types', function() { +describe('attributes - types', function() { before(async function(){ browser.get('http://localhost:9001/project/project-0/admin/project-values/types'); diff --git a/e2e/helpers/admin-memberships.js b/e2e/helpers/admin-memberships.js new file mode 100644 index 00000000..d4ecc384 --- /dev/null +++ b/e2e/helpers/admin-memberships.js @@ -0,0 +1,66 @@ +var utils = require('../utils'); + +var helper = module.exports; + +helper.openNewMemberLightbox = function() { + $('.header-with-actions .button-green').click(); +}; + +helper.getNewMemberLightbox = function() { + let el = $('div[tg-lb-create-members]'); + + let obj = { + el: el, + waitOpen: function() { + return utils.lightbox.open(el); + }, + waitClose: function() { + return utils.lightbox.close(el); + }, + newEmail: function(email) { + el.$$('input').last().sendKeys(email); + el.$('.add-fieldset').click(); + }, + getRows: function() { + return el.$$('.add-member-wrapper'); + }, + deleteRow: function(index) { + el.$$('.delete-fieldset').get(index).click(); + }, + submit: function() { + el.$('.submit-button').click(); + } + }; + + return obj; +}; + +helper.getMembers = function() { + return $$('.admin-membership-table .row'); +}; + +helper.isActive = function(elm) { + return utils.common.hasClass(elm, 'active'); +}; + +helper.delete = function(elm) { + elm.$('.delete').click(); +}; + +helper.isAdmin = async function(elm) { + let isAdmin = await elm.$('.row-admin input').getAttribute('checked'); + + return (isAdmin === 'true'); +}; + +helper.toggleAdmin = function(elm) { + return elm.$('.row-admin input').click(); +}; + +helper.setRole = function(elm, index) { + return elm.$(`select option:nth-child(${index})`).click(); +}; + +helper.sendInvitation = function(elm) { + $$('.pending').first().click(); +}; diff --git a/e2e/helpers/index.js b/e2e/helpers/index.js index f62771bd..e1f1e86b 100644 --- a/e2e/helpers/index.js +++ b/e2e/helpers/index.js @@ -8,3 +8,4 @@ module.exports.usDetail = require("./us-detail-helper"); module.exports.taskDetail = require("./task-detail-helper"); module.exports.adminAttributes = require("./admin-attributes-helper"); module.exports.common = require("./common-helper"); +module.exports.adminMemberships = require("./admin-memberships");