diff --git a/cypress/e2e/projectsModule/projectsModuleUsingPOM.cy.js b/cypress/e2e/projectsModule/projectsModuleUsingPOM.cy.js index a56d898..05024dc 100644 --- a/cypress/e2e/projectsModule/projectsModuleUsingPOM.cy.js +++ b/cypress/e2e/projectsModule/projectsModuleUsingPOM.cy.js @@ -22,4 +22,13 @@ describe('Verifying Add Project functionality of projects module', function(){ }) }) + it('Create new project in projects module with non-empty fields', function() { + const randomGeneratedName = getRandomString() + addProjectPO.typeProjectName(randomGeneratedName) + addProjectPO.selectClientName('Jane Doe') + addProjectPO.clickAddProjectButton() + + //TODOS make an assertion + }) + }) \ No newline at end of file diff --git a/cypress/page_objects/projectsModulePO/addProject_PO.js b/cypress/page_objects/projectsModulePO/addProject_PO.js index 48ae300..5ca4834 100644 --- a/cypress/page_objects/projectsModulePO/addProject_PO.js +++ b/cypress/page_objects/projectsModulePO/addProject_PO.js @@ -1,5 +1,10 @@ class addProjectPO{ elements = { + projectName : () => cy.get('[data-cy="addProjectname"]'), + clientName : () => cy.get('#client-id'), + billableKey : () => cy.get('[data-cy="toggleBillable"]'), + addProject : () => cy.get('[data-cy="newProjectCreateButton"]'), + validationError : () => cy.get('.alert-message'), searchField : () => cy.get('.topnav input') } @@ -8,6 +13,34 @@ class addProjectPO{ cy.url().should('eq', 'https://frontendbootcamp.proshore.eu/projects') } + verifyEmptyValidation(name){ + if(name === 'project') { + this.elements.projectName().invoke('prop', 'validationMessage') + .should('equal', 'Please fill out this field.') + } + if(name == 'client'){ + this.elements.clientName().invoke('prop', 'validationMessage') + .should('equal', 'Please select an item in the list.') + } + } + + typeProjectName(projectName){ + this.elements.projectName().wait(1000).type(projectName) + } + + selectClientName(clientName){ + this.elements.clientName().select(clientName) + } + + checkbillableKeyFunctionality(){ + this.elements.billableKey().should('have.attr', 'title', 'Billable') + this.elements.billableKey().click().should('have.attr', 'title', 'Non billable') + this.elements.billableKey().click().should('have.attr', 'title', 'Billable') + } + + clickAddProjectButton(){ + this.elements.addProject().contains('ADD PROJECT').click() + } } module.exports = new addProjectPO(); \ No newline at end of file