You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by di...@apache.org on 2022/10/13 16:26:18 UTC

[superset] 03/03: Test dashboards

This is an automated email from the ASF dual-hosted git repository.

diegopucci pushed a commit to branch chore/e2e-cross-references
in repository https://gitbox.apache.org/repos/asf/superset.git

commit f67ea62fbd6a014bbf825a896fa608af335b1389
Author: geido <di...@gmail.com>
AuthorDate: Thu Oct 13 19:25:23 2022 +0300

    Test dashboards
---
 .../cypress-base/cypress/fixtures/dashboards.json  | 28 +++++++
 .../cypress/integration/explore/chart.test.js      | 96 +++++++++++++---------
 .../cypress/integration/explore/utils.ts           | 12 +++
 3 files changed, 96 insertions(+), 40 deletions(-)

diff --git a/superset-frontend/cypress-base/cypress/fixtures/dashboards.json b/superset-frontend/cypress-base/cypress/fixtures/dashboards.json
index 083d7647b9..e4bd57971a 100644
--- a/superset-frontend/cypress-base/cypress/fixtures/dashboards.json
+++ b/superset-frontend/cypress-base/cypress/fixtures/dashboards.json
@@ -14,5 +14,33 @@
   {
     "dashboard_title": "4 - Sample dashboard",
     "slug": "4-sample-dashboard"
+  },
+  {
+    "dashboard_title": "5 - Sample dashboard",
+    "slug": "5-sample-dashboard"
+  },
+  {
+    "dashboard_title": "6 - Sample dashboard",
+    "slug": "6-sample-dashboard"
+  },
+  {
+    "dashboard_title": "7 - Sample dashboard",
+    "slug": "7-sample-dashboard"
+  },
+  {
+    "dashboard_title": "8 - Sample dashboard",
+    "slug": "8-sample-dashboard"
+  },
+  {
+    "dashboard_title": "9 - Sample dashboard",
+    "slug": "9-sample-dashboard"
+  },
+  {
+    "dashboard_title": "10 - Sample dashboard",
+    "slug": "10-sample-dashboard"
+  },
+  {
+    "dashboard_title": "11 - Sample dashboard",
+    "slug": "11-sample-dashboard"
   }
 ]
diff --git a/superset-frontend/cypress-base/cypress/integration/explore/chart.test.js b/superset-frontend/cypress-base/cypress/integration/explore/chart.test.js
index dc185b790d..3661d9070d 100644
--- a/superset-frontend/cypress-base/cypress/integration/explore/chart.test.js
+++ b/superset-frontend/cypress-base/cypress/integration/explore/chart.test.js
@@ -19,40 +19,62 @@
 import { FORM_DATA_DEFAULTS, NUM_METRIC } from './visualizations/shared.helper';
 import { CHART_LIST } from 'cypress/utils/urls';
 import {interceptFiltering} from './utils';
+import { saveChartToDashboard } from './utils';
+import { interceptGet as interceptDashboardGet } from 'cypress/integration/dashboard/utils';
+
+// SEARCH_THRESHOLD is 10. We need to add at least 11 dashboards to show search
+const SAMPLE_DASHBOARDS_INDEXES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
 
 function visitSampleChart(id) {
   cy.getBySel('table-row').first().contains(`${id} - Sample chart`).click();
   cy.intercept('POST', '/superset/explore_json/**').as('getJson');
 }
 
