mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| import { test, expect } from '@grafana/plugin-e2e';
 | |
| 
 | |
| const DASHBOARD_UID = 'ZqZnVvFZz';
 | |
| 
 | |
| test.use({
 | |
|   featureToggles: {
 | |
|     kubernetesDashboards: process.env.KUBERNETES_DASHBOARDS === 'true',
 | |
|     dashboardScene: false, // this test is for the old sharing modal only used when scenes is turned off
 | |
|   },
 | |
| });
 | |
| 
 | |
| test.describe(
 | |
|   'Snapshots',
 | |
|   {
 | |
|     tag: ['@dashboards'],
 | |
|   },
 | |
|   () => {
 | |
|     test('Create a snapshot dashboard', async ({ page, gotoDashboardPage, selectors }) => {
 | |
|       const dashboardPage = await gotoDashboardPage({
 | |
|         uid: DASHBOARD_UID,
 | |
|       });
 | |
| 
 | |
|       const panelsToCheck = [
 | |
|         'Raw Data Graph',
 | |
|         'Last non-null',
 | |
|         'min',
 | |
|         'Max',
 | |
|         'The data from graph above with seriesToColumns transform',
 | |
|       ];
 | |
| 
 | |
|       // Open the sharing modal
 | |
|       await dashboardPage.getByGrafanaSelector(selectors.pages.Dashboard.DashNav.shareButton).click();
 | |
| 
 | |
|       // Select the snapshot tab
 | |
|       await dashboardPage.getByGrafanaSelector(selectors.components.Tab.title('Snapshot')).click();
 | |
| 
 | |
|       // Publish snapshot
 | |
|       await dashboardPage
 | |
|         .getByGrafanaSelector(selectors.pages.ShareDashboardModal.SnapshotScene.PublishSnapshot)
 | |
|         .click();
 | |
| 
 | |
|       // Copy link button should be visible
 | |
|       await expect(
 | |
|         dashboardPage.getByGrafanaSelector(selectors.pages.ShareDashboardModal.SnapshotScene.CopyUrlButton)
 | |
|       ).toBeVisible();
 | |
| 
 | |
|       // Get the snapshot URL from the input field
 | |
|       const urlInput = dashboardPage.getByGrafanaSelector(
 | |
|         selectors.pages.ShareDashboardModal.SnapshotScene.CopyUrlInput
 | |
|       );
 | |
|       const snapshotUrl = await urlInput.inputValue();
 | |
| 
 | |
|       // Extract the snapshot key from the URL and navigate to the snapshot
 | |
|       const snapshotKey = getSnapshotKey(snapshotUrl);
 | |
|       await page.goto(`/dashboard/snapshot/${snapshotKey}`);
 | |
| 
 | |
|       // Validate the panels are rendered
 | |
|       for (const title of panelsToCheck) {
 | |
|         await expect(dashboardPage.getByGrafanaSelector(selectors.components.Panels.Panel.title(title))).toBeVisible();
 | |
|       }
 | |
|     });
 | |
|   }
 | |
| );
 | |
| 
 | |
| const getSnapshotKey = (url: string): string => {
 | |
|   return url.split('/').pop() || '';
 | |
| };
 |