From 49e629b2786b810180e51d65c1cd23aa756c15c0 Mon Sep 17 00:00:00 2001 From: Steven Vachon Date: Mon, 29 Jun 2020 16:04:38 -0400 Subject: [PATCH] @grafana/e2e: improvements (#25908) * Set time range when creating a dashboard * Optionally set time range when opening a dashboard * Default time range to 6 hours instead of 1 hour * Minor changes --- .../grafana-e2e/src/flows/addDashboard.ts | 17 ++++++++-- .../grafana-e2e/src/flows/openDashboard.ts | 32 +++---------------- .../src/flows/setDashboardTimeRange.ts | 27 ++++++++++++++++ 3 files changed, 47 insertions(+), 29 deletions(-) create mode 100644 packages/grafana-e2e/src/flows/setDashboardTimeRange.ts diff --git a/packages/grafana-e2e/src/flows/addDashboard.ts b/packages/grafana-e2e/src/flows/addDashboard.ts index be216a3d74b..481357e2e57 100644 --- a/packages/grafana-e2e/src/flows/addDashboard.ts +++ b/packages/grafana-e2e/src/flows/addDashboard.ts @@ -1,9 +1,11 @@ +import { DashboardTimeRangeConfig, setDashboardTimeRange } from './setDashboardTimeRange'; import { DeleteDashboardConfig } from './deleteDashboard'; import { e2e } from '../index'; import { getDashboardUid } from '../support/url'; import { selectOption } from './selectOption'; export interface AddDashboardConfig { + timeRange: DashboardTimeRangeConfig; timezone: string; title: string; } @@ -11,12 +13,16 @@ export interface AddDashboardConfig { // @todo this actually returns type `Cypress.Chainable` export const addDashboard = (config?: Partial): any => { const fullConfig = { + timeRange: { + from: '2020-01-01 00:00:00', + to: '2020-01-01 06:00:00', + }, timezone: 'Coordinated Universal Time', title: `e2e-${Date.now()}`, ...config, } as AddDashboardConfig; - const { timezone, title } = fullConfig; + const { timeRange, timezone, title } = fullConfig; e2e().logToConsole('Adding dashboard with title:', title); @@ -24,9 +30,16 @@ export const addDashboard = (config?: Partial): any => { e2e.pages.Dashboard.Toolbar.toolbarItems('Dashboard settings').click(); + // @todo use the time range picker's time zone control selectOption(e2e.pages.Dashboard.Settings.General.timezone(), timezone); - e2e.pages.Dashboard.Settings.General.saveDashBoard().click(); + e2e.components.BackButton.backArrow().click(); + + if (timeRange) { + setDashboardTimeRange(timeRange); + } + + e2e.pages.Dashboard.Toolbar.toolbarItems('Save dashboard').click(); e2e.pages.SaveDashboardAsModal.newName() .clear() diff --git a/packages/grafana-e2e/src/flows/openDashboard.ts b/packages/grafana-e2e/src/flows/openDashboard.ts index 52fbb7214aa..fc85e1d7b66 100644 --- a/packages/grafana-e2e/src/flows/openDashboard.ts +++ b/packages/grafana-e2e/src/flows/openDashboard.ts @@ -1,21 +1,15 @@ +import { DashboardTimeRangeConfig, setDashboardTimeRange } from './setDashboardTimeRange'; import { e2e } from '../index'; import { getScenarioContext } from '../support/scenarioContext'; export interface OpenDashboardConfig { + timeRange?: DashboardTimeRangeConfig; uid: string; - timeRange: { - from: string; - to: string; - }; } export const openDashboard = (config?: Partial) => getScenarioContext().then(({ lastAddedDashboardUid }: any) => { const fullConfig = { - timeRange: { - from: '2020-01-01 00:00:00', - to: '2020-01-01 01:00:00', - }, uid: lastAddedDashboardUid, ...config, } as OpenDashboardConfig; @@ -24,25 +18,9 @@ export const openDashboard = (config?: Partial) => e2e.pages.Dashboard.visit(uid); - e2e.pages.Dashboard.Toolbar.navBar().within(() => { - e2e() - .get('[aria-label="TimePicker Open Button"]') - .click(); - e2e() - .get('[aria-label="TimePicker absolute time range"]') - .click(); - e2e() - .get('[aria-label="TimePicker from field"]') - .clear() - .type(timeRange.from); - e2e() - .get('[aria-label="TimePicker to field"]') - .clear() - .type(timeRange.to); - e2e() - .get('[aria-label="TimePicker submit button"]') - .click(); - }); + if (timeRange) { + setDashboardTimeRange(timeRange); + } // @todo remove `wrap` when possible return e2e().wrap({ config: fullConfig }); diff --git a/packages/grafana-e2e/src/flows/setDashboardTimeRange.ts b/packages/grafana-e2e/src/flows/setDashboardTimeRange.ts new file mode 100644 index 00000000000..aee02b3efe2 --- /dev/null +++ b/packages/grafana-e2e/src/flows/setDashboardTimeRange.ts @@ -0,0 +1,27 @@ +import { e2e } from '../index'; + +export interface DashboardTimeRangeConfig { + from: string; + to: string; +} + +export const setDashboardTimeRange = ({ from, to }: DashboardTimeRangeConfig) => + e2e.pages.Dashboard.Toolbar.navBar().within(() => { + e2e() + .get('[aria-label="TimePicker Open Button"]') + .click(); + e2e() + .get('[aria-label="TimePicker absolute time range"]') + .click(); + e2e() + .get('[aria-label="TimePicker from field"]') + .clear() + .type(from); + e2e() + .get('[aria-label="TimePicker to field"]') + .clear() + .type(to); + e2e() + .get('[aria-label="TimePicker submit button"]') + .click(); + });