Add debug to diagnose flaky composer test (#11467)

Part of my attempts to fix https://github.com/vector-im/element-web/issues/26037.

Nobody seems to know how this currently works, so let's add a load of debugging.
This commit is contained in:
Richard van der Hoff 2023-08-24 12:36:57 +01:00 committed by GitHub
parent f57d8279de
commit 9fb7d94c2b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 5 deletions

View file

@ -16,6 +16,7 @@ limitations under the License.
import React, { ForwardedRef, forwardRef } from "react";
import { FormattingFunctions, MappedSuggestion } from "@matrix-org/matrix-wysiwyg";
import { logger } from "matrix-js-sdk/src/logger";
import { useRoomContext } from "../../../../../contexts/RoomContext";
import Autocomplete from "../../Autocomplete";
@ -97,19 +98,25 @@ const WysiwygAutocomplete = forwardRef(
}
}
if (!room) return null;
const autoCompleteQuery = buildQuery(suggestion);
// debug for https://github.com/vector-im/element-web/issues/26037
logger.log(`## 26037 ## Rendering Autocomplete for WysiwygAutocomplete with query: "${autoCompleteQuery}"`);
// TODO - determine if we show all of the /command suggestions, there are some options in the
// list which don't seem to make sense in this context, specifically /html and /plain
return room ? (
return (
<div className="mx_WysiwygComposer_AutoCompleteWrapper" data-testid="autocomplete-wrapper">
<Autocomplete
ref={ref}
query={buildQuery(suggestion)}
query={autoCompleteQuery}
onConfirm={handleConfirm}
selection={{ start: 0, end: 0 }}
room={room}
/>
</div>
) : null;
);
},
);

View file

@ -15,7 +15,8 @@ limitations under the License.
*/
import { AllowedMentionAttributes, MappedSuggestion } from "@matrix-org/matrix-wysiwyg";
import { SyntheticEvent, useState } from "react";
import { SyntheticEvent, useState, SetStateAction } from "react";
import { logger } from "matrix-js-sdk/src/logger";
import { isNotNull } from "../../../../../Typeguards";
@ -59,7 +60,20 @@ export function useSuggestion(
onSelect: (event: SyntheticEvent<HTMLDivElement>) => void;
suggestion: MappedSuggestion | null;
} {
const [suggestionData, setSuggestionData] = useState<SuggestionState>(null);
const [suggestionData, setSuggestionData0] = useState<SuggestionState>(null);
// debug for https://github.com/vector-im/element-web/issues/26037
const setSuggestionData = (suggestionData: SetStateAction<SuggestionState>): void => {
// setState allows either the data itself or a callback which returns the data
logger.log(
`## 26037 ## wysiwyg useSuggestion hook setting suggestion data to ${
suggestionData === null || suggestionData instanceof Function
? suggestionData
: suggestionData.mappedSuggestion.keyChar + suggestionData.mappedSuggestion.text
}`,
);
setSuggestionData0(suggestionData);
};
// We create a `selectionchange` handler here because we need to know when the user has moved the cursor,
// we can not depend on input events only