diff --git a/frontend/cypress.json b/frontend/cypress.json index 26ebc5496ea0e949f28565a14054331689ef8c51..935bb3a285f856f90155003482ad40b1bb10668e 100644 --- a/frontend/cypress.json +++ b/frontend/cypress.json @@ -1,3 +1,3 @@ { - "ignoreTestFiles": "**/examples/*" + "ignoreTestFiles": ["**/examples/*"] } diff --git a/frontend/cypress/integration/register_spec.js b/frontend/cypress/integration/register.spec.js similarity index 87% rename from frontend/cypress/integration/register_spec.js rename to frontend/cypress/integration/register.spec.js index a8aaef8ad5000149528cc98d0ea0cd52a5024dcf..2c9c12a9b8a2e12dd3802c8882eb2966ea35a490 100644 --- a/frontend/cypress/integration/register_spec.js +++ b/frontend/cypress/integration/register.spec.js @@ -103,6 +103,51 @@ describe('boundary tests registration page', () => { }); }); + // *** EMAIL *** + it('alert should be visible if email is invalid', () => { + const username = randomUsername(); + cy.get('[name="username"]') + .type(username); + + cy.get('[name="password"]') + .type('testpassword'); + + cy.get('[name="password1"]') + .type('testpassword'); + + cy.get('[name="email"]') + .type(generateStringWithLengthX(69)); + + cy.get('#btn-create-account') + .click(); + + cy.get('.alert').should('be.visible'); + }); + + /** + * This test should not pass, but since the format is correct it does + */ + it('user should be authenticated if email has a valid format', () => { + const username = randomUsername(); + cy.get('[name="username"]') + .type(username); + + cy.get('[name="password"]') + .type('testpassword'); + + cy.get('[name="password1"]') + .type('testpassword'); + + cy.get('[name="email"]') + .type(generateStringWithLengthX(50) + '@' + generateStringWithLengthX(15) + '.' + generateStringWithLengthX(4)); + + cy.get('#btn-create-account') + .click() + .should(() => { + expect(sessionStorage.getItem('username')).to.eq(username); + }); + }); + // *** PASSWORD *** it('alert should be visible if password is empty', () => { cy.get('[name="username"]') diff --git a/frontend/cypress/integration/workout.spec.js b/frontend/cypress/integration/workout.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..1829283bc667514bd42503d1ad6c59ee8932e445 --- /dev/null +++ b/frontend/cypress/integration/workout.spec.js @@ -0,0 +1,169 @@ +const generateStringWithLengthX = (x) => { + let longString = ''; + for(let i = 0; i < x; i++) { + longString += 'a'; + } + + return longString; +} + +const randomUsername = () => { + return Math.random().toString(36).substring(7); +} + +describe('boundary tests workout page', () => { + before(() => { + cy.visit('../../www/register.html'); + + username = randomUsername(); + cy.get('[name="username"]') + .type(username); + + cy.get('[name="password"]') + .type('testpassword'); + + cy.get('[name="password1"]') + .type('testpassword'); + + cy.get('#btn-create-account') + .click() + .wait(1000) + .then(() => { + cy.get('#navbarNavAltMarkup') + .get('#nav-exercises') + .click() + .then(() => { + cy.get('#btn-create-exercise') + .click() + .then(() => { + cy.get('#inputName') + .type(generateStringWithLengthX(10)); + + cy.get('#inputDescription') + .type(generateStringWithLengthX(10)); + + cy.get('#inputUnit') + .type('10'); + + cy.get('#btn-ok-exercise') + .click(); + }); + }); + }); + }); + + let username = ''; + beforeEach(() => { + cy.visit('../../www/register.html'); + + username = randomUsername(); + cy.get('[name="username"]') + .type(username); + + cy.get('[name="password"]') + .type('testpassword'); + + cy.get('[name="password1"]') + .type('testpassword'); + + cy.get('#btn-create-account') + .click() + .then(() => { + cy.get('#btn-create-workout') + .click(); + }); + }); + + it('alert should be visible if name is longer than 100 characters', () => { + cy.get('#inputName') + .type(generateStringWithLengthX(109)); + + cy.get('#inputDateTime') + .type('2021-03-11T10:00') + + cy.get('#inputNotes') + .type(generateStringWithLengthX(10)); + + cy.get('#btn-ok-workout') + .click(); + + cy.get('.alert') + .should('be.visible'); + }); + + it('alert should be visible if name is empty', () => { + cy.get('#inputDateTime') + .type('2021-03-11T10:00') + + cy.get('#inputNotes') + .type(generateStringWithLengthX(10)); + + cy.get('#btn-ok-workout') + .click(); + + cy.get('.alert') + .should('be.visible'); + }); + + it('owner should be readonly', () => { + cy.get('#inputOwner') + .should('have.attr', 'readonly') + }); + + it('owner should equal current username', () => { + cy.get('#inputOwner') + .should('have.value', username); + }); + + it('visibility should have three options with pre-defined values', () => { + cy.get('[name="visibility"]') + .find('option') + .should('have.length', 3); + + cy.get('[name="visibility"]') + .select('Public') + .should('have.value', 'PU'); + + cy.get('[name="visibility"]') + .select('Coach') + .should('have.value', 'CO'); + + cy.get('[name="visibility"]') + .select('Private') + .should('have.value', 'PR'); + }); + + it('alert should be visible if notes are empty', () => { + cy.get('#inputName') + .type(generateStringWithLengthX(10)); + + cy.get('#inputDateTime') + .type('2021-03-11T10:00') + + cy.get('#btn-ok-workout') + .click(); + + cy.get('.alert') + .should('be.visible'); + }); + + it('alert should be visible if exercise has no data', () => { + cy.get('#inputName') + .type(generateStringWithLengthX(10)); + + cy.get('#inputDateTime') + .type('2021-03-11T10:00') + + cy.get('#inputNotes') + .type(generateStringWithLengthX(10)); + + cy.get('[name="type"]') + .select(cy.get('[name="type"]').first().invoke('val')); + + cy.get('#btn-ok-workout') + .click(); + + cy.get('.alert') + .should('be.visible'); + }); +});