Просмотр исходного кода

feat: Add data-testid attributes for improved testing in OptionsSelector component

Shun Miyazawa 2 месяцев назад
Родитель
Сommit
96855ab03f

+ 10 - 1
apps/app/src/client/components/PageEditor/EditorNavbarBottom/OptionsSelector.tsx

@@ -32,12 +32,16 @@ type RadioListItemProps = {
   icon?: React.ReactNode;
   icon?: React.ReactNode;
   text: string;
   text: string;
   checked?: boolean;
   checked?: boolean;
+  dataTestid?: string;
 };
 };
 
 
 const RadioListItem = (props: RadioListItemProps): JSX.Element => {
 const RadioListItem = (props: RadioListItemProps): JSX.Element => {
   const { onClick, icon, text, checked } = props;
   const { onClick, icon, text, checked } = props;
   return (
   return (
-    <li className="list-group-item border-0 d-flex align-items-center">
+    <li
+      className="list-group-item border-0 d-flex align-items-center"
+      data-testid={props.dataTestid}
+    >
       <input
       <input
         onClick={onClick}
         onClick={onClick}
         className="form-check-input me-3"
         className="form-check-input me-3"
@@ -177,6 +181,7 @@ const KeymapSelector = memo(
                 icon={icon}
                 icon={icon}
                 text={keymapLabel}
                 text={keymapLabel}
                 checked={keymapMode === selectedKeymapMode}
                 checked={keymapMode === selectedKeymapMode}
+                dataTestid={`keymap_radio_item_${keymapMode}`}
               />
               />
             );
             );
           })}
           })}
@@ -337,6 +342,7 @@ type ChangeStateButtonProps = {
   header: string;
   header: string;
   data: string;
   data: string;
   disabled?: boolean;
   disabled?: boolean;
+  dataTestid?: string;
 };
 };
 const ChangeStateButton = memo((props: ChangeStateButtonProps): JSX.Element => {
 const ChangeStateButton = memo((props: ChangeStateButtonProps): JSX.Element => {
   const { onClick, header, data, disabled } = props;
   const { onClick, header, data, disabled } = props;
@@ -346,6 +352,7 @@ const ChangeStateButton = memo((props: ChangeStateButtonProps): JSX.Element => {
       className="d-flex align-items-center btn btn-sm border-0 my-1"
       className="d-flex align-items-center btn btn-sm border-0 my-1"
       disabled={disabled}
       disabled={disabled}
       onClick={onClick}
       onClick={onClick}
+      data-testid={props.dataTestid}
     >
     >
       <span className="ms-2 me-auto">{header}</span>
       <span className="ms-2 me-auto">{header}</span>
       <span className="text-muted d-flex align-items-center ms-2 me-1">
       <span className="text-muted d-flex align-items-center ms-2 me-1">
@@ -395,6 +402,7 @@ export const OptionsSelector = (): JSX.Element => {
       }}
       }}
       direction="up"
       direction="up"
       className=""
       className=""
+      data-testid="options-selector-dropdown"
     >
     >
       <DropdownToggle
       <DropdownToggle
         className={`btn btn-sm btn-outline-neutral-secondary d-flex align-items-center justify-content-center
         className={`btn btn-sm btn-outline-neutral-secondary d-flex align-items-center justify-content-center
@@ -426,6 +434,7 @@ export const OptionsSelector = (): JSX.Element => {
               onClick={() => setStatus(OptionsStatus.Keymap)}
               onClick={() => setStatus(OptionsStatus.Keymap)}
               header={t('page_edit.keymap')}
               header={t('page_edit.keymap')}
               data={KEYMAP_LABEL_MAP[editorSettings.keymapMode ?? ''] ?? ''}
               data={KEYMAP_LABEL_MAP[editorSettings.keymapMode ?? ''] ?? ''}
+              dataTestid="keymap_current_selection"
             />
             />
             <hr className="my-1" />
             <hr className="my-1" />
             <ChangeStateButton
             <ChangeStateButton