Skip to content

Commit

Permalink
Merge pull request #3213 from 4Science/task/main/CST-15592
Browse files Browse the repository at this point in the history
Implement e2e accessibility tests for pages in DSpace User Interface
  • Loading branch information
tdonohue authored Oct 9, 2024
2 parents b9c712c + 9e985cf commit 7611635
Show file tree
Hide file tree
Showing 41 changed files with 626 additions and 11 deletions.
3 changes: 3 additions & 0 deletions cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export default defineConfig({

// Admin account used for administrative tests
DSPACE_TEST_ADMIN_USER: '[email protected]',
DSPACE_TEST_ADMIN_USER_UUID: '335647b6-8a52-4ecb-a8c1-7ebabb199bda',
DSPACE_TEST_ADMIN_PASSWORD: 'dspace',
// Community/collection/publication used for view/edit tests
DSPACE_TEST_COMMUNITY: '0958c910-2037-42a9-81c7-dca80e3892b4',
Expand All @@ -33,6 +34,8 @@ export default defineConfig({
// Account used to test basic submission process
DSPACE_TEST_SUBMIT_USER: '[email protected]',
DSPACE_TEST_SUBMIT_USER_PASSWORD: 'dspace',
// Administrator users group
DSPACE_ADMINISTRATOR_GROUP: 'e59f5659-bff9-451e-b28f-439e7bd467e4'
},
e2e: {
// Setup our plugins for e2e tests
Expand Down
48 changes: 48 additions & 0 deletions cypress/e2e/admin-add-new-modals.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { testA11y } from 'cypress/support/utils';

describe('Admin Add New Modals', () => {
beforeEach(() => {
// Must login as an Admin for sidebar to appear
cy.visit('/login');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('Add new Community modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-new-title').click();

cy.get('a[data-test="menu.section.new_community"]').click();

// Analyze <ds-create-community-parent-selector> for accessibility
testA11y('ds-create-community-parent-selector');
});

it('Add new Collection modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-new-title').click();

cy.get('a[data-test="menu.section.new_collection"]').click();

// Analyze <ds-create-collection-parent-selector> for accessibility
testA11y('ds-create-collection-parent-selector');
});

it('Add new Item modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-new-title').click();

cy.get('a[data-test="menu.section.new_item"]').click();

// Analyze <ds-create-item-parent-selector> for accessibility
testA11y('ds-create-item-parent-selector');
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/admin-curation-tasks.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Admin Curation Tasks', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/admin/curation-tasks');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Page must first be visible
cy.get('ds-admin-curation-task').should('be.visible');
// Analyze <ds-admin-curation-task> for accessibility issues
testA11y('ds-admin-curation-task');
});
});
48 changes: 48 additions & 0 deletions cypress/e2e/admin-edit-modals.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { testA11y } from 'cypress/support/utils';

describe('Admin Edit Modals', () => {
beforeEach(() => {
// Must login as an Admin for sidebar to appear
cy.visit('/login');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('Edit Community modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-edit-title').click();

cy.get('a[data-test="menu.section.edit_community"]').click();

// Analyze <ds-edit-community-selector> for accessibility
testA11y('ds-edit-community-selector');
});

it('Edit Collection modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-edit-title').click();

cy.get('a[data-test="menu.section.edit_collection"]').click();

// Analyze <ds-edit-collection-selector> for accessibility
testA11y('ds-edit-collection-selector');
});

it('Edit Item modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-edit-title').click();

cy.get('a[data-test="menu.section.edit_item"]').click();

// Analyze <ds-edit-item-selector> for accessibility
testA11y('ds-edit-item-selector');
});
});
35 changes: 35 additions & 0 deletions cypress/e2e/admin-export-modals.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { testA11y } from 'cypress/support/utils';

describe('Admin Export Modals', () => {
beforeEach(() => {
// Must login as an Admin for sidebar to appear
cy.visit('/login');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('Export metadata modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-export-title').click();

cy.get('a[data-test="menu.section.export_metadata"]').click();

// Analyze <ds-export-metadata-selector> for accessibility
testA11y('ds-export-metadata-selector');
});

it('Export batch modal should pass accessibility tests', () => {
// Pin the sidebar open
cy.get('#sidebar-collapse-toggle').click();

// Click on entry of menu
cy.get('#admin-menu-section-export-title').click();

cy.get('a[data-test="menu.section.export_batch"]').click();

// Analyze <ds-export-batch-selector> for accessibility
testA11y('ds-export-batch-selector');
});
});
17 changes: 17 additions & 0 deletions cypress/e2e/admin-notifications-publication-claim-page.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { testA11y } from 'cypress/support/utils';

describe('Admin Notifications Publication Claim Page', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/admin/notifications/publication-claim');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {

//Page must first be visible
cy.get('ds-admin-notifications-publication-claim-page').should('be.visible');
// Analyze <ds-admin-notifications-publication-claim-page> for accessibility issues
testA11y('ds-admin-notifications-publication-claim-page');
});
});
21 changes: 21 additions & 0 deletions cypress/e2e/admin-search-page.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { testA11y } from 'cypress/support/utils';

