From c3ca46d5f6d7b29df3343cb32c7b658567c616f2 Mon Sep 17 00:00:00 2001 From: Ashley Harrison Date: Thu, 16 Dec 2021 09:28:37 +0000 Subject: [PATCH] Chore: Login via the API by default in Cypress (#43167) * Use the api to login in cypress by default * export getBaseUrl * Revert "export getBaseUrl" This reverts commit ae7eecea37bbea6407bd45e6f8e87160925d5913. * just use BASE_URL from the env * fix exemplars test * move into separate functions --- e2e/shared/smokeTestScenario.ts | 1 + e2e/various-suite/exemplars.spec.ts | 2 +- packages/grafana-e2e/src/flows/login.ts | 22 +++++++++++++++++++- packages/grafana-e2e/src/support/scenario.ts | 4 +++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/e2e/shared/smokeTestScenario.ts b/e2e/shared/smokeTestScenario.ts index fa129cd5a14..b5c0a4bb28e 100644 --- a/e2e/shared/smokeTestScenario.ts +++ b/e2e/shared/smokeTestScenario.ts @@ -6,6 +6,7 @@ export const smokeTestScenario = { addScenarioDataSource: true, addScenarioDashBoard: true, skipScenario: false, + loginViaApi: false, scenario: () => { e2e.flows.openDashboard(); e2e.components.PageToolbar.item('Add panel').click(); diff --git a/e2e/various-suite/exemplars.spec.ts b/e2e/various-suite/exemplars.spec.ts index 5a89c3528cd..f75faa114d2 100644 --- a/e2e/various-suite/exemplars.spec.ts +++ b/e2e/various-suite/exemplars.spec.ts @@ -21,7 +21,7 @@ describe('Exemplars', () => { e2e.flows.login('admin', 'admin'); e2e() - .request({ url: `/api/datasources/name/${dataSourceName}`, failOnStatusCode: false }) + .request({ url: `${e2e.env('BASE_URL')}/api/datasources/name/${dataSourceName}`, failOnStatusCode: false }) .then((response) => { if (response.isOkStatusCode) { return; diff --git a/packages/grafana-e2e/src/flows/login.ts b/packages/grafana-e2e/src/flows/login.ts index 300d8fed5c4..744e4332754 100644 --- a/packages/grafana-e2e/src/flows/login.ts +++ b/packages/grafana-e2e/src/flows/login.ts @@ -1,9 +1,21 @@ import { e2e } from '../index'; +import { fromBaseUrl } from '../support/url'; const DEFAULT_USERNAME = 'admin'; const DEFAULT_PASSWORD = 'admin'; -export const login = (username = DEFAULT_USERNAME, password = DEFAULT_PASSWORD) => { +const loginApi = (username: string, password: string) => { + cy.request({ + method: 'POST', + url: fromBaseUrl('/login'), + body: { + user: username, + password, + }, + }); +}; + +const loginUi = (username: string, password: string) => { e2e().logToConsole('Logging in with username:', username); e2e.pages.Login.visit(); e2e.pages.Login.username() @@ -18,5 +30,13 @@ export const login = (username = DEFAULT_USERNAME, password = DEFAULT_PASSWORD) } e2e().get('.login-page').should('not.exist'); +}; + +export const login = (username = DEFAULT_USERNAME, password = DEFAULT_PASSWORD, loginViaApi = true) => { + if (loginViaApi) { + loginApi(username, password); + } else { + loginUi(username, password); + } e2e().logToConsole('Logged in with username:', username); }; diff --git a/packages/grafana-e2e/src/support/scenario.ts b/packages/grafana-e2e/src/support/scenario.ts index 1a499c8218a..b4926b5bfbc 100644 --- a/packages/grafana-e2e/src/support/scenario.ts +++ b/packages/grafana-e2e/src/support/scenario.ts @@ -7,6 +7,7 @@ export interface ScenarioArguments { skipScenario?: boolean; addScenarioDataSource?: boolean; addScenarioDashBoard?: boolean; + loginViaApi?: boolean; } export const e2eScenario = ({ @@ -16,12 +17,13 @@ export const e2eScenario = ({ skipScenario = false, addScenarioDataSource = false, addScenarioDashBoard = false, + loginViaApi = true, }: ScenarioArguments) => { describe(describeName, () => { if (skipScenario) { it.skip(itName, () => scenario()); } else { - before(() => e2e.flows.login(e2e.env('USERNAME'), e2e.env('PASSWORD'))); + before(() => e2e.flows.login(e2e.env('USERNAME'), e2e.env('PASSWORD'), loginViaApi)); beforeEach(() => { Cypress.Cookies.preserveOnce('grafana_session');