From 1fef2c632c5a56d8192bbf2a488faa30e9a8e065 Mon Sep 17 00:00:00 2001 From: David Hanina Date: Thu, 3 Apr 2025 15:13:13 +0200 Subject: [PATCH 01/30] Improves a11y in forms Most changes consists of: - Fixing IDs - Fixing Label for attribute - Removing labels where accidental - Reattaching ID to the proper element instead of div Also changes cypress to respect the proper id schema. Fixes few selectors in cypress. Signed-off-by: David Hanina --- cypress/support/commands.ts | 6 ++--- .../CertificateMappingDataOption.tsx | 2 ++ .../Form/IpaCertificates/IpaCertificates.tsx | 1 + .../IpaDropdownSearch/IpaDropdownSearch.tsx | 3 ++- .../Form/IpaNumberInput/IpaNumberInput.tsx | 3 ++- src/components/Form/IpaSelect/IpaSelect.tsx | 2 +- .../IpaSshPublicKeys/IpaSshPublicKeys.tsx | 9 ++++++-- .../PrincipalAliasMultiTextBox.tsx | 1 + src/components/HostsSections/Enrollment.tsx | 8 +++++-- .../HostsSections/HostCertificate.tsx | 6 ++++- src/components/HostsSections/HostSettings.tsx | 12 ++++++++-- src/components/IssuerAndSubjectOption.tsx | 2 +- src/components/MemberOf/MemberOfToolbar.tsx | 1 + .../MemberOf/MemberOfToolbarOld.tsx | 1 + src/components/ResetIdpPassword.tsx | 4 ++-- .../ServicesSections/Provisioning.tsx | 2 +- .../ServicesSections/ServiceCertificate.tsx | 2 +- .../ServicesSections/ServiceSettings.tsx | 12 ++++++++-- .../SudoRuleSections/SudoRuleGeneral.tsx | 3 ++- .../UsersSections/UsersAccountSettings.tsx | 22 +++++++++++++++---- .../UsersSections/UsersAttributesSMB.tsx | 2 +- .../UsersSections/UsersContactSettings.tsx | 12 ++++++---- .../UsersSections/UsersEmployeeInfo.tsx | 6 ++++- .../UsersSections/UsersPasswordPolicy.tsx | 2 +- .../layouts/ModalWithTextAreaLayout.tsx | 4 +++- src/components/layouts/SimpleSelector.tsx | 1 + src/components/modals/AddHostGroup.tsx | 4 ++-- src/components/modals/AddIDView.tsx | 4 ++-- src/components/modals/AddNetgroup.tsx | 4 ++-- .../modals/AddTextInputFromListModal.tsx | 4 +++- src/components/modals/AddUserGroup.tsx | 9 ++++---- .../modals/HbacModals/AddHBACRule.tsx | 4 ++-- .../modals/HbacModals/AddHBACService.tsx | 4 ++-- .../modals/HbacModals/AddHBACServiceGroup.tsx | 4 ++-- src/components/modals/HostModals/AddHost.tsx | 8 +++---- .../IdOverrideModals/AddIdOverrideGroup.tsx | 8 +++---- .../IdOverrideModals/AddIdOverrideUser.tsx | 20 ++++++++--------- .../modals/PwPoliciesModals/AddModal.tsx | 2 +- .../modals/SudoModals/AddSudoCmd.tsx | 4 ++-- .../modals/SudoModals/AddSudoCmdGroup.tsx | 4 ++-- .../modals/SudoModals/AddSudoRule.tsx | 4 ++-- src/components/modals/UserModals/AddUser.tsx | 12 +++++----- .../modals/UserModals/ResetPassword.tsx | 12 +++++----- .../AutoMemUserRules/AutoMemSettings.tsx | 2 +- .../Configuration/ConfigGroupOptions.tsx | 1 + .../Configuration/ConfigObjectclassTable.tsx | 4 ++-- .../Configuration/ConfigServerOptions.tsx | 1 + .../Configuration/ConfigServiceOptions.tsx | 6 ++++- src/pages/Configuration/ConfigUserOptions.tsx | 14 ++++++++---- .../IdPReferences/IdpReferencesSettings.tsx | 2 +- .../PasswordPoliciesSettings.tsx | 2 +- src/pages/SubordinateIDs/SubidsSettings.tsx | 4 ++-- src/pages/UserGroups/UserGroupsSettings.tsx | 2 +- tests/features/configuration_handling.feature | 4 ++-- tests/features/steps/common.ts | 19 +++++++++++----- tests/features/steps/user_handling.ts | 15 ++++++++----- 56 files changed, 202 insertions(+), 114 deletions(-) diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 4ad78d7ee..254e92aed 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -65,19 +65,19 @@ Cypress.Commands.add("createTestUser", (username: string) => { .contains("User login") .parent() .then(($label) => { - cy.get("#modal-form-" + $label.attr("for")).type(username); + cy.get("#" + $label.attr("for")).type(username); }); cy.get("[role=dialog] label") .contains("First name") .parent() .then(($label) => { - cy.get("#modal-form-" + $label.attr("for")).type("Arctic"); + cy.get("#" + $label.attr("for")).type("Arctic"); }); cy.get("[role=dialog] label") .contains("Last name") .parent() .then(($label) => { - cy.get("#modal-form-" + $label.attr("for")).type("Asbestos"); + cy.get("#" + $label.attr("for")).type("Asbestos"); }); cy.get("[role=dialog] button").contains("Add").click(); } diff --git a/src/components/CertificateMappingDataOption.tsx b/src/components/CertificateMappingDataOption.tsx index b54d050fc..c9791a2cf 100644 --- a/src/components/CertificateMappingDataOption.tsx +++ b/src/components/CertificateMappingDataOption.tsx @@ -226,6 +226,7 @@ const CertificateMappingDataOption = ( <>{certificateMappingDataElement} @@ -233,6 +234,7 @@ const CertificateMappingDataOption = ( { Add { return ( setIsOpen(isOpen)} toggle={(toggleRef: React.Ref) => ( { setSearchValue(value)} diff --git a/src/components/Form/IpaNumberInput/IpaNumberInput.tsx b/src/components/Form/IpaNumberInput/IpaNumberInput.tsx index 9835d3137..7ff2a8cbc 100644 --- a/src/components/Form/IpaNumberInput/IpaNumberInput.tsx +++ b/src/components/Form/IpaNumberInput/IpaNumberInput.tsx @@ -94,7 +94,7 @@ const IpaNumberInput = (props: IPAParamDefinitionNumberInput) => { return ( <> { isDisabled={readOnly} widthChars={props.numCharsShown || 1} className={props.className || ""} + inputProps={{ id: props.id }} /> {isError && ( diff --git a/src/components/Form/IpaSelect/IpaSelect.tsx b/src/components/Form/IpaSelect/IpaSelect.tsx index f2456bc4d..6e5be1550 100644 --- a/src/components/Form/IpaSelect/IpaSelect.tsx +++ b/src/components/Form/IpaSelect/IpaSelect.tsx @@ -77,6 +77,7 @@ const IpaSelect = (props: IPAParamDefinitionSelect) => { // Toggle const toggle = (toggleRef: React.Ref) => ( { return (