2
js/tests/e2e/specs/browser-language.js
Normal file
2
js/tests/e2e/specs/browser-language.js
Normal file
@@ -0,0 +1,2 @@
|
||||
// Set the en-US language just in case
|
||||
export const onBeforeLoad = (window) => Object.defineProperty(window.navigator, 'language', { value: 'en-US' });
|
||||
42
js/tests/e2e/specs/dashboard.js
Normal file
42
js/tests/e2e/specs/dashboard.js
Normal file
@@ -0,0 +1,42 @@
|
||||
// https://docs.cypress.io/api/introduction/api.html
|
||||
import { onBeforeLoad } from './browser-language';
|
||||
|
||||
beforeEach(() => {
|
||||
cy.restoreLocalStorage();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cy.saveLocalStorage();
|
||||
});
|
||||
|
||||
describe('Homepage', () => {
|
||||
it('Checks the footer', () => {
|
||||
cy.visit('/', { onBeforeLoad });
|
||||
cy.get('#mobilizon').find('footer').contains('The Mobilizon Contributors');
|
||||
|
||||
cy.contains('About').should('have.attr', 'href').and('eq', 'https://joinmobilizon.org');
|
||||
|
||||
cy.contains('License').should('have.attr', 'href').and('eq', 'https://framagit.org/framasoft/mobilizon/blob/master/LICENSE');
|
||||
});
|
||||
|
||||
it('Tries to register from the hero section', () => {
|
||||
cy.visit('/', { onBeforeLoad });
|
||||
|
||||
cy.get('.hero-body').contains('Sign up').click();
|
||||
cy.url().should('include', '/register/user');
|
||||
|
||||
});
|
||||
it('Tries to register from the navbar', () => {
|
||||
cy.visit('/', { onBeforeLoad });
|
||||
|
||||
cy.get('nav.navbar').contains('Sign up').click();
|
||||
cy.url().should('include', '/register/user');
|
||||
});
|
||||
|
||||
it('Tries to connect from the navbar', () => {
|
||||
cy.visit('/', { onBeforeLoad });
|
||||
|
||||
cy.get('nav.navbar').contains('Log in').click();
|
||||
cy.url().should('include', '/login');
|
||||
});
|
||||
});
|
||||
45
js/tests/e2e/specs/login.js
Normal file
45
js/tests/e2e/specs/login.js
Normal file
@@ -0,0 +1,45 @@
|
||||
import { onBeforeLoad } from './browser-language';
|
||||
|
||||
beforeEach(() => {
|
||||
cy.restoreLocalStorage();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cy.saveLocalStorage();
|
||||
});
|
||||
|
||||
describe('Login', () => {
|
||||
it('Tests that everything is present', () => {
|
||||
cy.visit('/login', { onBeforeLoad });
|
||||
|
||||
cy.get('form .field').first().contains('label', 'Email');
|
||||
cy.get('form .field').last().contains('label', 'Password');
|
||||
cy.get('form').contains('button.button', 'Login');
|
||||
cy.get('form').contains('.control a.button', 'Forgot your password ?').click();
|
||||
cy.url().should('include', '/password-reset/send');
|
||||
cy.go('back');
|
||||
|
||||
cy.get('form').contains('.control a.button', 'Register').click();
|
||||
cy.url().should('include', '/register/user');
|
||||
|
||||
cy.go('back');
|
||||
});
|
||||
|
||||
it('Tries to login with incorrect credentials', () => {
|
||||
cy.visit('/login', { onBeforeLoad });
|
||||
cy.get('input[type=email]').type('notanemail').should('have.value', 'notanemail');
|
||||
cy.get('input[type=password]').click();
|
||||
cy.contains('button.button.is-primary.is-large', 'Login').click();
|
||||
cy.get('form .field').first().contains('p.help.is-danger', 'Please include an \'@\' in the email address.');
|
||||
cy.get('form .field').last().contains('p.help.is-danger', 'Please fill out this field.');
|
||||
});
|
||||
|
||||
it('Tries to login with invalid credentials', () => {
|
||||
cy.visit('/login', { onBeforeLoad });
|
||||
cy.get('input[type=email]').type('test@email.com').should('have.value', 'test@email.com');
|
||||
cy.get('input[type=password]').type('badPassword').should('have.value', 'badPassword');
|
||||
cy.contains('button.button.is-primary.is-large', 'Login').click();
|
||||
|
||||
cy.contains('.message.is-danger', 'User with email not found');
|
||||
});
|
||||
});
|
||||
69
js/tests/e2e/specs/register.js
Normal file
69
js/tests/e2e/specs/register.js
Normal file
@@ -0,0 +1,69 @@
|
||||
import { onBeforeLoad } from './browser-language';
|
||||
|
||||
beforeEach(() => {
|
||||
cy.restoreLocalStorage();
|
||||
cy.checkoutSession();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cy.saveLocalStorage();
|
||||
cy.dropSession();
|
||||
});
|
||||
|
||||
describe('Registration', () => {
|
||||
it('Tests that everything is present', () => {
|
||||
cy.visit('/register/user', { onBeforeLoad });
|
||||
|
||||
cy.get('form .field').first().contains('label', 'Email');
|
||||
cy.get('form .field').eq(1).contains('label', 'Password');
|
||||
|
||||
cy.get('input[type=email]').click();
|
||||
cy.get('input[type=password]').type('short').should('have.value', 'short');
|
||||
cy.get('form').contains('button.button.is-primary', 'Register');
|
||||
cy.get('form .field').first().contains('p.help.is-danger', 'Please fill out this field.');
|
||||
|
||||
cy.get('form').contains('.control a.button', 'Didn\'t receive the instructions ?').click();
|
||||
cy.url().should('include', '/resend-instructions');
|
||||
cy.go('back');
|
||||
|
||||
cy.get('form').contains('.control a.button', 'Login').click();
|
||||
cy.url().should('include', '/login');
|
||||
|
||||
cy.go('back');
|
||||
});
|
||||
|
||||
it('Tests that registration works', () => {
|
||||
cy.visit('/register/user', { onBeforeLoad });
|
||||
cy.get('input[type=email]').type('user@email.com');
|
||||
cy.get('input[type=password]').type('userPassword');
|
||||
cy.get('form').contains('button.button.is-primary', 'Register').click();
|
||||
|
||||
cy.url().should('include', '/register/profile');
|
||||
cy.get('form .field').first().contains('label', 'Username').parent().find('input').type('tester');
|
||||
cy.get('form .field').eq(2).contains('label', 'Displayed name').parent().find('input').type('tester account');
|
||||
cy.get('form .field').eq(3).contains('label', 'Description').parent().find('textarea').type('This is a test account');
|
||||
cy.get('form .field').last().contains('button', 'Create my profile').click();
|
||||
|
||||
cy.contains('article.message.is-success', 'Your account is nearly ready, tester').contains('A validation email was sent to user@email.com');
|
||||
|
||||
cy.visit('/sent_emails');
|
||||
|
||||
cy.get('iframe')
|
||||
.first()
|
||||
.iframeLoaded()
|
||||
.its('document')
|
||||
.getInDocument('a')
|
||||
.eq(1)
|
||||
.contains('Activate my account')
|
||||
.invoke('attr', 'href')
|
||||
.then(href => {
|
||||
cy.visit(href);
|
||||
});
|
||||
|
||||
// cy.url().should('include', '/validate/');
|
||||
// cy.contains('Your account is being validated');
|
||||
cy.location().should((loc) => {
|
||||
expect(loc.pathname).to.eq('/');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,14 +0,0 @@
|
||||
// For authoring Nightwatch tests, see
|
||||
// http://nightwatchjs.org/guide#usage
|
||||
|
||||
module.exports = {
|
||||
'default e2e tests': (browser) => {
|
||||
browser
|
||||
.url(process.env.VUE_DEV_SERVER_URL)
|
||||
.waitForElementVisible('#app', 5000)
|
||||
.assert.elementPresent('.hello')
|
||||
.assert.containsText('h1', 'Welcome to Your Vue.js App')
|
||||
.assert.elementCount('img', 1)
|
||||
.end();
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user