1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-06-06 17:45:26 +02:00
php-web-maker/cypress/integration/interface.test.js
2022-04-19 15:08:24 +05:30

176 lines
5.1 KiB
JavaScript

/// <reference types="cypress" />
describe('Testing interfaces', () => {
beforeEach(() => {
cy.init();
});
it('New button should create a new item if no unsaved changes present', () => {
cy.get('[data-testid=newButton]').click();
// since we haven't made any changed it should show the modal
cy.get('.modal__content').should('be.visible');
});
it('New button should ask for confirmation if unsaved changes present, when confirmed modal should pop-up', () => {
cy.get('#htmlCodeEl').type('Hello');
cy.get('[data-testid=newButton]').click();
cy.on('window:confirm', text => {
expect(text).to.contains('You have unsaved changes.');
});
cy.get('.modal__content').should('be.visible');
});
it('New button should ask for confirmation if unsaved changes present, when declined modal should not pop-up', () => {
cy.get('#htmlCodeEl').type('Hello');
cy.get('[data-testid=newButton]').click();
cy.on('window:confirm', text => {
expect(text).to.contains('You have unsaved changes.');
return false;
});
cy.get('.modal__content').should('not.exist');
});
it('Save button click should save the current work with a notification.', () => {
const sampleText = 'Hello';
cy.get('#htmlCodeEl').type(sampleText);
cy.on('window:confirm', text => {
expect(text).to.contains('Do you still want to continue saving locally?');
});
cy.get('#saveBtn').click();
cy.get('#js-alerts-container').should('be.visible');
cy.get('#js-alerts-container').contains('Auto-save enabled');
cy.then(() => {
const ls = JSON.parse(localStorage.getItem('code'));
expect(ls).to.be.not.null;
expect(ls['title']).to.contain('Untitled');
expect(ls['html']).to.eq(sampleText);
});
});
it('Cmd + S (Save) should save the current work with a notification.', () => {
const sampleText = 'Hello';
cy.on('window:confirm', text => {
expect(text).to.contains('Do you still want to continue saving locally?');
});
cy.get('#htmlCodeEl').type(sampleText + '{ctrl+s}');
cy.get('#js-alerts-container').should('be.visible');
cy.get('#js-alerts-container').contains('Auto-save enabled');
cy.then(() => {
const ls = JSON.parse(localStorage.getItem('code'));
expect(ls).to.be.not.null;
expect(ls['title']).to.contain('Untitled');
expect(ls['html']).to.eq(sampleText);
});
});
it('Changing creation title should auto save in localstorage', () => {
const sampleText = 'Hello';
cy.get('#htmlCodeEl').type(sampleText);
cy.on('window:confirm', text => {
expect(text).to.contains('Do you still want to continue saving locally?');
});
cy.get('#saveBtn').click();
cy.then(() => {
const ls = JSON.parse(localStorage.getItem('code'));
expect(ls).to.be.not.null;
expect(ls['title']).to.contain('Untitled');
expect(ls['html']).to.eq(sampleText);
});
cy.get('#titleInput').clear().type('test');
cy.get('#saveBtn').click();
cy.get('#js-alerts-container').should('be.visible');
cy.get('#js-alerts-container').contains('Item saved');
cy.wait(1000); // for the localstorage to reflect the changes
cy.then(() => {
const ls = JSON.parse(localStorage.getItem('code'));
expect(ls).to.be.not.null;
expect(ls['title']).to.eq('test');
expect(ls['html']).to.eq(sampleText);
});
});
it('Clicking "OPEN" should open the saved items pane', () => {
cy.on('window:confirm', text => {
expect(text).to.contains('Do you still want to continue saving locally?');
return true;
});
const addCreation = message => {
// start with blank project
cy.get('[data-testid=newButton').click();
cy.get('[data-testid=startBlankButton]').click();
// type a message in the HTML section
cy.get('#htmlCodeEl').type('{ctrl+a}{backspace}' + message);
// type the title
cy.get('#titleInput').clear().type(message).blur();
// save it
cy.get('#saveBtn').click();
cy.wait(1000);
cy.then(() => {
const ls = JSON.parse(localStorage.getItem('code'));
console.log(ls);
expect(ls).to.be.not.null;
expect(ls['title']).to.eq(message);
expect(ls['html']).to.eq(message);
});
};
// save some projects
const messages = ['test', 'test2', 'abc'];
messages.forEach(m => addCreation(m));
// check for the saved projects
cy.get('#openItemsBtn').click();
cy.get('#js-saved-items-wrap').should('be.visible');
messages.forEach((m, index) => {
cy.get('#js-saved-items-wrap')
.children()
.eq(messages.length - index - 1)
.contains(m);
});
});
it('Selecting a library from dropdown should change URL in textarea', () => {
cy.get('[data-testid=addLibraryButton]').click();
cy.get('#externalJsTextarea').should('exist');
cy.get('#externalCssTextarea').should('exist');
const checkLibrary = (label, url, type) => {
cy.get('#js-add-library-select').select(label);
cy.get(`#external${type}Textarea`).should('contain.value', '\n' + url); // \n because every url should be in a new line
};
cy.fixture('libraries').then(data => {
data['jsLibs'].forEach(lib =>
checkLibrary(lib['label'], lib['urlPref'], 'Js')
);
});
cy.fixture('libraries').then(data => {
data['cssLibs'].forEach(lib =>
checkLibrary(lib['label'], lib['urlPref'], 'Css')
);
});
});
});