| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import { Browser, Page, Target } from 'puppeteer-core';
- import { e2eScenario, constants, takeScreenShot, compareScreenShots } from '@grafana/toolkit';
- import { addDataSourcePage } from 'e2e-test/pages/datasources/addDataSourcePage';
- import { editDataSourcePage } from 'e2e-test/pages/datasources/editDataSourcePage';
- import { dataSourcesPage } from 'e2e-test/pages/datasources/dataSources';
- import { createDashboardPage } from 'e2e-test/pages/dashboards/createDashboardPage';
- import { saveDashboardModal } from 'e2e-test/pages/dashboards/saveDashboardModal';
- import { dashboardsPageFactory } from 'e2e-test/pages/dashboards/dashboardsPage';
- import { panel } from 'e2e-test/pages/panels/panel';
- import { editPanelPage } from 'e2e-test/pages/panels/editPanel';
- import { sharePanelModal } from 'e2e-test/pages/panels/sharePanelModal';
- e2eScenario(
- 'Login scenario, create test data source, dashboard, panel, and export scenario',
- 'should pass',
- async (browser: Browser, page: Page) => {
- // Add TestData DB
- await addDataSourcePage.init(page);
- await addDataSourcePage.navigateTo();
- await addDataSourcePage.pageObjects.testDataDB.exists();
- await addDataSourcePage.pageObjects.testDataDB.click();
- await editDataSourcePage.init(page);
- await editDataSourcePage.waitForNavigation();
- await editDataSourcePage.pageObjects.saveAndTest.click();
- await editDataSourcePage.pageObjects.alert.exists();
- await editDataSourcePage.pageObjects.alertMessage.containsText('Data source is working');
- // Verify that data source is listed
- const url = await editDataSourcePage.getUrlWithoutBaseUrl();
- const expectedUrl = url.substring(1, url.length - 1);
- const selector = `a[href="${expectedUrl}"]`;
- await dataSourcesPage.init(page);
- await dataSourcesPage.navigateTo();
- await dataSourcesPage.expectSelector({ selector });
- // Create a new Dashboard
- await createDashboardPage.init(page);
- await createDashboardPage.navigateTo();
- await createDashboardPage.pageObjects.addQuery.click();
- await editPanelPage.init(page);
- await editPanelPage.waitForNavigation();
- await editPanelPage.pageObjects.queriesTab.click();
- await editPanelPage.pageObjects.scenarioSelect.select('string:csv_metric_values');
- await editPanelPage.pageObjects.visualizationTab.click();
- await editPanelPage.pageObjects.showXAxis.click();
- await editPanelPage.pageObjects.saveDashboard.click();
- // Confirm save modal
- await saveDashboardModal.init(page);
- await saveDashboardModal.expectSelector({ selector: 'save-dashboard-as-modal' });
- const dashboardTitle = new Date().toISOString();
- await saveDashboardModal.pageObjects.name.enter(dashboardTitle);
- await saveDashboardModal.pageObjects.save.click();
- await saveDashboardModal.pageObjects.success.exists();
- // Share the dashboard
- const dashboardsPage = dashboardsPageFactory(dashboardTitle);
- await dashboardsPage.init(page);
- await dashboardsPage.navigateTo();
- await dashboardsPage.pageObjects.dashboard.exists();
- await dashboardsPage.pageObjects.dashboard.click();
- await panel.init(page);
- await panel.pageObjects.panelTitle.click();
- await panel.pageObjects.share.click();
- // Verify that a new tab is opened
- const targetPromise = new Promise(resolve => browser.once('targetcreated', resolve));
- await sharePanelModal.init(page);
- await sharePanelModal.pageObjects.directLinkRenderedImage.click();
- const newTarget: Target = (await targetPromise) as Target;
- expect(newTarget.url()).toContain(`${constants.baseUrl}/render/d-solo`);
- // Take snapshot of page
- const newPage = await newTarget.page();
- const fileName = 'smoke-test-scenario';
- await takeScreenShot(newPage, fileName);
- await compareScreenShots(fileName);
- }
- );
|