- Testing: Switch to Cypress with code coverage

- npm: Add peerDeps
This commit is contained in:
Brett Zamir
2019-11-23 21:02:51 +08:00
parent e1671cc372
commit 3736fddb7f
17 changed files with 4957 additions and 2608 deletions

View File

@@ -0,0 +1,30 @@
describe('Accessibility', function () {
beforeEach(() => {
cy.visit('/editor/svg-editor-es.html');
cy.injectAxe();
});
// https://www.npmjs.com/package/cypress-axe
it('Has no detectable a11y violations on load', () => {
// Configure aXe and test the page at initial load
cy.configureAxe({
// Todo: Reenable when have time to fix
// See https://www.deque.com/axe/axe-for-web/documentation/api-documentation/#user-content-parameters-1
rules: [{
id: 'meta-viewport',
enabled: false
}]
/*
branding: {
brand: String,
application: String
},
reporter: 'option',
checks: [Object],
rules: [Object],
locale: Object
*/
});
cy.checkA11y();
});
});

50
cypress/integration/ui.js Normal file
View File

@@ -0,0 +1,50 @@
import {
approveStorage, openMainMenu,
openEditorPreferences
} from '../support/ui-test-helper.js';
describe('UI tests', function () {
beforeEach(() => {
cy.visit('/editor/svg-editor.html');
// Ensure we test against English regardless of the original locale
approveStorage();
openEditorPreferences();
cy.get('#lang_select').select('en');
cy.get('#tool_prefs_save').click();
});
it('Editor - No parameters: Has export button', () => {
openMainMenu();
cy.get('#tool_export');
});
it('Editor - No parameters: Export button clicking; dialog opens', () => {
openMainMenu();
cy.get('#tool_export').click();
cy.get('#dialog_content select');
});
it('Editor - No parameters: Drag control point of arc path', () => {
const randomOffset = () => 2 + Math.round(10 + Math.random() * 40);
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
.type(`<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg">
<g class="layer">
<title>Layer 1</title>
<path d="m187,194a114,62 0 1 0 219,2" fill="#FF0000" stroke="#000000" stroke-width="5"/>
</g>
</svg>`);
cy.get('#tool_source_save').click();
cy.get('#svg_1').click().click();
cy.get('#pathpointgrip_0').trigger('mousedown', {which: 1})
.trigger('mousemove', randomOffset(), randomOffset())
.trigger('mouseup', {force: true});
cy.get('#pathpointgrip_1').trigger('mousedown', {which: 1})
.trigger('mousemove', randomOffset(), randomOffset())
.trigger('mouseup', {force: true});
cy.get('#svg_1[d]').should('not.contain', 'NaN');
});
});