-function selectDashboard(dashboardName) {
-  cy.get(
-    '[data-test="save-chart-modal-select-dashboard-form"] [aria-label="Select a dashboard"]',
-  )
-    .first()
-    .click();
-  cy.get(`.ant-select-item-option[title="${dashboardName}"]`).click();
+function openDashboardsAddedTo() {
+  cy.getBySel("actions-trigger").click();
+  cy.get(".ant-dropdown-menu-submenu-title").contains("Dashboards added to").trigger("mouseover");
 }
 
-function saveToDashboard(dashboardName) {
-  cy.getBySel("query-save-button").click();
-  selectDashboard(dashboardName);
-  cy.getBySel("btn-modal-save").click();
+function closeDashboardsAddedTo() {
+  cy.get(".ant-dropdown-menu-submenu-title").contains("Dashboards added to").trigger("mouseout");
+  cy.getBySel("actions-trigger").click();
 }
 
-function openDashboardsAddedTo() {
-  cy.getBySel("actions-trigger").click();
-  cy.get(".ant-dropdown-menu-submenu-title").first().trigger("mouseover");
+function verifyDashboardsSubmenuItem(dashboardName) {
+  cy.get(".ant-dropdown-menu-submenu-popup").contains(dashboardName);
+  closeDashboardsAddedTo();
+}
+
+function verifyDashboardSearch() {
+  openDashboardsAddedTo();
+  cy.get(".ant-dropdown-menu-submenu-popup").trigger("mouseover");
+  cy.get(".ant-dropdown-menu-submenu-popup").find('input[placeholder="Search"]').type("1");
+  cy.get(".ant-dropdown-menu-submenu-popup").contains("1 - Sample dashboard");
+  cy.get(".ant-dropdown-menu-submenu-popup").find('input[placeholder="Search"]').type("Blahblah");
+  cy.get(".ant-dropdown-menu-submenu-popup").contains("No results found");
+  cy.get(".ant-dropdown-menu-submenu-popup").find('[aria-label="close-circle"]').click();
+  closeDashboardsAddedTo();
 }
 
-function verifySubmenuItem(itemName) {
-  cy.get(".ant-dropdown-menu-submenu-popup").contains(itemName).trigger("mouseout");
+function verifyDashboardLink() {
+  interceptDashboardGet();
+  openDashboardsAddedTo();
+  cy.get(".ant-dropdown-menu-submenu-popup").trigger("mouseover");
+  cy.get('.ant-dropdown-menu-submenu-popup a').first().invoke('removeAttr', 'target').click();
+  cy.wait("@get");
 }
 
 function verifyMetabar(text) {
   cy.getBySel("metadata-bar").contains(text);
 }
 
+function saveAndVerifyDashboard(number) {
+  saveChartToDashboard(`${number} - Sample dashboard`);
+  verifyMetabar(`Added to ${number} dashboard(s)`);
+  openDashboardsAddedTo();
+  verifyDashboardsSubmenuItem(`${number} - Sample dashboard`);
+}
+
 describe('Cross-referenced dashboards', () => {
   beforeEach(() => {
     interceptFiltering();
@@ -63,8 +85,8 @@ describe('Cross-referenced dashboards', () => {
   });
 
   before(() => {
-    cy.createSampleDashboards();
-    cy.createSampleCharts();
+    cy.createSampleDashboards(SAMPLE_DASHBOARDS_INDEXES);
+    cy.createSampleCharts([3]);
   });
 
   it('Shows the cross referenced dashboards', () => {
@@ -72,28 +94,22 @@ describe('Cross-referenced dashboards', () => {
 
     cy.getBySel("metadata-bar").contains("Not added to any dashboard");
     openDashboardsAddedTo();
-    verifySubmenuItem("None");
-
-    saveToDashboard("1 - Sample dashboard");
-    verifyMetabar("Added to 1 dashboard(s)");
-    openDashboardsAddedTo();
-    verifySubmenuItem("1 - Sample dashboard");
-
-    saveToDashboard("2 - Sample dashboard");
-    verifyMetabar("Added to 2 dashboard(s)");
-    openDashboardsAddedTo();
-    verifySubmenuItem("2 - Sample dashboard");
-
-    saveToDashboard("3 - Sample dashboard");
-    verifyMetabar("Added to 3 dashboard(s)");
-    openDashboardsAddedTo();
-    verifySubmenuItem("3 - Sample dashboard");
-
-    saveToDashboard("4 - Sample dashboard");
-    verifyMetabar("Added to 4 dashboard(s)");
-    openDashboardsAddedTo();
-    verifySubmenuItem("4 - Sample dashboard");
-
+    verifyDashboardsSubmenuItem("None");
+
+    saveAndVerifyDashboard("1");
+    saveAndVerifyDashboard("2");
+    saveAndVerifyDashboard("3");
+    saveAndVerifyDashboard("4");
+    saveAndVerifyDashboard("5");
+    saveAndVerifyDashboard("6");
+    saveAndVerifyDashboard("7");
+    saveAndVerifyDashboard("8");
+    saveAndVerifyDashboard("9");
+    saveAndVerifyDashboard("10");
+    saveAndVerifyDashboard("11");
+
+    verifyDashboardSearch();
+    verifyDashboardLink();
   });
 });
 
diff --git a/superset-frontend/cypress-base/cypress/integration/explore/utils.ts b/superset-frontend/cypress-base/cypress/integration/explore/utils.ts
index 0972bac552..8598a56734 100644
--- a/superset-frontend/cypress-base/cypress/integration/explore/utils.ts
+++ b/superset-frontend/cypress-base/cypress/integration/explore/utils.ts
@@ -45,3 +45,15 @@ export function setFilter(filter: string, option: string) {
 
   cy.wait('@filtering');
 }
+
+export function saveChartToDashboard(dashboardName: string) {
+  cy.getBySel("query-save-button").click();
+  cy.get(
+    '[data-test="save-chart-modal-select-dashboard-form"] [aria-label="Select a dashboard"]',
+  )
+    .first()
+    .click();
+  cy.get('.ant-select-selection-search-input[aria-label="Select a dashboard"]').type(dashboardName);
+  cy.get(`.ant-select-item-option[title="${dashboardName}"]`).click();
+  cy.getBySel("btn-modal-save").click();
+}
\ No newline at end of file