feature: user, project, channel and job offer create test flows and project, channel and job offer edit test flows
This commit is contained in:
parent
e5e2815f0d
commit
8b84de7b37
4
cypress/fixtures/admin.json
Normal file
4
cypress/fixtures/admin.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"username": "admin",
|
||||||
|
"password": "admin"
|
||||||
|
}
|
58
cypress/integration/create-channel.spec.js
Normal file
58
cypress/integration/create-channel.spec.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
|
context('Create Channel Browser Testing', () => {
|
||||||
|
let channelName = 'Test Channel ',
|
||||||
|
description = 'Test Description ';
|
||||||
|
before(() => {
|
||||||
|
cy.randomNum().then(num => {
|
||||||
|
channelName += num;
|
||||||
|
description += num;
|
||||||
|
});
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Channel Creation process', () => {
|
||||||
|
it('should login', () => cy.login());
|
||||||
|
it('should visit the channel creation screen', () => cy.naviagte('/admin/admin-circle-create'));
|
||||||
|
/*it('should enter incorrect channel data', () => {
|
||||||
|
cy.get('#admin-circle-create input[name="name"]').type('!"#$%&');
|
||||||
|
cy.get('#admin-circle-create input[name="name"]').should('have.value', '!"#$%&');
|
||||||
|
cy.get('#admin-circle-create input[name="description"]').type(description);
|
||||||
|
cy.get('#admin-circle-create input[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click on create channel button', () => {
|
||||||
|
cy.get('#admin-circle-create input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should provide errors about incorrect channel data', () => {
|
||||||
|
// TO-DO: Check for error messages
|
||||||
|
cy.get('element')
|
||||||
|
.should('contain.text', 'Error message.');
|
||||||
|
});*/
|
||||||
|
it('should enter correct channel data', () => {
|
||||||
|
cy.get('#admin-circle-create input[name="name"]').clear().type(channelName);
|
||||||
|
cy.get('#admin-circle-create input[name="name"]').should('have.value', channelName);
|
||||||
|
cy.get('#admin-circle-create input[name="description"]').clear().type(description);
|
||||||
|
cy.get('#admin-circle-create input[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click on create channel button', () => {
|
||||||
|
cy.get('#admin-circle-create input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should land on channels list screen', () => {
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/admin');
|
||||||
|
});
|
||||||
|
// Workaround - component reactivity bug
|
||||||
|
cy.reload();
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
// End workaround
|
||||||
|
});
|
||||||
|
it('should land newly created channel on channels list screen', () => {
|
||||||
|
cy.contains('solid-display-value[name="circle.name"]', channelName).should("exist");
|
||||||
|
cy.fixture('admin.json').then(admin => {
|
||||||
|
cy.contains('solid-display-value[name="username"]', admin.username).should("exist");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
64
cypress/integration/create-job-offer.spec.js
Normal file
64
cypress/integration/create-job-offer.spec.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
|
context('Create Job Offer Browser Testing', () => {
|
||||||
|
let jobDate = '',
|
||||||
|
jobTitle = 'Test Job Offer ',
|
||||||
|
description = 'Test Description ';
|
||||||
|
before(() => {
|
||||||
|
cy.nextYear(1).then(year => {
|
||||||
|
jobDate = year + '-12-31';
|
||||||
|
});
|
||||||
|
cy.randomNum().then(num => {
|
||||||
|
jobTitle += num;
|
||||||
|
description += num;
|
||||||
|
});
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Job Offer Creation process', () => {
|
||||||
|
it('should login', () => cy.login());
|
||||||
|
it('should visit the job offer creation screen', () => cy.naviagte('/job-offers/job-offers-create'));
|
||||||
|
/*it('should enter incorrect job offer data', () => {
|
||||||
|
cy.get('#job-offers-create input[name="closingDate"]').type('!"#$%&');
|
||||||
|
cy.get('#job-offers-create input[name="closingDate"]').should('have.value', '!"#$%&');
|
||||||
|
cy.get('#job-offers-create input[name="title"]').type('!"#$%&');
|
||||||
|
cy.get('#job-offers-create input[name="title"]').should('have.value', '!"#$%&');
|
||||||
|
cy.get('#job-offers-create textarea[name="description"]').type(description);
|
||||||
|
cy.get('#job-offers-create textarea[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click on create job offer button', () => {
|
||||||
|
cy.get('#job-offers-create input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should provide errors about incorrect job offer data', () => {
|
||||||
|
// TO-DO: Check for error messages
|
||||||
|
cy.get('element')
|
||||||
|
.should('contain.text', 'Error message.');
|
||||||
|
});*/
|
||||||
|
it('should enter correct job offer data', () => {
|
||||||
|
cy.get('#job-offers-create input[name="closingDate"]').clear().type(jobDate);
|
||||||
|
cy.get('#job-offers-create input[name="closingDate"]').should('have.value', jobDate);
|
||||||
|
cy.get('#job-offers-create input[name="title"]').clear().type(jobTitle);
|
||||||
|
cy.get('#job-offers-create input[name="title"]').should('have.value', jobTitle);
|
||||||
|
cy.get('#job-offers-create textarea[name="description"]').clear().type(description);
|
||||||
|
cy.get('#job-offers-create textarea[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click on create job offer button', () => {
|
||||||
|
cy.get('#job-offers-create input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should land on job offers list screen', () => {
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/job-offers');
|
||||||
|
});
|
||||||
|
// Workaround - component reactivity bug
|
||||||
|
cy.reload();
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
// End workaround
|
||||||
|
});
|
||||||
|
it('should land newly created job offer on job offers list screen', () => {
|
||||||
|
cy.contains('solid-display-value[name="title"]', jobTitle).should("exist");
|
||||||
|
cy.contains('solid-display-value[name="description"]', description).should("exist");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
64
cypress/integration/create-project.spec.js
Normal file
64
cypress/integration/create-project.spec.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
|
context('Create Project Browser Testing', () => {
|
||||||
|
let projectName = 'Test Project ',
|
||||||
|
customerName = 'Test Customer ',
|
||||||
|
description = 'Test Description ';
|
||||||
|
before(() => {
|
||||||
|
cy.randomNum().then(num => {
|
||||||
|
projectName += num;
|
||||||
|
customerName += num;
|
||||||
|
description += num;
|
||||||
|
});
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Project Creation process', () => {
|
||||||
|
it('should login', () => cy.login());
|
||||||
|
it('should visit the project creation screen', () => cy.naviagte('/admin/admin-projects/admin-project-create'));
|
||||||
|
/*it('should enter incorrect project data', () => {
|
||||||
|
cy.get('#admin-project-create input[name="customer.name"]').type('!"#$%&');
|
||||||
|
cy.get('#admin-project-create input[name="customer.name"]').should('have.value', '!"#$%&');
|
||||||
|
cy.get('#admin-project-create input[name="name"]').type('!"#$%&');
|
||||||
|
cy.get('#admin-project-create input[name="name"]').should('have.value', '!"#$%&');
|
||||||
|
cy.get('#admin-project-create textarea[name="description"]').type(description);
|
||||||
|
cy.get('#admin-project-create textarea[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click on create project button', () => {
|
||||||
|
cy.get('#admin-project-create input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should provide errors about incorrect project data', () => {
|
||||||
|
// TO-DO: Check for error messages
|
||||||
|
cy.get('element')
|
||||||
|
.should('contain.text', 'Error message.');
|
||||||
|
});*/
|
||||||
|
it('should enter correct project data', () => {
|
||||||
|
cy.get('#admin-project-create input[name="customer.name"]').clear().type(customerName);
|
||||||
|
cy.get('#admin-project-create input[name="customer.name"]').should('have.value', customerName);
|
||||||
|
cy.get('#admin-project-create input[name="name"]').clear().type(projectName);
|
||||||
|
cy.get('#admin-project-create input[name="name"]').should('have.value', projectName);
|
||||||
|
cy.get('#admin-project-create textarea[name="description"]').clear().type(description);
|
||||||
|
cy.get('#admin-project-create textarea[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click on create project button', () => {
|
||||||
|
cy.get('#admin-project-create input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should land on projects list screen', () => {
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/admin/admin-projects');
|
||||||
|
});
|
||||||
|
// Workaround - component reactivity bug
|
||||||
|
cy.reload();
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
// End workaround
|
||||||
|
});
|
||||||
|
it('should land newly created project on projects list screen', () => {
|
||||||
|
cy.contains('solid-display-value[name="project.name"]', projectName).should("exist");
|
||||||
|
cy.fixture('admin.json').then(admin => {
|
||||||
|
cy.contains('solid-display-value[name="username"]', admin.username).should("exist");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -1,45 +1,26 @@
|
|||||||
/// <reference types="Cypress" />
|
/// <reference types="Cypress" />
|
||||||
/* globals cy, expect */
|
/* globals cy, expect */
|
||||||
|
|
||||||
context('Creat User Browser Testing', () => {
|
context('Create User Browser Testing', () => {
|
||||||
const firstName = 'First',
|
let firstName = 'First ',
|
||||||
lastName = 'Last',
|
lastName = 'Last ',
|
||||||
username = 'testuser_creation_' + Math.floor(1000 + Math.random() * 9000),
|
username = 'testuser_creation_',
|
||||||
email = username + '@testemail.com';
|
email = '';
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.clearLocalStorage({ domain: null});
|
cy.randomNum().then(num => {
|
||||||
|
firstName += num;
|
||||||
|
lastName += num;
|
||||||
|
username += num;
|
||||||
|
email = username + '@testemail.com';
|
||||||
|
});
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
cy.clearCookies({ domain: null });
|
cy.clearCookies({ domain: null });
|
||||||
});
|
});
|
||||||
it('visit the homepage', () => {
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
cy.visit('/');
|
|
||||||
});
|
|
||||||
it('should await for an user login', () => {
|
|
||||||
cy.location().should((loc) => {
|
|
||||||
expect(loc.pathname).to.eq('/auth/login/');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
describe('User Creation process', () => {
|
describe('User Creation process', () => {
|
||||||
it('should login', () => {
|
it('should login', () => cy.login());
|
||||||
cy.get('#id_username').type('admin');
|
it('should visit the user creation screen', () => cy.naviagte('/admin/admin-users/admin-users-create'));
|
||||||
cy.get('#id_username').should('have.value', 'admin');
|
/*it('should enter incorrect user data', () => {
|
||||||
cy.get('#id_password').type('admin');
|
|
||||||
cy.get('#id_password').should('have.value', 'admin');
|
|
||||||
cy.get('.connection-btn').click();
|
|
||||||
cy.get('.accept-button').click();
|
|
||||||
cy.location().should((loc) => {
|
|
||||||
expect(loc.pathname).to.eq('/');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it('should visit the user creation screen', () => {
|
|
||||||
cy.visit('/admin/admin-users/admin-users-create');
|
|
||||||
cy.location().should((loc) => {
|
|
||||||
expect(loc.pathname).to.eq('/admin/admin-users/admin-users-create');
|
|
||||||
});
|
|
||||||
// Workaround - seems to be a bug when accessing the route directly
|
|
||||||
cy.get('.accept-button').click();
|
|
||||||
// End workaround
|
|
||||||
});
|
|
||||||
/*it('should enter erroneous user data and submit', () => {
|
|
||||||
cy.get('#admin-users-create input[name="first_name"]').type(firstName);
|
cy.get('#admin-users-create input[name="first_name"]').type(firstName);
|
||||||
cy.get('#admin-users-create input[name="first_name"]').should('have.value', firstName);
|
cy.get('#admin-users-create input[name="first_name"]').should('have.value', firstName);
|
||||||
cy.get('#admin-users-create input[name="last_name"]').type(lastName);
|
cy.get('#admin-users-create input[name="last_name"]').type(lastName);
|
||||||
@ -52,12 +33,12 @@ context('Creat User Browser Testing', () => {
|
|||||||
it('should click on create user button', () => {
|
it('should click on create user button', () => {
|
||||||
cy.get('#admin-users-create input[type="submit"]').click();
|
cy.get('#admin-users-create input[type="submit"]').click();
|
||||||
});
|
});
|
||||||
it('should provide errors about erroneous user data', () => {
|
it('should provide errors about incorrect user data', () => {
|
||||||
// TO-DO: Check for error messages
|
// TO-DO: Check for error messages
|
||||||
cy.get('element')
|
cy.get('element')
|
||||||
.should('contain.text', 'Error message.');
|
.should('contain.text', 'Error message.');
|
||||||
});*/
|
});*/
|
||||||
it('should enter user data and submit', () => {
|
it('should enter correct user data', () => {
|
||||||
cy.get('#admin-users-create input[name="first_name"]').clear().type(firstName);
|
cy.get('#admin-users-create input[name="first_name"]').clear().type(firstName);
|
||||||
cy.get('#admin-users-create input[name="first_name"]').should('have.value', firstName);
|
cy.get('#admin-users-create input[name="first_name"]').should('have.value', firstName);
|
||||||
cy.get('#admin-users-create input[name="last_name"]').clear().type(lastName);
|
cy.get('#admin-users-create input[name="last_name"]').clear().type(lastName);
|
||||||
@ -75,5 +56,9 @@ context('Creat User Browser Testing', () => {
|
|||||||
expect(loc.pathname).to.eq('/admin/admin-users');
|
expect(loc.pathname).to.eq('/admin/admin-users');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
it('should land newly created user on users list screen', () => {
|
||||||
|
cy.contains('solid-display-value[name="name"]', firstName + ' ' + lastName).should("exist");
|
||||||
|
cy.contains('solid-display-value[name="username"]', username).should("exist");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
58
cypress/integration/edit-channel.spec.js
Normal file
58
cypress/integration/edit-channel.spec.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
|
context('Edit Channel Browser Testing', () => {
|
||||||
|
let channelName = 'Edited Test Channel ',
|
||||||
|
description = 'Edited Test Description ',
|
||||||
|
menuQuery = [
|
||||||
|
'solid-display.circle-tab',
|
||||||
|
'solid-display:last-child',
|
||||||
|
'solid-display[order-by="name"]'
|
||||||
|
];
|
||||||
|
before(() => {
|
||||||
|
cy.randomNum().then(num => {
|
||||||
|
channelName += num;
|
||||||
|
description += num;
|
||||||
|
});
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Channel Edition process', () => {
|
||||||
|
it('should login', () => cy.login());
|
||||||
|
it('should visit the channel list screen', () => cy.naviagte('/admin'));
|
||||||
|
it('should visit the last channel edit screen', () => {
|
||||||
|
cy.get(menuQuery.join(' '))
|
||||||
|
.invoke('attr', 'data-src')
|
||||||
|
.then(url => cy.encodeUrl(url).then(id => {
|
||||||
|
cy.naviagte('/circle/@' + id + '/circle-information/circle-edit');
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
it('should enter new channel data', () => {
|
||||||
|
cy.get('#circle-edit input[name="name"]').clear().type(channelName);
|
||||||
|
cy.get('#circle-edit input[name="name"]').should('have.value', channelName);
|
||||||
|
cy.get('#circle-edit input[name="description"]').clear().type(description);
|
||||||
|
cy.get('#circle-edit input[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click button to save the channel', () => {
|
||||||
|
cy.get('#circle-edit input[value="Enregistrer"]').click();
|
||||||
|
});
|
||||||
|
it('should land on channel information screen', () => {
|
||||||
|
cy.get(menuQuery.join(' '))
|
||||||
|
.invoke('attr', 'data-src')
|
||||||
|
.then(url => cy.encodeUrl(url).then(id => {
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/circle/@' + id + '/circle-information');
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
// Workaround - component reactivity bug
|
||||||
|
cy.reload();
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
// End workaround
|
||||||
|
});
|
||||||
|
it('should show edited channel data on channel information screen', () => {
|
||||||
|
cy.contains('solid-display-value[name="name"]', channelName).should("exist");
|
||||||
|
cy.contains('solid-display-value[name="description"]', description).should("exist");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
59
cypress/integration/edit-job-offer.spec.js
Normal file
59
cypress/integration/edit-job-offer.spec.js
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
|
context('Edit Job Offer Browser Testing', () => {
|
||||||
|
let jobDate = '',
|
||||||
|
jobTitle = 'Edited Test Job Offer ',
|
||||||
|
description = 'Edited Test Description ',
|
||||||
|
menuQuery = [
|
||||||
|
'solid-display.job-board__list',
|
||||||
|
'solid-display:last-child'
|
||||||
|
];
|
||||||
|
before(() => {
|
||||||
|
cy.nextYear(2).then(year => {
|
||||||
|
jobDate = year + '-12-31';
|
||||||
|
});
|
||||||
|
cy.randomNum().then(num => {
|
||||||
|
jobTitle += num;
|
||||||
|
description += num;
|
||||||
|
});
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Job Offer Edition process', () => {
|
||||||
|
it('should login', () => cy.login());
|
||||||
|
it('should visit the job offers list screen', () => cy.naviagte('/job-offers'));
|
||||||
|
it('should visit the last project edit screen', () => {
|
||||||
|
cy.get(menuQuery.join(' '))
|
||||||
|
.invoke('attr', 'data-src')
|
||||||
|
.then(url => cy.encodeUrl(url).then(id => {
|
||||||
|
cy.naviagte('/job-offers/job-offers-edit/@' + id);
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
it('should enter new job offer data', () => {
|
||||||
|
cy.get('#job-offers-edit input[name="closingDate"]').clear().type(jobDate);
|
||||||
|
cy.get('#job-offers-edit input[name="closingDate"]').should('have.value', jobDate);
|
||||||
|
cy.get('#job-offers-edit input[name="title"]').clear().type(jobTitle);
|
||||||
|
cy.get('#job-offers-edit input[name="title"]').should('have.value', jobTitle);
|
||||||
|
cy.get('#job-offers-edit textarea[name="description"]').clear().type(description);
|
||||||
|
cy.get('#job-offers-edit textarea[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click button to save the job offer', () => {
|
||||||
|
cy.get('#job-offers-edit input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should land on job offers list screen', () => {
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/job-offers');
|
||||||
|
});
|
||||||
|
// Workaround - component reactivity bug
|
||||||
|
cy.reload();
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
// End workaround
|
||||||
|
});
|
||||||
|
it('should show edited project data on project information screen', () => {
|
||||||
|
cy.contains('solid-display-value[name="title"]', jobTitle).should("exist");
|
||||||
|
cy.contains('solid-display-value[name="description"]', description).should("exist");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
62
cypress/integration/edit-project.spec.js
Normal file
62
cypress/integration/edit-project.spec.js
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
|
context('Edit Project Browser Testing', () => {
|
||||||
|
let projectName = 'Edited Test Project ',
|
||||||
|
customerName = 'Edited Test Customer ',
|
||||||
|
description = 'Edited Test Description ',
|
||||||
|
menuQuery = [
|
||||||
|
'solid-display.project-tab',
|
||||||
|
'solid-display:last-child',
|
||||||
|
'solid-display[order-by="customer.name"]'
|
||||||
|
];
|
||||||
|
before(() => {
|
||||||
|
cy.randomNum().then(num => {
|
||||||
|
projectName += num;
|
||||||
|
customerName += num;
|
||||||
|
description += num;
|
||||||
|
});
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Project Edition process', () => {
|
||||||
|
it('should login', () => cy.login());
|
||||||
|
it('should visit the project list screen', () => cy.naviagte('/admin/admin-projects'));
|
||||||
|
it('should visit the last project edit screen', () => {
|
||||||
|
cy.get(menuQuery.join(' '))
|
||||||
|
.invoke('attr', 'data-src')
|
||||||
|
.then(url => cy.encodeUrl(url).then(id => {
|
||||||
|
cy.naviagte('/project/@' + id + '/project-information/project-edit');
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
it('should enter new project data', () => {
|
||||||
|
cy.get('#project-edit input[name="customer.name"]').clear().type(customerName);
|
||||||
|
cy.get('#project-edit input[name="customer.name"]').should('have.value', customerName);
|
||||||
|
cy.get('#project-edit input[name="name"]').clear().type(projectName);
|
||||||
|
cy.get('#project-edit input[name="name"]').should('have.value', projectName);
|
||||||
|
cy.get('#project-edit textarea[name="description"]').clear().type(description);
|
||||||
|
cy.get('#project-edit textarea[name="description"]').should('have.value', description);
|
||||||
|
});
|
||||||
|
it('should click button to save the project', () => {
|
||||||
|
cy.get('#project-edit input[value="Enregistrer"]').click();
|
||||||
|
});
|
||||||
|
it('should land on project information screen', () => {
|
||||||
|
cy.get(menuQuery.join(' '))
|
||||||
|
.invoke('attr', 'data-src')
|
||||||
|
.then(url => cy.encodeUrl(url).then(id => {
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/project/@' + id + '/project-information');
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
// Workaround - component reactivity bug
|
||||||
|
cy.reload();
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
// End workaround
|
||||||
|
});
|
||||||
|
it('should show edited project data on project information screen', () => {
|
||||||
|
cy.contains('solid-display-value[name="customer.name"]', customerName).should("exist");
|
||||||
|
cy.contains('solid-display-value[name="name"]', projectName).should("exist");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
35
cypress/integration/retire-project.spec.js
Normal file
35
cypress/integration/retire-project.spec.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
|
context('Retire Project Browser Testing', () => {
|
||||||
|
before(() => {
|
||||||
|
cy.clearLocalStorage({ domain: null });
|
||||||
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Project Retirement process', () => {
|
||||||
|
it('should login', () => cy.login());
|
||||||
|
it('should visit the project creation screen', () => cy.naviagte('/admin/admin-projects'));
|
||||||
|
it('should visit the last project edit screen', () => {
|
||||||
|
cy.get('solid-display[widget-project="hubl-menu-fix-url-project"][fields="project"]:last-child solid-display')
|
||||||
|
.invoke('attr', 'data-src')
|
||||||
|
.then(url => cy.encodeUrl(url).then(id => {
|
||||||
|
cy.naviagte('/project/@' + id + '/project-information/project-edit');
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
it('should click button to retire the project', () => {
|
||||||
|
cy.scrollTo('bottom');
|
||||||
|
cy.get('solid-delete[data-label="Retirer"] button').click();
|
||||||
|
});
|
||||||
|
it('should stay on project edit screen', () => {
|
||||||
|
cy.get('solid-display[widget-project="hubl-menu-fix-url-project"]:last-child solid-display')
|
||||||
|
.invoke('attr', 'data-src')
|
||||||
|
.then(url => cy.encodeUrl(url).then(id => {
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/project/@' + id + '/project-information/project-edit');
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
// TO-DO: ceraify what needs to happen after and do the checks
|
||||||
|
});
|
||||||
|
});
|
@ -1,43 +1,36 @@
|
|||||||
/// <reference types="Cypress" />
|
/// <reference types="Cypress" />
|
||||||
|
/* globals cy, expect */
|
||||||
|
|
||||||
context('Browser testing', () => {
|
context('Browser testing', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.clearLocalStorage({ domain: null});
|
cy.clearLocalStorage({ domain: null});
|
||||||
cy.clearCookies({ domain: null });
|
cy.clearCookies({ domain: null });
|
||||||
|
});
|
||||||
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
|
describe('Login process', () => {
|
||||||
|
it('should write "admin" on username field and "password" on password field', () => {
|
||||||
|
cy.get('#id_username').type('admin');
|
||||||
|
cy.get('#id_username').should('have.value', 'admin');
|
||||||
|
cy.get('#id_password').type('password');
|
||||||
|
cy.get('#id_password').should('have.value', 'password');
|
||||||
});
|
});
|
||||||
it('visit the homepage', () => {
|
it('should click on login button', () => {
|
||||||
cy.visit('/');
|
cy.get(':nth-child(1) > .flex-column > [type="submit"]').click();
|
||||||
});
|
});
|
||||||
it('should await for an user login', () => {
|
it('should provide an error, username and password mismatch.', () => {
|
||||||
|
cy.get('.error').should('contain.text', 'Ton nom d\'utilisateur et ton mot de passe ne correspondent pas. Réessaye.');
|
||||||
|
});
|
||||||
|
it('should write "admin" on password field then press the login button', () => {
|
||||||
|
cy.get('#id_password').type('admin');
|
||||||
|
cy.get('#id_password').should('have.value', 'admin');
|
||||||
|
cy.get(':nth-child(1) > .flex-column > [type="submit"]').click();
|
||||||
|
});
|
||||||
|
it('should ask for user permission to access their datas.', () => {
|
||||||
cy.location().should((loc) => {
|
cy.location().should((loc) => {
|
||||||
expect(loc.pathname).to.eq('/auth/login/');
|
expect(loc.pathname).to.eq('/authorize');
|
||||||
});
|
});
|
||||||
|
cy.get('.accept-button').click();
|
||||||
});
|
});
|
||||||
describe('Login process', () => {
|
|
||||||
it('should write "admin" on username field and "password" on password field', () => {
|
|
||||||
cy.get('#id_username').type('admin');
|
|
||||||
cy.get('#id_username').should('have.value', 'admin');
|
|
||||||
cy.get('#id_password').type('password');
|
|
||||||
cy.get('#id_password').should('have.value', 'password');
|
|
||||||
});
|
|
||||||
it('should click on login button', () => {
|
|
||||||
cy.get(':nth-child(1) > .flex-column > [type="submit"]').click();
|
|
||||||
});
|
|
||||||
it('should provide an error, username and password mismatch.', () => {
|
|
||||||
cy.get('.error').should('contain.text', 'Ton nom d\'utilisateur et ton mot de passe ne correspondent pas. Réessaye.')
|
|
||||||
});
|
|
||||||
it('should write "admin" on password field then press the login button', () => {
|
|
||||||
cy.get('#id_password').type('admin');
|
|
||||||
cy.get('#id_password').should('have.value', 'admin');
|
|
||||||
cy.get(':nth-child(1) > .flex-column > [type="submit"]').click();
|
|
||||||
});
|
|
||||||
it('should ask for user permission to access their datas.', () => {
|
|
||||||
cy.location().should((loc) => {
|
|
||||||
expect(loc.pathname).to.eq('/authorize')
|
|
||||||
});
|
|
||||||
cy.get('.accept-button').click();
|
|
||||||
});
|
|
||||||
// it('should redirect the user to the app.', () => {
|
// it('should redirect the user to the app.', () => {
|
||||||
// cy.get('.accept-button').click();
|
// cy.get('.accept-button').click();
|
||||||
// cy.location().should((loc) => {
|
// cy.location().should((loc) => {
|
||||||
@ -103,6 +96,5 @@ context('Browser testing', () => {
|
|||||||
// expect(loc.pathname).to.eq('/auth/login/');
|
// expect(loc.pathname).to.eq('/auth/login/');
|
||||||
// });
|
// });
|
||||||
// });
|
// });
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
@ -1,27 +1,24 @@
|
|||||||
/// <reference types="Cypress" />
|
/// <reference types="Cypress" />
|
||||||
/* globals cy, expect */
|
/* globals cy */
|
||||||
|
|
||||||
context('Signup Browser Testing', () => {
|
context('Signup Browser Testing', () => {
|
||||||
const username = 'testuser_signup_' + Math.floor(1000 + Math.random() * 9000),
|
let username = 'testuser_creation_',
|
||||||
email = username + '@testemail.com',
|
email = '',
|
||||||
password = 'testpwd';
|
password = 'testpwd';
|
||||||
before(() => {
|
before(() => {
|
||||||
|
cy.randomNum().then(num => {
|
||||||
|
username += num;
|
||||||
|
email = username + '@testemail.com';
|
||||||
|
});
|
||||||
cy.clearLocalStorage({ domain: null });
|
cy.clearLocalStorage({ domain: null });
|
||||||
cy.clearCookies({ domain: null });
|
cy.clearCookies({ domain: null });
|
||||||
});
|
});
|
||||||
it('visit the homepage', () => {
|
it('should visit user login screen', () => cy.userLogin());
|
||||||
cy.visit('/');
|
|
||||||
});
|
|
||||||
it('should await for an user login', () => {
|
|
||||||
cy.location().should((loc) => {
|
|
||||||
expect(loc.pathname).to.eq('/auth/login/');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
describe('Signup process', () => {
|
describe('Signup process', () => {
|
||||||
it('should click on signup page link', () => {
|
it('should click on signup page link', () => {
|
||||||
cy.get('.sib-link.sib-register-link').click();
|
cy.get('.sib-link.sib-register-link').click();
|
||||||
});
|
});
|
||||||
it('should write erroneous user data', () => {
|
it('should write incorrect user data', () => {
|
||||||
cy.get('#id_username').type('!"#$%&');
|
cy.get('#id_username').type('!"#$%&');
|
||||||
cy.get('#id_username').should('have.value', '!"#$%&');
|
cy.get('#id_username').should('have.value', '!"#$%&');
|
||||||
cy.get('#id_email').type(email.split('.')[0]);
|
cy.get('#id_email').type(email.split('.')[0]);
|
||||||
@ -34,7 +31,7 @@ context('Signup Browser Testing', () => {
|
|||||||
it('should click on signup button', () => {
|
it('should click on signup button', () => {
|
||||||
cy.get('.sib-registration-btn').click();
|
cy.get('.sib-registration-btn').click();
|
||||||
});
|
});
|
||||||
it('should provide errors about erroneous user data', () => {
|
it('should provide errors about incorrect user data', () => {
|
||||||
cy.get('tbody tr:nth-child(1) ul.errorlist li')
|
cy.get('tbody tr:nth-child(1) ul.errorlist li')
|
||||||
.should('contain.text', 'Enter a valid username. This value may contain only letters, numbers, and ./+/-/_ characters.');
|
.should('contain.text', 'Enter a valid username. This value may contain only letters, numbers, and ./+/-/_ characters.');
|
||||||
cy.get('tbody tr:nth-child(2) ul.errorlist li')
|
cy.get('tbody tr:nth-child(2) ul.errorlist li')
|
||||||
@ -55,5 +52,9 @@ context('Signup Browser Testing', () => {
|
|||||||
it('should click on signup button', () => {
|
it('should click on signup button', () => {
|
||||||
cy.get('.sib-registration-btn').click();
|
cy.get('.sib-registration-btn').click();
|
||||||
});
|
});
|
||||||
|
it('should show email confirmation dialog', () => {
|
||||||
|
cy.contains('h1.text-center', 'Un e-mail d\'activation a été envoyé.').should("exist");
|
||||||
|
cy.contains('p.text-center', 'Vérifie ta boite mail et clique sur le lien pour activer ton compte.').should("exist");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -23,3 +23,58 @@
|
|||||||
//
|
//
|
||||||
// -- This will overwrite an existing command --
|
// -- This will overwrite an existing command --
|
||||||
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
||||||
|
|
||||||
|
/* globals Cypress, cy, expect */
|
||||||
|
|
||||||
|
Cypress.Commands.add('login', () => {
|
||||||
|
cy.fixture('admin.json').then(admin => {
|
||||||
|
cy.get('#id_username').type(admin.username);
|
||||||
|
cy.get('#id_username').should('have.value', admin.username);
|
||||||
|
cy.get('#id_password').type(admin.password);
|
||||||
|
cy.get('#id_password').should('have.value', admin.password);
|
||||||
|
cy.get('.connection-btn').click();
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('naviagte', route => {
|
||||||
|
cy.visit(route);
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq(route);
|
||||||
|
});
|
||||||
|
// Workaround - seems to be a bug when accessing the route directly
|
||||||
|
cy.get('.accept-button').click();
|
||||||
|
cy.wait(2000);
|
||||||
|
// End workaround
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('userLogin', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
cy.location().should((loc) => {
|
||||||
|
expect(loc.pathname).to.eq('/auth/login/');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('encodeUrl', url => {
|
||||||
|
const encodeIdReplacement = [
|
||||||
|
['~', '~~'],
|
||||||
|
['.', '~!'],
|
||||||
|
[':', '~@'],
|
||||||
|
['/', '~_'],
|
||||||
|
];
|
||||||
|
encodeIdReplacement.forEach(([char, repl]) => {
|
||||||
|
url = url.split(char).join(repl);
|
||||||
|
});
|
||||||
|
return url;
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('randomNum', () => {
|
||||||
|
return Math.floor(1000 + Math.random() * 9000);
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('nextYear', increment => {
|
||||||
|
return new Date().getFullYear() + ( increment || 1 );
|
||||||
|
});
|
||||||
|
@ -13,10 +13,12 @@
|
|||||||
// https://on.cypress.io/configuration
|
// https://on.cypress.io/configuration
|
||||||
// ***********************************************************
|
// ***********************************************************
|
||||||
|
|
||||||
// Import commands.js using ES2015 syntax:
|
/* globals Cypress */
|
||||||
import './commands'
|
|
||||||
|
|
||||||
//require('cypress-terminal-report').installSupport();
|
// Import commands.js using ES2015 syntax:
|
||||||
|
import './commands';
|
||||||
|
|
||||||
|
require('cypress-terminal-report').installSupport();
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
// Alternatively you can use CommonJS syntax:
|
||||||
// require('./commands')
|
// require('./commands')
|
||||||
@ -27,4 +29,9 @@ Cypress.on('uncaught:exception', (err, runnable) => {
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
Cypress.on('fail', () => Cypress.runner.abort())
|
Cypress.on('fail', (error) => {
|
||||||
|
console.log(error);
|
||||||
|
if ( typeof Cypress.runner.abort == 'function' ) {
|
||||||
|
Cypress.runner.abort();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user