diff --git a/public/app/features/alerting/unified/components/Expression.test.tsx b/public/app/features/alerting/unified/components/Expression.test.tsx
new file mode 100644
index 00000000000..e35fe163176
--- /dev/null
+++ b/public/app/features/alerting/unified/components/Expression.test.tsx
@@ -0,0 +1,63 @@
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import React from 'react';
+
+import { PluginType } from '@grafana/data';
+
+import { Expression } from './Expression';
+
+const expression =
+ '100 - ( avg by ( agent_hostname ) ( rate ( node_cpu_seconds_total { mode = "idle" } [ 2h ] ) ) * 100 ) > 97';
+
+const rulesSource = {
+ id: 5,
+ uid: 'gdev-prometheus',
+ type: 'prometheus',
+ name: 'gdev-prometheus',
+ meta: {
+ id: 'prometheus',
+ type: PluginType.datasource,
+ name: 'Prometheus',
+ info: {
+ author: {
+ name: 'Grafana Labs',
+ url: 'https://grafana.com',
+ },
+ description: 'Open source time series database & alerting',
+ links: [
+ {
+ name: 'Learn more',
+ url: 'https://prometheus.io/',
+ },
+ ],
+ logos: {
+ small: 'public/app/plugins/datasource/prometheus/img/prometheus_logo.svg',
+ large: 'public/app/plugins/datasource/prometheus/img/prometheus_logo.svg',
+ },
+ build: {},
+ screenshots: [],
+ version: '',
+ updated: '',
+ },
+ module: 'app/plugins/datasource/prometheus/module',
+ baseUrl: 'public/app/plugins/datasource/prometheus',
+ },
+ url: '/api/datasources/proxy/5',
+ access: 'proxy' as 'proxy',
+ jsonData: {
+ manageAlerts: true,
+ },
+ readOnly: false,
+};
+
+describe('Expression', () => {
+ it('Should not allow to edit the text in the editor', () => {
+ render();
+
+ const editor = screen.getByTestId('expression-editor');
+ userEvent.type(editor, 'something else');
+
+ expect(editor).toHaveTextContent(expression);
+ expect(editor).not.toHaveTextContent('something else');
+ });
+});
diff --git a/public/app/features/alerting/unified/components/Expression.tsx b/public/app/features/alerting/unified/components/Expression.tsx
index 26d5dcac01e..f6391784efb 100644
--- a/public/app/features/alerting/unified/components/Expression.tsx
+++ b/public/app/features/alerting/unified/components/Expression.tsx
@@ -34,12 +34,12 @@ export const HighlightedQuery: FC<{ language: 'promql' | 'logql'; expr: string }
const slateValue = useMemo(() => makeValue(expr), [expr]);
- return ;
+ //We don't want to set readOnly={true} to the Editor to prevent unwanted charaters in the copied text. See https://github.com/grafana/grafana/pull/57839
+ return ;
};
export const Expression: FC = ({ expression: query, rulesSource }) => {
const styles = useStyles(getStyles);
-
return (
{isCloudRulesSource(rulesSource) ? (