mirror of https://github.com/grafana/grafana.git
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { test, expect } from '@grafana/plugin-e2e';
|
|
|
|
test.describe(
|
|
'Query editor',
|
|
{
|
|
tag: ['@various'],
|
|
},
|
|
() => {
|
|
test('Undo should work in query editor for prometheus', async ({ page }) => {
|
|
// Visit the explore page
|
|
await page.goto('/explore');
|
|
|
|
// Click on the data source picker
|
|
const dataSourcePicker = page.getByTestId('data-testid Data source picker select container');
|
|
await expect(dataSourcePicker).toBeVisible();
|
|
await dataSourcePicker.click();
|
|
|
|
// Select the prometheus data source
|
|
const prometheusOption = page.getByText('gdev-prometheus');
|
|
await expect(prometheusOption).toBeVisible();
|
|
await prometheusOption.click();
|
|
|
|
const queryText = `rate(http_requests_total{job="grafana"}[5m])`;
|
|
|
|
// Click on the Code radio button
|
|
const codeRadioButton = page.getByRole('radio', { name: 'Code' });
|
|
await expect(codeRadioButton).toBeVisible();
|
|
await codeRadioButton.click();
|
|
|
|
// Wait for Monaco editor to load
|
|
await page.waitForSelector('.monaco-editor');
|
|
|
|
// Type the query text and then backspace
|
|
const queryField = page.locator('.monaco-editor textarea');
|
|
await queryField.fill(queryText);
|
|
await queryField.press('Backspace');
|
|
|
|
// Verify the text is truncated
|
|
await expect(page.getByText(queryText.slice(0, -1))).toBeVisible();
|
|
|
|
// Use undo (Ctrl+Z)
|
|
await queryField.press('Control+z');
|
|
|
|
// Verify the full query text is restored
|
|
await expect(page.getByText(queryText)).toBeVisible();
|
|
|
|
// Verify no error alerts are visible
|
|
const errorAlert = page.getByTestId('alert-error');
|
|
await expect(errorAlert).toBeHidden();
|
|
});
|
|
}
|
|
);
|