From 023a73cab8ad59a61733e39be4737b07966ed794 Mon Sep 17 00:00:00 2001 From: Severiano Badajoz Date: Mon, 9 Mar 2020 17:01:22 -0700 Subject: [PATCH] smoke-test centroids + graph overlay layer (#1189) * add test labels * prettier + add clcik return to clickOn() * prettier + begin test * finish label counting test * add util to get coordinates of element * add test id to labels * add test to check overlay transform * remove logs * rename to match master --- client/__tests__/e2e/e2e.test.js | 52 +++++++++++++++++++ client/__tests__/e2e/puppeteerUtils.js | 21 +++++--- .../graph/overlays/centroidLabels.js | 2 + client/src/components/menubar/index.js | 2 + 4 files changed, 69 insertions(+), 8 deletions(-) diff --git a/client/__tests__/e2e/e2e.test.js b/client/__tests__/e2e/e2e.test.js index 6dad908c..2db6ffd1 100644 --- a/client/__tests__/e2e/e2e.test.js +++ b/client/__tests__/e2e/e2e.test.js @@ -281,3 +281,55 @@ describe("ui elements don't error", () => { await page.evaluate("window.scrollBy(0, 1000);"); }); }); + +describe("centroid labels", () => { + test("labels are created", async () => { + await utils.clickOn("centroid-label-toggle"); + const labels = Object.keys(data.categorical); + /* eslint-disable no-await-in-loop */ + // Toggle colorby for each category and check to see if labels are generated + for (let i = 0, { length } = labels; i < length; i += 1) { + const label = labels[i]; + await utils.clickOn(`colorby-${label}`); + const generatedLabels = await utils.getAllByClass("centroid-label"); + // Number of labels generated should be equal to size of the object + expect(generatedLabels).toHaveLength( + Object.keys(data.categorical[label]).length + ); + } + /* eslint-enable no-await-in-loop */ + }); +}); + +describe("graph overlay", () => { + test("transform centroids correctly", async () => { + const category = Object.keys(data.categorical)[0]; + await utils.clickOn("centroid-label-toggle"); + await utils.clickOn(`colorby-${category}`); + await utils.clickOn("mode-pan-zoom"); + const panCoords = await cxgActions.calcDragCoordinates( + "layout-graph", + data.pan["coordinates-as-percent"] + ); + + const categoryValue = Object.keys(data.categorical[category])[0]; + const initialCoordinates = await utils.getElementCoordinates( + `${categoryValue}-centroid-label` + ); + await cxgActions.drag( + "layout-graph", + panCoords.start, + panCoords.end, + false + ); + const terminalCoordinates = await utils.getElementCoordinates( + `${categoryValue}-centroid-label` + ); + expect(terminalCoordinates[0] - initialCoordinates[0]).toBeCloseTo( + panCoords.end.x - panCoords.start.x + ); + expect(terminalCoordinates[1] - initialCoordinates[1]).toBeCloseTo( + panCoords.end.y - panCoords.start.y + ); + }); +}); diff --git a/client/__tests__/e2e/puppeteerUtils.js b/client/__tests__/e2e/puppeteerUtils.js index 7f3411c6..49b21f2b 100644 --- a/client/__tests__/e2e/puppeteerUtils.js +++ b/client/__tests__/e2e/puppeteerUtils.js @@ -1,5 +1,4 @@ export const puppeteerUtils = page => ({ - async waitByID(testId, props = {}) { return page.waitForSelector(`[data-testid='${testId}']`, props); }, @@ -15,9 +14,8 @@ export const puppeteerUtils = page => ({ }, async getAllByClass(testClass) { - return page.$$eval( - `[data-testclass=${testClass}]`, - eles => eles.map(ele => ele.dataset.testid) + return page.$$eval(`[data-testclass=${testClass}]`, eles => + eles.map(ele => ele.dataset.testid) ); }, @@ -45,10 +43,11 @@ export const puppeteerUtils = page => ({ await page.type(selector, text); }, - async clickOn(testId, options={}) { - await this.waitByID(testId); - await page.click(`[data-testid='${testId}']`, options); + async clickOn(testid, options = {}) { + await this.waitByID(testid); + const click = await page.click(`[data-testid='${testid}']`, options); await page.waitFor(50); + return click; }, async getOneElementInnerHTML(selector) { @@ -59,6 +58,12 @@ export const puppeteerUtils = page => ({ async getOneElementInnerText(selector) { await page.waitForSelector(selector); return page.$eval(selector, el => el.innerText); + }, + + async getElementCoordinates(testid) { + return page.$eval(`[data-testid='${testid}']`, elem => { + const { left, top } = elem.getBoundingClientRect(); + return [left, top]; + }); } }); - diff --git a/client/src/components/graph/overlays/centroidLabels.js b/client/src/components/graph/overlays/centroidLabels.js index 263a62d4..db6aa706 100644 --- a/client/src/components/graph/overlays/centroidLabels.js +++ b/client/src/components/graph/overlays/centroidLabels.js @@ -62,6 +62,8 @@ class CentroidLabels extends PureComponent { key={key} className="centroid-label" transform={`translate(${value[0]}, ${value[1]})`} + data-testclass="centroid-label" + data-testid={`${key}-centroid-label`} >