mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-21 08:08:12 +08:00
* 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
70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
export const puppeteerUtils = page => ({
|
|
async waitByID(testId, props = {}) {
|
|
return page.waitForSelector(`[data-testid='${testId}']`, props);
|
|
},
|
|
|
|
async waitByClass(testClass, props = {}) {
|
|
return page.waitForSelector(`[data-testclass='${testClass}']`, props);
|
|
},
|
|
|
|
async waitForAllByIds(testIds) {
|
|
await Promise.all(
|
|
testIds.map(testId => page.waitForSelector(`[data-testid='${testId}']`))
|
|
);
|
|
},
|
|
|
|
async getAllByClass(testClass) {
|
|
return page.$$eval(`[data-testclass=${testClass}]`, eles =>
|
|
eles.map(ele => ele.dataset.testid)
|
|
);
|
|
},
|
|
|
|
async typeInto(testId, text) {
|
|
// blueprint's typeahead is treating typing weird, clicking & waiting first solves this
|
|
// only works for text without special characters
|
|
await this.waitByID(testId);
|
|
const selector = `[data-testid='${testId}']`;
|
|
// type ahead can be annoying if you don't pause before you type
|
|
await page.click(selector);
|
|
await page.waitFor(200);
|
|
await page.type(selector, text);
|
|
},
|
|
|
|
async clearInputAndTypeInto(testId, text) {
|
|
await this.waitByID(testId);
|
|
const selector = `[data-testid='${testId}']`;
|
|
// only works for text without special characters
|
|
// type ahead can be annoying if you don't pause before you type
|
|
await page.click(selector);
|
|
await page.waitFor(200);
|
|
// select all
|
|
await page.click(selector, { clickCount: 3 });
|
|
await page.keyboard.press("Backspace");
|
|
await page.type(selector, text);
|
|
},
|
|
|
|
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) {
|
|
await page.waitForSelector(selector);
|
|
return page.$eval(selector, el => el.innerHTML);
|
|
},
|
|
|
|
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];
|
|
});
|
|
}
|
|
});
|