hunk.code_window:       .should("have.length", 2);
     });
     it("Clicking on a message should open the search menu", function() {
       cy.get(debuggerLocators.errorMessage)
         .first()
  
hunk.labels: keep keep add keep keep keep
hunk.after_edit:   it("Recent errors are shown at the top of the list", function() {
       cy.get(debuggerLocators.debuggerLogState)
         .first()
         .contains("text");
     });
  
hunk.file_path: app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Debugger/Widget_Error_spec.js
hunk.type: add
file: import { AppState } from "reducers";
  import { commentModeSelector } from "selectors/commentsSelectors";
  import { snipingModeSelector } from "selectors/editorSelectors";
  import { useSelector } from "store";
  
  export const useAllowEditorDragToSelect = () => {
    // This state tells us whether a `ResizableComponent` is resizing
    const isResizing = useSelector(
      (state: AppState) => state.ui.widgetDragResize.isResizing,
    );
  
    // This state tells us whether a `DraggableComponent` is dragging
    const isDragging = useSelector(
      (state: AppState) => state.ui.widgetDragResize.isDragging,
    );
  
    // This state tells us to disable dragging,
    // This is usually true when widgets themselves implement drag/drop
    // This flag resolves conflicting drag/drop triggers.
    const isDraggingDisabled: boolean = useSelector(
      (state: AppState) => state.ui.widgetDragResize.isDraggingDisabled,
    );
  
    // True when any widget is dragging or resizing, including this one
    const isResizingOrDragging = !!isResizing || !!isDragging;
    const isCommentMode = useSelector(commentModeSelector);
    const isSnipingMode = useSelector(snipingModeSelector);
    return (
      !isResizingOrDragging &&
      !isDraggingDisabled &&
      !isCommentMode &&
      !isSnipingMode
    );
  };
  