From b2e32a70b9df081c1a59ee0b2396f22c42460300 Mon Sep 17 00:00:00 2001 From: Andreas Christou Date: Fri, 14 Apr 2023 17:46:49 +0100 Subject: [PATCH] Chore: Update @grafana/e2e (#66365) * Update e2e package - Ensure health request is monitored for addDatasource flow - Add custom timeout to configurePanel flow * Make health check optional --- e2e/cloud-plugins-suite/azure-monitor.spec.ts | 1 + packages/grafana-e2e/src/flows/addDataSource.ts | 12 ++++++++++++ packages/grafana-e2e/src/flows/configurePanel.ts | 4 +++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/e2e/cloud-plugins-suite/azure-monitor.spec.ts b/e2e/cloud-plugins-suite/azure-monitor.spec.ts index 71a9e5c4819..7a328508443 100644 --- a/e2e/cloud-plugins-suite/azure-monitor.spec.ts +++ b/e2e/cloud-plugins-suite/azure-monitor.spec.ts @@ -49,6 +49,7 @@ function provisionAzureMonitorDatasources(datasources: AzureMonitorProvision[]) expectedAlertMessage: 'Successfully connected to all Azure Monitor endpoints', // Reduce the timeout from 30s to error faster when an invalid alert message is presented timeout: 10000, + awaitHealth: true, }); } diff --git a/packages/grafana-e2e/src/flows/addDataSource.ts b/packages/grafana-e2e/src/flows/addDataSource.ts index 4737d1e726a..38779572bd4 100644 --- a/packages/grafana-e2e/src/flows/addDataSource.ts +++ b/packages/grafana-e2e/src/flows/addDataSource.ts @@ -14,6 +14,7 @@ export interface AddDataSourceConfig { skipTlsVerify: boolean; type: string; timeout?: number; + awaitHealth?: boolean; } // @todo this actually returns type `Cypress.Chainable` @@ -40,8 +41,15 @@ export const addDataSource = (config?: Partial) => { skipTlsVerify, type, timeout, + awaitHealth, } = fullConfig; + if (awaitHealth) { + e2e() + .intercept(/health/) + .as('health'); + } + e2e().logToConsole('Adding data source with name:', name); e2e.pages.AddDataSource.visit(); e2e.pages.AddDataSource.dataSourcePluginsV2(type) @@ -76,6 +84,10 @@ export const addDataSource = (config?: Partial) => { e2e.pages.DataSource.saveAndTest().click(); + if (awaitHealth) { + e2e().wait('@health', { timeout: timeout ?? e2e.config().defaultCommandTimeout }); + } + // use the timeout passed in if it exists, otherwise, continue to use the default e2e.pages.DataSource.alert() .should('exist') diff --git a/packages/grafana-e2e/src/flows/configurePanel.ts b/packages/grafana-e2e/src/flows/configurePanel.ts index a121376a98a..c6225fb4a0d 100644 --- a/packages/grafana-e2e/src/flows/configurePanel.ts +++ b/packages/grafana-e2e/src/flows/configurePanel.ts @@ -34,6 +34,7 @@ interface ConfigurePanelOptional { panelTitle?: string; timeRange?: TimeRangeConfig; visualizationName?: string; + timeout?: number; } interface ConfigurePanelRequired { @@ -80,6 +81,7 @@ export const configurePanel = (config: PartialAddPanelConfig | PartialEditPanelC timeRange, visitDashboardAtStart, visualizationName, + timeout, } = fullConfig; if (visitDashboardAtStart) { @@ -158,7 +160,7 @@ export const configurePanel = (config: PartialAddPanelConfig | PartialEditPanelC e2e.components.RefreshPicker.runButtonV2().first().click({ force: true }); // Wait for RxJS - e2e().wait(500); + e2e().wait(timeout ?? e2e.config().defaultCommandTimeout); if (matchScreenshot) { let visualization;