Skip to content

Commit

Permalink
Merge pull request #3405 from 4Science/task/backport-3213-to-dspace-7_x
Browse files Browse the repository at this point in the history
[Port dspace-7_x] Implement e2e accessibility tests for pages in DSpace User Interface
  • Loading branch information
tdonohue authored Oct 10, 2024
2 parents 7884de9 + 6388613 commit e74dc22
Show file tree
Hide file tree
Showing 42 changed files with 679 additions and 125 deletions.
3 changes: 3 additions & 0 deletions cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export default defineConfig({

// Admin account used for administrative tests
DSPACE_TEST_ADMIN_USER: 'dspacedemo+admin@gmail.com',
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 @@ -34,6 +35,8 @@ export default defineConfig({
// Account used to test basic submission process
DSPACE_TEST_SUBMIT_USER: 'dspacedemo+submit@gmail.com',
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-metadata-selector');
});
});
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);
});
});
14 changes: 7 additions & 7 deletions cypress/e2e/collection-page.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import { testA11y } from 'cypress/support/utils';

describe('Collection Page', () => {

it('should pass accessibility tests', () => {
cy.visit('/collections/'.concat(Cypress.env('DSPACE_TEST_COLLECTION')));
it('should pass accessibility tests', () => {
cy.visit('/collections/'.concat(Cypress.env('DSPACE_TEST_COLLECTION')));

// <ds-collection-page> tag must be loaded
cy.get('ds-collection-page').should('be.visible');
// <ds-collection-page> tag must be loaded
cy.get('ds-collection-page').should('be.visible');

// Analyze <ds-collection-page> for accessibility issues
testA11y('ds-collection-page');
});
// Analyze <ds-collection-page> for accessibility issues
testA11y('ds-collection-page');
});
});
2 changes: 1 addition & 1 deletion cypress/e2e/community-statistics.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ describe('Community Statistics Page', () => {

it('should load if you click on "Statistics" from a Community page', () => {
cy.visit('/communities/'.concat(Cypress.env('DSPACE_TEST_COMMUNITY')));
cy.get('ds-navbar ds-link-menu-item a[data-test="link-menu-item.menu.section.statistics"]').click();
cy.get('a[data-test="link-menu-item.menu.section.statistics"]').click();
cy.location('pathname').should('eq', COMMUNITYSTATISTICSPAGE);
});

Expand Down
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');
});
});
Loading

0 comments on commit e74dc22

Please sign in to comment.