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 ae7eecea37.

* just use BASE_URL from the env

* fix exemplars test

* move into separate functions
This commit is contained in:
Ashley Harrison
2021-12-16 09:28:37 +00:00
committed by GitHub
parent d03aef1951
commit c3ca46d5f6
4 changed files with 26 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ export const smokeTestScenario = {
addScenarioDataSource: true, addScenarioDataSource: true,
addScenarioDashBoard: true, addScenarioDashBoard: true,
skipScenario: false, skipScenario: false,
loginViaApi: false,
scenario: () => { scenario: () => {
e2e.flows.openDashboard(); e2e.flows.openDashboard();
e2e.components.PageToolbar.item('Add panel').click(); e2e.components.PageToolbar.item('Add panel').click();

View File

@@ -21,7 +21,7 @@ describe('Exemplars', () => {
e2e.flows.login('admin', 'admin'); e2e.flows.login('admin', 'admin');
e2e() e2e()
.request({ url: `/api/datasources/name/${dataSourceName}`, failOnStatusCode: false }) .request({ url: `${e2e.env('BASE_URL')}/api/datasources/name/${dataSourceName}`, failOnStatusCode: false })
.then((response) => { .then((response) => {
if (response.isOkStatusCode) { if (response.isOkStatusCode) {
return; return;

View File

@@ -1,9 +1,21 @@
import { e2e } from '../index'; import { e2e } from '../index';
import { fromBaseUrl } from '../support/url';
const DEFAULT_USERNAME = 'admin'; const DEFAULT_USERNAME = 'admin';
const DEFAULT_PASSWORD = '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().logToConsole('Logging in with username:', username);
e2e.pages.Login.visit(); e2e.pages.Login.visit();
e2e.pages.Login.username() e2e.pages.Login.username()
@@ -18,5 +30,13 @@ export const login = (username = DEFAULT_USERNAME, password = DEFAULT_PASSWORD)
} }
e2e().get('.login-page').should('not.exist'); 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); e2e().logToConsole('Logged in with username:', username);
}; };

View File

@@ -7,6 +7,7 @@ export interface ScenarioArguments {
skipScenario?: boolean; skipScenario?: boolean;
addScenarioDataSource?: boolean; addScenarioDataSource?: boolean;
addScenarioDashBoard?: boolean; addScenarioDashBoard?: boolean;
loginViaApi?: boolean;
} }
export const e2eScenario = ({ export const e2eScenario = ({
@@ -16,12 +17,13 @@ export const e2eScenario = ({
skipScenario = false, skipScenario = false,
addScenarioDataSource = false, addScenarioDataSource = false,
addScenarioDashBoard = false, addScenarioDashBoard = false,
loginViaApi = true,
}: ScenarioArguments) => { }: ScenarioArguments) => {
describe(describeName, () => { describe(describeName, () => {
if (skipScenario) { if (skipScenario) {
it.skip(itName, () => scenario()); it.skip(itName, () => scenario());
} else { } else {
before(() => e2e.flows.login(e2e.env('USERNAME'), e2e.env('PASSWORD'))); before(() => e2e.flows.login(e2e.env('USERNAME'), e2e.env('PASSWORD'), loginViaApi));
beforeEach(() => { beforeEach(() => {
Cypress.Cookies.preserveOnce('grafana_session'); Cypress.Cookies.preserveOnce('grafana_session');