smoke.test.ts 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { Browser, Page, Target } from 'puppeteer-core';
  2. import { e2eScenario } from 'e2e-test/core/scenario';
  3. import { addDataSourcePage } from 'e2e-test/pages/datasources/addDataSourcePage';
  4. import { editDataSourcePage } from 'e2e-test/pages/datasources/editDataSourcePage';
  5. import { dataSourcesPage } from 'e2e-test/pages/datasources/dataSources';
  6. import { createDashboardPage } from 'e2e-test/pages/dashboards/createDashboardPage';
  7. import { saveDashboardModal } from 'e2e-test/pages/dashboards/saveDashboardModal';
  8. import { dashboardsPageFactory } from 'e2e-test/pages/dashboards/dashboardsPage';
  9. import { panel } from 'e2e-test/pages/panels/panel';
  10. import { editPanelPage } from 'e2e-test/pages/panels/editPanel';
  11. import { constants } from 'e2e-test/core/constants';
  12. import { sharePanelModal } from 'e2e-test/pages/panels/sharePanelModal';
  13. import { takeScreenShot, compareScreenShots } from 'e2e-test/core/images';
  14. e2eScenario(
  15. 'Login scenario, create test data source, dashboard, panel, and export scenario',
  16. 'should pass',
  17. async (browser: Browser, page: Page) => {
  18. // Add TestData DB
  19. await addDataSourcePage.init(page);
  20. await addDataSourcePage.navigateTo();
  21. await addDataSourcePage.pageObjects.testDataDB.exists();
  22. await addDataSourcePage.pageObjects.testDataDB.click();
  23. await editDataSourcePage.init(page);
  24. await editDataSourcePage.waitForNavigation();
  25. await editDataSourcePage.pageObjects.saveAndTest.click();
  26. await editDataSourcePage.pageObjects.alert.exists();
  27. await editDataSourcePage.pageObjects.alertMessage.containsText('Data source is working');
  28. // Verify that data source is listed
  29. const url = await editDataSourcePage.getUrlWithoutBaseUrl();
  30. const expectedUrl = url.substring(1, url.length - 1);
  31. const selector = `a[href="${expectedUrl}"]`;
  32. await dataSourcesPage.init(page);
  33. await dataSourcesPage.navigateTo();
  34. await dataSourcesPage.expectSelector({ selector });
  35. // Create a new Dashboard
  36. await createDashboardPage.init(page);
  37. await createDashboardPage.navigateTo();
  38. await createDashboardPage.pageObjects.addQuery.click();
  39. await editPanelPage.init(page);
  40. await editPanelPage.waitForNavigation();
  41. await editPanelPage.pageObjects.queriesTab.click();
  42. await editPanelPage.pageObjects.scenarioSelect.select('string:csv_metric_values');
  43. await editPanelPage.pageObjects.visualizationTab.click();
  44. await editPanelPage.pageObjects.showXAxis.click();
  45. await editPanelPage.pageObjects.saveDashboard.click();
  46. // Confirm save modal
  47. await saveDashboardModal.init(page);
  48. await saveDashboardModal.expectSelector({ selector: 'save-dashboard-as-modal' });
  49. const dashboardTitle = new Date().toISOString();
  50. await saveDashboardModal.pageObjects.name.enter(dashboardTitle);
  51. await saveDashboardModal.pageObjects.save.click();
  52. // Share the dashboard
  53. const dashboardsPage = dashboardsPageFactory(dashboardTitle);
  54. await dashboardsPage.init(page);
  55. await dashboardsPage.navigateTo();
  56. await dashboardsPage.pageObjects.dashboard.exists();
  57. await dashboardsPage.pageObjects.dashboard.click();
  58. await panel.init(page);
  59. await panel.pageObjects.panelTitle.click();
  60. await panel.pageObjects.share.click();
  61. // Verify that a new tab is opened
  62. const targetPromise = new Promise(resolve => browser.once('targetcreated', resolve));
  63. await sharePanelModal.init(page);
  64. await sharePanelModal.pageObjects.directLinkRenderedImage.click();
  65. const newTarget: Target = (await targetPromise) as Target;
  66. expect(newTarget.url()).toContain(`${constants.baseUrl}/render/d-solo`);
  67. // Take snapshot of page
  68. const newPage = await newTarget.page();
  69. const fileName = 'smoke-test-scenario';
  70. await takeScreenShot(newPage, fileName);
  71. await compareScreenShots(fileName);
  72. }
  73. );