From fddf77ee35677f33d0ce64c032aa51b7374c9655 Mon Sep 17 00:00:00 2001
From: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>
Date: Thu, 30 May 2024 13:34:00 -0400
Subject: [PATCH] CodeEditor: Fix broken styles (#88495)
* fix: remove erroneous container
* fix: update selector
* fix: pass data attrs via `wrapperProps`
* fix: ensure `toBeInTheDocument` checks have unique markup
---
.../src/selectors/components.ts | 2 +-
.../Monaco/ReactMonacoEditorLazy.tsx | 29 +++++++------------
.../MonacoFieldWrapper.test.tsx | 2 +-
.../MonacoQueryField.test.tsx | 2 +-
.../components/LokiQueryCodeEditor.test.tsx | 4 +--
5 files changed, 16 insertions(+), 23 deletions(-)
diff --git a/packages/grafana-e2e-selectors/src/selectors/components.ts b/packages/grafana-e2e-selectors/src/selectors/components.ts
index d11995ccc92..165861766c3 100644
--- a/packages/grafana-e2e-selectors/src/selectors/components.ts
+++ b/packages/grafana-e2e-selectors/src/selectors/components.ts
@@ -527,7 +527,7 @@ export const Components = {
container: 'data-testid Code editor container',
},
ReactMonacoEditor: {
- container: 'data-testid ReactMonacoEditor container',
+ editorLazy: 'data-testid ReactMonacoEditor editorLazy',
},
DashboardImportPage: {
textarea: 'data-testid-import-dashboard-textarea',
diff --git a/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx b/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx
index 5cac26c170b..eecfc033198 100644
--- a/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx
+++ b/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx
@@ -16,7 +16,7 @@ import type { ReactMonacoEditorProps } from './types';
* @internal
* Experimental export
**/
-const MonacoEditorLazy = (props: ReactMonacoEditorProps) => {
+export const ReactMonacoEditorLazy = (props: ReactMonacoEditorProps) => {
const styles = useStyles2(getStyles);
const { loading, error, dependency } = useAsyncDependency(
import(/* webpackChunkName: "react-monaco-editor" */ './ReactMonacoEditor')
@@ -31,13 +31,21 @@ const MonacoEditorLazy = (props: ReactMonacoEditorProps) => {
);
}
const ReactMonacoEditor = dependency.ReactMonacoEditor;
- return ;
+ return (
+
+ );
};
const getStyles = (theme: GrafanaTheme2) => {
@@ -48,18 +56,3 @@ const getStyles = (theme: GrafanaTheme2) => {
}),
};
};
-
-const withContainer =
(Component: React.ComponentType
): React.ComponentType
=> {
- const WithContainer = (props: P) => (
- // allow tests to easily determine if the code editor has rendered in any of its three states (loading, error, or ready)
-
-
-
- );
-
- WithContainer.displayName = Component.displayName;
-
- return WithContainer;
-};
-
-export const ReactMonacoEditorLazy = withContainer(MonacoEditorLazy);
diff --git a/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoFieldWrapper.test.tsx b/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoFieldWrapper.test.tsx
index ddfdd665f80..e98e694f093 100644
--- a/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoFieldWrapper.test.tsx
+++ b/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoFieldWrapper.test.tsx
@@ -27,7 +27,7 @@ describe('MonacoFieldWrapper', () => {
renderComponent();
await waitFor(async () => {
- const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.container);
+ const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.editorLazy);
expect(monacoEditor).toBeInTheDocument();
});
});
diff --git a/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoQueryField.test.tsx b/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoQueryField.test.tsx
index 5686179490c..6d003381237 100644
--- a/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoQueryField.test.tsx
+++ b/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoQueryField.test.tsx
@@ -33,7 +33,7 @@ describe('MonacoQueryField', () => {
test('Renders with no errors', async () => {
renderComponent();
- const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.container);
+ const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.editorLazy);
expect(monacoEditor).toBeInTheDocument();
});
});
diff --git a/public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.test.tsx b/public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.test.tsx
index 3e850b09175..efa2c070d1f 100644
--- a/public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.test.tsx
+++ b/public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.test.tsx
@@ -34,7 +34,7 @@ describe('LokiQueryCodeEditor', () => {
props.showExplain = true;
props.datasource.metadataRequest = jest.fn().mockResolvedValue([]);
render();
- const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.container);
+ const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.editorLazy);
expect(monacoEditor).toBeInTheDocument();
expect(screen.getByText(EXPLAIN_LABEL_FILTER_CONTENT)).toBeInTheDocument();
});
@@ -43,7 +43,7 @@ describe('LokiQueryCodeEditor', () => {
const props = createDefaultProps();
props.datasource.metadataRequest = jest.fn().mockResolvedValue([]);
render();
- const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.container);
+ const monacoEditor = await screen.findByTestId(selectors.components.ReactMonacoEditor.editorLazy);
expect(monacoEditor).toBeInTheDocument();
expect(screen.queryByText(EXPLAIN_LABEL_FILTER_CONTENT)).not.toBeInTheDocument();
});