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(); | ||
|  |     }); | ||
|  |   } | ||
|  | ); |