Make smoke tests faster, more stable (#1195)

* Refactor smoke tests & utils for conciseness/style

* Modularize test utilities
This commit is contained in:
Matt Weiden
2020-03-04 16:11:32 -08:00
committed by GitHub
parent cc890fe391
commit 7b77bf4bdd
5 changed files with 320 additions and 377 deletions
+26 -45
View File
@@ -3,16 +3,16 @@ Smoke test suite that will be run in Travis CI
Tests included in this file are expected to be relatively stable and test core features
*/
import { appUrlBase, DEBUG, DATASET } from "./config";
import { setupTestBrowser } from "./puppeteerUtils";
import { appUrlBase, DATASET } from "./config";
import { setupTestBrowser } from "./testBrowser";
import { datasets } from "./data";
let browser, page, utils, cxgActions, spy;
const browserViewport = { width: 1280, height: 960 };
let data = datasets[DATASET];
let browser, page, utils, cxgActions;
const data = datasets[DATASET];
beforeAll(async () => {
[browser, page, utils, cxgActions] = await setupTestBrowser(browserViewport);
const browserViewport = { width: 1280, height: 960 };
[browser, page, utils, cxgActions] = await setupTestBrowser(browserViewport);
});
beforeEach(async () => {
@@ -20,13 +20,13 @@ beforeEach(async () => {
});
afterAll(() => {
browser.close();
if (browser !== undefined) browser.close();
});
describe("did launch", () => {
test("page launched", async () => {
let el = await utils.getOneElementInnerHTML("[data-testid='header']");
expect(el).toBe(data.title);
const element = await utils.getOneElementInnerHTML("[data-testid='header']");
expect(element).toBe(data.title);
});
});
@@ -34,9 +34,7 @@ describe("metadata loads", () => {
test("categories and values from dataset appear", async () => {
for (const label in data.categorical) {
await utils.waitByID(`category-${label}`);
const categoryName = await utils.getOneElementInnerText(
`[data-testid="category-${label}"]`
);
const categoryName = await utils.getOneElementInnerText(`[data-testid="category-${label}"]`);
expect(categoryName).toMatch(label);
await utils.clickOn(`${label}:category-expand`);
const categories = await cxgActions.getAllCategoriesAndCounts(label);
@@ -84,9 +82,7 @@ describe("cell selection", () => {
await utils.clickOn(`${cellset.metadata}:category-expand`);
await utils.clickOn(`${cellset.metadata}:category-select`);
for (const val of cellset.values) {
await utils.clickOn(
`categorical-value-select-${cellset.metadata}-${val}`
);
await utils.clickOn(`categorical-value-select-${cellset.metadata}-${val}`);
}
const cellCount = await cxgActions.cellSet(1);
expect(cellCount).toBe(cellset.count);
@@ -108,20 +104,12 @@ describe("cell selection", () => {
});
describe("gene entry", () => {
test("search for single gene", async () => {
await cxgActions.addGeneToSearch(data.genes.search);
});
test("search for single gene", async () => cxgActions.addGeneToSearch(data.genes.search));
test("bulk add genes", async () => {
const testGenes = data.genes.bulkadd;
await utils.clickOn("section-bulk-add");
await utils.typeInto("input-bulk-add", testGenes.join(","));
await page.keyboard.press("Enter");
const allHistograms = await cxgActions.getAllHistograms(
"histogram-user-gene",
testGenes
);
await cxgActions.bulkAddGenes(testGenes);
const allHistograms = await cxgActions.getAllHistograms("histogram-user-gene", testGenes);
expect(allHistograms).toEqual(expect.arrayContaining(testGenes));
expect(allHistograms.length).toEqual(testGenes.length);
});
@@ -182,54 +170,47 @@ describe("subset", () => {
});
test("undo selection appends the top diff exp genes to user defined genes", async () => {
const userDefinedGenes = ["ACD", "AAR2", "AATF", "ARSG"];
const userDefinedGenes = data.genes.bulkadd;
const diffExpGenes = data.diffexp["gene-results"];
for (const userDefinedGene of userDefinedGenes) {
await cxgActions.addGeneToSearch(userDefinedGene);
}
await cxgActions.bulkAddGenes(userDefinedGenes);
const userDefinedHistograms = await cxgActions.getAllHistograms("histogram-user-gene", userDefinedGenes);
expect(userDefinedHistograms).toStrictEqual(userDefinedGenes);
expect(userDefinedHistograms).toEqual(expect.arrayContaining(userDefinedGenes));
await cxgActions.subset({x1: 0.15, y1: 0.10, x2: 0.98, y2: 0.98});
await cxgActions.runDiffExp(data.diffexp.cellset1, data.diffexp.cellset2);
const diffExpHistograms = await cxgActions.getAllHistograms("histogram-diffexp", diffExpGenes);
expect(diffExpHistograms).toStrictEqual(diffExpGenes);
expect(diffExpHistograms).toEqual(expect.arrayContaining(diffExpGenes));
await utils.clickOn("reset-subset-button");
const expected = [].concat(userDefinedGenes, diffExpGenes);
const userDefinedHistogramsAfterSubset = await cxgActions.getAllHistograms(
"histogram-user-gene",
expected
);
expect(userDefinedHistogramsAfterSubset).toStrictEqual(expected);
expect(userDefinedHistogramsAfterSubset).toEqual(expect.arrayContaining(expected));
});
test("subset selection appends the top diff exp genes to user defined genes", async () => {
const userDefinedGenes = ["ACD", "AAR2", "AATF", "ARSG"];
const userDefinedGenes = data.genes.bulkadd;
const diffExpGenes = data.diffexp["gene-results"];
for (const userDefinedGene of userDefinedGenes) {
await cxgActions.addGeneToSearch(userDefinedGene);
}
await cxgActions.bulkAddGenes(userDefinedGenes);
const userDefinedHistograms = await cxgActions.getAllHistograms("histogram-user-gene", userDefinedGenes);
expect(userDefinedHistograms).toStrictEqual(userDefinedGenes);
expect(userDefinedHistograms).toEqual(expect.arrayContaining(userDefinedGenes));
await cxgActions.subset({x1: 0.15, y1: 0.10, x2: 0.98, y2: 0.98});
await cxgActions.runDiffExp(data.diffexp.cellset1, data.diffexp.cellset2);
const diffExpHistograms = await cxgActions.getAllHistograms("histogram-diffexp", diffExpGenes);
expect(diffExpHistograms).toStrictEqual(diffExpGenes);
expect(diffExpHistograms).toEqual(expect.arrayContaining(diffExpGenes));
await cxgActions.subset({x1: 0.16, y1: 0.11, x2: 0.97, y2: 0.97});
const expected = [].concat(userDefinedGenes, diffExpGenes);
const userDefinedHistogramsAfterSubset = await cxgActions.getAllHistograms(
"histogram-user-gene",
expected
);
expect(userDefinedHistogramsAfterSubset).toStrictEqual(expected);
expect(userDefinedHistogramsAfterSubset).toEqual(expect.arrayContaining(expected));
});
});
describe("scatter plot", () => {
test("scatter plot appears", async () => {
const testGenes = data.scatter.genes;
await utils.clickOn("section-bulk-add");
await utils.typeInto("input-bulk-add", Object.values(testGenes).join(","));
await page.keyboard.press("Enter");
await cxgActions.bulkAddGenes(Object.values(data.scatter.genes));
await utils.clickOn(`plot-x-${data.scatter.genes.x}`);
await utils.clickOn(`plot-y-${data.scatter.genes.y}`);
await utils.waitByID("scatterplot");
@@ -297,6 +278,6 @@ describe("ui elements don't error", () => {
panCoords.end,
false
);
await page.evaluate(`window.scrollBy(0, 1000);`);
await page.evaluate("window.scrollBy(0, 1000);");
});
});