describe('Admin Search Page', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/admin/search');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
//Page must first be visible
cy.get('ds-admin-search-page').should('be.visible');
// At least one search result should be displayed
cy.get('[data-test="list-object"]').should('be.visible');
// Click each filter toggle to open *every* filter
// (As we want to scan filter section for accessibility issues as well)
cy.get('[data-test="filter-toggle"]').click({ multiple: true });
// Analyze <ds-admin-search-page> for accessibility issues
testA11y('ds-admin-search-page');
});
});
21 changes: 21 additions & 0 deletions cypress/e2e/admin-workflow-page.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { testA11y } from 'cypress/support/utils';

describe('Admin Workflow Page', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/admin/workflow');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Page must first be visible
cy.get('ds-admin-workflow-page').should('be.visible');
// At least one search result should be displayed
cy.get('[data-test="list-object"]').should('be.visible');
// Click each filter toggle to open *every* filter
// (As we want to scan filter section for accessibility issues as well)
cy.get('[data-test="filter-toggle"]').click({ multiple: true });
// Analyze <ds-admin-workflow-page> for accessibility issues
testA11y('ds-admin-workflow-page');
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/batch-import-page.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Batch Import Page', () => {
beforeEach(() => {
// Must login as an Admin to see processes
cy.visit('/admin/batch-import');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Batch import form must first be visible
cy.get('ds-batch-import-page').should('be.visible');
// Analyze <ds-batch-import-page> for accessibility issues
testA11y('ds-batch-import-page');
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/bitstreams-format.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Bitstreams Formats', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/admin/registries/bitstream-formats');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Page must first be visible
cy.get('ds-bitstream-formats').should('be.visible');
// Analyze <ds-bitstream-formats> for accessibility issues
testA11y('ds-bitstream-formats');
});
});
31 changes: 31 additions & 0 deletions cypress/e2e/bulk-access.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { testA11y } from 'cypress/support/utils';
import { Options } from 'cypress-axe';

describe('Bulk Access', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/access-control/bulk-access');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Page must first be visible
cy.get('ds-bulk-access').should('be.visible');
// At least one search result should be displayed
cy.get('[data-test="list-object"]').should('be.visible');
// Click each filter toggle to open *every* filter
// (As we want to scan filter section for accessibility issues as well)
cy.get('[data-test="filter-toggle"]').click({ multiple: true });
// Analyze <ds-bulk-access> for accessibility issues
testA11y('ds-bulk-access', {
rules: {
// All panels are accordians & fail "aria-required-children" and "nested-interactive".
// Seem to require updating ng-bootstrap and https://github.com/DSpace/dspace-angular/issues/2216
'aria-required-children': { enabled: false },
'nested-interactive': { enabled: false },
// Card titles fail this test currently
'heading-order': { enabled: false },
},
} as Options);
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/create-eperson.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Create Eperson', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/access-control/epeople/create');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Form must first be visible
cy.get('ds-eperson-form').should('be.visible');
// Analyze <ds-eperson-form> for accessibility issues
testA11y('ds-eperson-form');
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/create-group.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Create Group', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/access-control/groups/create');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Form must first be visible
cy.get('ds-group-form').should('be.visible');
// Analyze <ds-group-form> for accessibility issues
testA11y('ds-group-form');
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/edit-eperson.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Edit Eperson', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/access-control/epeople/'.concat(Cypress.env('DSPACE_TEST_ADMIN_USER_UUID')).concat('/edit'));
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Form must first be visible
cy.get('ds-eperson-form').should('be.visible');
// Analyze <ds-eperson-form> for accessibility issues
testA11y('ds-eperson-form');
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/edit-group.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Edit Group', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/access-control/groups/'.concat(Cypress.env('DSPACE_ADMINISTRATOR_GROUP')).concat('/edit'));
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Form must first be visible
cy.get('ds-group-form').should('be.visible');
// Analyze <ds-group-form> for accessibility issues
testA11y('ds-group-form');
});
});
13 changes: 13 additions & 0 deletions cypress/e2e/end-user-agreement.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { testA11y } from 'cypress/support/utils';

describe('End User Agreement', () => {
it('should pass accessibility tests', () => {
cy.visit('/info/end-user-agreement');

// Page must first be visible
cy.get('ds-end-user-agreement').should('be.visible');

// Analyze <ds-end-user-agreement> for accessibility
testA11y('ds-end-user-agreement');
});
});
16 changes: 16 additions & 0 deletions cypress/e2e/epeople-registry.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { testA11y } from 'cypress/support/utils';

describe('Epeople registry', () => {
beforeEach(() => {
// Must login as an Admin to see the page
cy.visit('/access-control/epeople');
cy.loginViaForm(Cypress.env('DSPACE_TEST_ADMIN_USER'), Cypress.env('DSPACE_TEST_ADMIN_PASSWORD'));
});

it('should pass accessibility tests', () => {
// Epeople registry page must first be visible
cy.get('ds-epeople-registry').should('be.visible');
// Analyze <ds-epeople-registry> for accessibility issues
testA11y('ds-epeople-registry');
});
});
Loading

0 comments on commit 7611635

Please sign in to comment.