mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* WIP: intial commit * Tests: Runs e2e tests * Refactor: Adds BASE_URL support * Refactor: Adds namespacing * Refactor: Cleans up the Page api * Build: Adds to build-branches-and-prs job for testing * Build: Hardcoded image for now * Refactor: Uses Selectors in App * Refactor: Adds addDataSource flow * WIP * Refactor: Adds e2eScenario * Refactor: Adds add and delete scenarios * Refactor: Adds logging * Refactor: Adds ability to for Selectors with variables * Refactor: Using variable selectors instead * Refactor: Adds flow until Share Panel * Refactor: Adds clicking on rendered image link * Refactor: Deletes log output * Refactor: Updates snapshots * Chore: Reverts changes * Refactor: Removes log plugin because maybe it breaks yarn build * Refactor: Adds rendered image download * Refactor: Adds image comparison * Refactor: Removes uncaught errors override * Refactor: Changes order of images to compare * Refactor: Updates truth image * Build: Updates path to CI artifacts * Refactor: Cleaning up types and config * wip * Refactor: Cleans up external api * Refactor: More cleanup * Refactor: More cleanup * Refactor: Removes usages of Pages and Flows * Refactor: Removes last traces of Cypress in spec * Refactor: Adds comments
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { e2e } from '@grafana/e2e';
|
|
import { ScenarioContext } from '@grafana/e2e/src/support';
|
|
|
|
e2e.scenario({
|
|
describeName: 'Smoke tests',
|
|
itName: 'Login scenario, create test data source, dashboard, panel, and export scenario',
|
|
addScenarioDataSource: true,
|
|
addScenarioDashBoard: true,
|
|
skipScenario: false,
|
|
scenario: ({ dataSourceName, dashboardTitle, dashboardUid }: ScenarioContext) => {
|
|
e2e.flows.openDashboard(dashboardTitle);
|
|
e2e.pages.Dashboard.toolbarItems('Add panel').click();
|
|
e2e.pages.AddDashboard.ctaButtons('Add Query').click();
|
|
|
|
e2e.pages.Panels.EditPanel.tabItems('Queries').click();
|
|
e2e.pages.Panels.DataSource.TestData.QueryTab.scenarioSelect().select('CSV Metric Values');
|
|
|
|
e2e.pages.Panels.EditPanel.tabItems('Visualization').click();
|
|
|
|
e2e.pages.Panels.Visualization.Graph.VisualizationTab.xAxisSection()
|
|
.contains('Show')
|
|
.click();
|
|
|
|
e2e.flows.saveDashboard();
|
|
|
|
e2e.pages.Dashboard.backArrow().click();
|
|
|
|
e2e.pages.Panels.Panel.title('Panel Title').click();
|
|
|
|
e2e.pages.Panels.Panel.headerItems('Share').click();
|
|
|
|
e2e.pages.SharePanelModal.linkToRenderedImage().then(($a: any) => {
|
|
// extract the fully qualified href property
|
|
const url = $a.prop('href');
|
|
|
|
// Test that the image renderer returns 200 OK
|
|
e2e().request({ method: 'GET', url, timeout: 120000 });
|
|
|
|
// Download image
|
|
if (!e2e.env('CIRCLE_SHA1')) {
|
|
return;
|
|
}
|
|
|
|
const theOutputImage = `${e2e.config().screenshotsFolder}/theOutput/smoke-test-scenario.png`;
|
|
const theTruthImage = `${e2e.config().screenshotsFolder}/theTruth/smoke-test-scenario.png`;
|
|
|
|
e2e().wrap(
|
|
e2e.imgSrcToBlob(url).then((blob: any) => {
|
|
e2e.blobToBase64String(blob).then((base64String: string) => {
|
|
const data = base64String.replace(/^data:image\/\w+;base64,/, '');
|
|
e2e().writeFile(theOutputImage, data, 'base64');
|
|
});
|
|
})
|
|
);
|
|
e2e().wait(1000); // give the io a chance to flush image to disk
|
|
e2e().compareSnapshot({ pathToFileA: theOutputImage, pathToFileB: theTruthImage });
|
|
});
|
|
},
|
|
});
|