summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Cecchetti <marco.cecchetti@collabora.com>2023-07-08 19:19:29 +0200
committerMarco Cecchetti <mrcekets@gmail.com>2023-07-10 16:02:18 +0200
commitff34b16947643a4fa1a0f711fc324110eb3d26ea (patch)
treebdd04ec1ccdeb3c401cc7e0c0891624412a9e977
parentremove dup code: A11yTextInput inherits from TextInput (diff)
downloadonline-ff34b16947643a4fa1a0f711fc324110eb3d26ea.tar.gz
online-ff34b16947643a4fa1a0f711fc324110eb3d26ea.zip
cypress tests for accessibility toggle ui
Helper functions: checkAccessibilityEnabledToBe check accessibility state independently from current desktop ui setAccessibilityState set accessibility state independently from current desktop ui Both helper functions check that ui state and a11y support in text input element are in sync. Enable/Disable Accessibility Support test state toggling and state preservation when switching ui Typing after switching accessibility state check editable area content after toggling accessibility support Signed-off-by: Marco Cecchetti <marco.cecchetti@collabora.com> Change-Id: Icce5ae148024a8abf9b65a90229915f28f720554
-rw-r--r--cypress_test/integration_tests/common/desktop_helper.js73
-rw-r--r--cypress_test/integration_tests/desktop/writer/editable_area_spec.js12
-rw-r--r--cypress_test/integration_tests/desktop/writer/top_toolbar_spec.js27
3 files changed, 112 insertions, 0 deletions
diff --git a/cypress_test/integration_tests/common/desktop_helper.js b/cypress_test/integration_tests/common/desktop_helper.js
index ac2787c6e9..853d8e087a 100644
--- a/cypress_test/integration_tests/common/desktop_helper.js
+++ b/cypress_test/integration_tests/common/desktop_helper.js
@@ -364,6 +364,77 @@ function openReadOnlyFile(type, filename) {
return testFileName;
}
+function checkAccessibilityEnabledToBe(state) {
+ cy.window().then(win => {
+ cy.log('check accessibility enabled to be: ' + state);
+ var isAccessibilityEnabledAtServerLevel = win['0'].enableAccessibility;
+ // expect(isAccessibilityEnabledAtServerLevel).to.eq(true);
+ if (isAccessibilityEnabledAtServerLevel) {
+ var userInterfaceMode = win['0'].userInterfaceMode;
+ if (userInterfaceMode === 'notebookbar') {
+ if (state) {
+ cy.cGet('#togglea11ystate').should('have.class', 'selected');
+ } else {
+ cy.cGet('#togglea11ystate').should('not.have.class', 'selected');
+ }
+ } else {
+ cy.cGet('#menu-tools').click();
+ if (state) {
+ cy.cGet('#menu-togglea11ystate a').should('have.class', 'lo-menu-item-checked');
+ } else {
+ cy.cGet('#menu-togglea11ystate a').should('not.have.class', 'lo-menu-item-checked');
+ }
+ cy.cGet('div.clipboard').type('{esc}', {force: true});
+ }
+ cy.cGet('div.clipboard').then((clipboard) => {
+ expect(clipboard.get(0)._hasAccessibilitySupport()).to.eq(state);
+ });
+ } else {
+ cy.log('accessibility disabled at server level');
+ }
+ });
+}
+
+function setAccessibilityState(enable) {
+ cy.window().then(win => {
+ cy.log('set accessibility state to: ' + enable);
+ var a11yEnabled = win['0'].enableAccessibility;
+ if (a11yEnabled) {
+ var userInterfaceMode = win['0'].userInterfaceMode;
+ if (userInterfaceMode === 'notebookbar') {
+ cy.cGet('#Help-tab-label').click();
+ cy.cGet('#togglea11ystate').then((button) => {
+ //var currentState = button.get(0).classList.contains('selected');
+ var currentState = button.hasClass('selected');
+ if (currentState !== enable) {
+ button.click();
+ cy.log('accessibility state changed: ' + enable);
+ } else {
+ cy.log('accessibility already in requested state: ' + enable);
+ }
+ });
+ } else {
+ cy.cGet('#menu-tools').click();
+ cy.cGet('#menu-togglea11ystate a').then((item) => {
+ var currentState = item.hasClass('lo-menu-item-checked');
+ if (currentState !== enable) {
+ cy.cGet('#menu-togglea11ystate').click();
+ cy.log('accessibility state changed: ' + enable);
+ } else {
+ cy.log('accessibility already in requested state: ' + enable);
+ }
+ });
+ }
+ cy.wait(500);
+ cy.cGet('div.clipboard').then((clipboard) => {
+ expect(clipboard.get(0)._hasAccessibilitySupport()).to.eq(enable);
+ });
+ } else {
+ cy.log('accessibility disabled at server level');
+ }
+ });
+}
+
module.exports.showSidebar = showSidebar;
module.exports.hideSidebar = hideSidebar;
module.exports.showStatusBarIfHidden = showStatusBarIfHidden;
@@ -388,3 +459,5 @@ module.exports.assertImageSize = assertImageSize;
module.exports.openReadOnlyFile = openReadOnlyFile;
module.exports.switchUIToNotebookbar = switchUIToNotebookbar;
module.exports.switchUIToCompact = switchUIToCompact;
+module.exports.checkAccessibilityEnabledToBe = checkAccessibilityEnabledToBe;
+module.exports.setAccessibilityState = setAccessibilityState;
diff --git a/cypress_test/integration_tests/desktop/writer/editable_area_spec.js b/cypress_test/integration_tests/desktop/writer/editable_area_spec.js
index c8fe7e7975..34bf2dec9d 100644
--- a/cypress_test/integration_tests/desktop/writer/editable_area_spec.js
+++ b/cypress_test/integration_tests/desktop/writer/editable_area_spec.js
@@ -1,6 +1,7 @@
/* global describe it cy beforeEach require afterEach */
var helper = require('../../common/helper');
+var desktopHelper = require('../../common/desktop_helper');
var ceHelper = require('../../common/contenteditable_helper');
// var repairHelper = require('../../common/repair_document_helper');
@@ -471,6 +472,17 @@ describe(['taga11yenabled'], 'Editable area - Basic typing and caret moving', fu
ceHelper.type('{del}');
ceHelper.checkPlainContent('Hello World');
});
+
+ it('Typing after switching accessibility state', function () {
+ ceHelper.type('r');
+ desktopHelper.setAccessibilityState(false);
+ ceHelper.checkPlainContent('');
+ ceHelper.type('e');
+ desktopHelper.setAccessibilityState(true);
+ ceHelper.checkPlainContent('re');
+ ceHelper.type('d');
+ ceHelper.checkPlainContent('red');
+ });
});
describe(['taga11yenabled'], 'Editable area - Inner selection', function() {
diff --git a/cypress_test/integration_tests/desktop/writer/top_toolbar_spec.js b/cypress_test/integration_tests/desktop/writer/top_toolbar_spec.js
index 89a617e762..3f230d5ae2 100644
--- a/cypress_test/integration_tests/desktop/writer/top_toolbar_spec.js
+++ b/cypress_test/integration_tests/desktop/writer/top_toolbar_spec.js
@@ -294,6 +294,33 @@ describe(['tagdesktop'], 'Top toolbar tests.', function() {
cy.cGet('#copy-paste-container p i').should('exist');
});
+ it('Enable/Disable Accessibility Support', function() {
+ // when accessibility is disabled at server level
+ // this unit passes but doesn't perform any check
+ desktopHelper.switchUIToNotebookbar();
+ desktopHelper.checkAccessibilityEnabledToBe(true);
+ desktopHelper.setAccessibilityState(false);
+ desktopHelper.checkAccessibilityEnabledToBe(false);
+ desktopHelper.setAccessibilityState(true);
+ desktopHelper.checkAccessibilityEnabledToBe(true);
+ desktopHelper.switchUIToCompact();
+ desktopHelper.checkAccessibilityEnabledToBe(true);
+ desktopHelper.setAccessibilityState(false);
+ desktopHelper.checkAccessibilityEnabledToBe(false);
+ desktopHelper.setAccessibilityState(true);
+ desktopHelper.checkAccessibilityEnabledToBe(true);
+ desktopHelper.setAccessibilityState(false);
+ desktopHelper.switchUIToNotebookbar();
+ desktopHelper.checkAccessibilityEnabledToBe(false);
+ desktopHelper.switchUIToCompact();
+ desktopHelper.setAccessibilityState(true);
+ desktopHelper.switchUIToNotebookbar();
+ desktopHelper.checkAccessibilityEnabledToBe(true);
+ desktopHelper.setAccessibilityState(false);
+ desktopHelper.switchUIToCompact();
+ desktopHelper.checkAccessibilityEnabledToBe(false);
+ });
+
it('Show/Hide sidebar.', function() {
cy.cGet('#View-tab-label').click();
cy.cGet('#sidebar-dock-wrapper').should('be.visible');