joomla-cypress
Version:
Helpers for using Cypress with Joomla for testing
164 lines (127 loc) • 4.55 kB
JavaScript
const userCommands = () => {
/**
* Do administrator login
*
* @memberof cy
* @method doAdministratorLogin
* @param {string} user
* @param {string} password
* @param {boolean} useSnapshot
* @returns Chainable
*/
const doAdministratorLogin = (user, password, useSnapshot = true) => {
user = user ? user : Cypress.env('username')
password = password ? password : Cypress.env('password')
cy.log('**Do administrator login**')
cy.log('User: ' + user)
cy.log('Password: ' + password)
if (useSnapshot) {
return cy.session([user, password, 'back'], () => doAdministratorLogin(user, password, false), { cacheAcrossSpecs: true })
}
cy.visit('administrator/index.php')
cy.get('#mod-login-username').type(user)
cy.get('#mod-login-password').type(password)
cy.get('#btn-login-submit').click()
cy.get('h1.page-title').should('contain', 'Home Dashboard')
cy.log('--Do administrator login--')
Cypress.session.clearAllSavedSessions()
}
Cypress.Commands.add('doAdministratorLogin', doAdministratorLogin)
/**
* Do administrator logout
*
* @memberof cy
* @method doAdministratorLogout
* @returns Chainable
*/
const doAdministratorLogout = () => {
cy.log('**Do administrator logout**')
cy.get('.header-item .header-profile > .dropdown-toggle').click()
cy.get('.header-item .header-profile a.dropdown-item:last-child').click()
cy.get('#mod-login-username').should('exist')
cy.log('--Do administrator logout--')
Cypress.session.clearAllSavedSessions()
}
Cypress.Commands.add('doAdministratorLogout', doAdministratorLogout)
/**
* Do frontend logout
*
* @memberof cy
* @method doFrontendLogin
* @param {string} user
* @param {string} password
* @param {boolean} useSnapshot
* @returns Chainable
*/
const doFrontendLogin = (user, password, useSnapshot = true) => {
user = user ? user : Cypress.env('username')
password = password ? password : Cypress.env('password')
cy.log('**Do frontend login**')
cy.log('User: ' + user)
cy.log('Password: ' + password)
if (useSnapshot) {
return cy.session([user, password, 'front'], () => doFrontendLogin(user, password, false), { cacheAcrossSpecs: true })
}
cy.visit('index.php?option=com_users&view=login')
cy.get('#username').type(user)
cy.get('#password').type(password)
cy.get('.com-users-login__form button[type=submit]').click()
cy.get('.mod-login-logout button[type=submit]').should('exist').should('contain', 'Log out')
cy.log('--Do frontend login--')
Cypress.session.clearAllSavedSessions()
}
Cypress.Commands.add('doFrontendLogin', doFrontendLogin)
/**
* Do frontend logout
*
* @memberof cy
* @method doFrontendLogout
* @returns Chainable
*/
const doFrontendLogout = () => {
cy.log('**Do frontend logout**')
cy.visit('index.php?option=com_users&view=login')
cy.get('.com-users-logout__form button[type=submit]').should('contain', 'Log out').click()
cy.log('--Do frontend logout--')
Cypress.session.clearAllSavedSessions()
}
Cypress.Commands.add('doFrontendLogout', doFrontendLogout)
/**
* Create a user
*
* @memberof cy
* @method createUser
* @param {string} name
* @param {string} username
* @param {string} password
* @param {string} email
* @param {string} userGroup
* @returns Chainable
*/
const createUser = (name, username, password, email, userGroup = 'Super Users') => {
cy.log('**Create a user**')
cy.log('Name: ' + name)
cy.log('Username: ' + username)
cy.log('Password: ' + password)
cy.log('Email: ' + email)
cy.log('Usergroup: ' + userGroup)
cy.visit('administrator/index.php?option=com_users')
cy.get('h1.page-title').should('contain.text', 'Users')
cy.clickToolbarButton('New')
cy.contains('button', 'Account Details').click()
cy.get('#jform_name').clear().type(name)
cy.get('#jform_username').clear().type(username)
cy.get('#jform_email').clear().type(email)
cy.get('#jform_password').clear().type(password)
cy.get('#jform_password2').clear().type(password)
cy.contains('button', 'Assigned User Groups').click()
cy.contains('#groups label', userGroup).find('input').check()
cy.clickToolbarButton('save & close')
cy.checkForSystemMessage('User saved')
cy.log('--Create a user--')
}
Cypress.Commands.add('createUser', createUser)
}
module.exports = {
userCommands
}