42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
module.exports = async (page, scenario) => {
|
|
const hoverSelector = scenario.hoverSelectors || scenario.hoverSelector;
|
|
const clickSelector = scenario.clickSelectors || scenario.clickSelector;
|
|
const keyPressSelector = scenario.keyPressSelectors || scenario.keyPressSelector;
|
|
const scrollToSelector = scenario.scrollToSelector;
|
|
const postInteractionWait = scenario.postInteractionWait; // selector [str] | ms [int]
|
|
|
|
if (keyPressSelector) {
|
|
for (const keyPressSelectorItem of [].concat(keyPressSelector)) {
|
|
await page.waitForSelector(keyPressSelectorItem.selector);
|
|
await page.type(keyPressSelectorItem.selector, keyPressSelectorItem.keyPress);
|
|
}
|
|
}
|
|
|
|
if (hoverSelector) {
|
|
for (const hoverSelectorIndex of [].concat(hoverSelector)) {
|
|
await page.waitForSelector(hoverSelectorIndex);
|
|
await page.hover(hoverSelectorIndex);
|
|
}
|
|
}
|
|
|
|
if (clickSelector) {
|
|
for (const clickSelectorIndex of [].concat(clickSelector)) {
|
|
await page.waitForSelector(clickSelectorIndex);
|
|
await page.click(clickSelectorIndex);
|
|
}
|
|
}
|
|
|
|
if (postInteractionWait) {
|
|
await new Promise(resolve => {
|
|
setTimeout(resolve, postInteractionWait);
|
|
});
|
|
}
|
|
|
|
if (scrollToSelector) {
|
|
await page.waitForSelector(scrollToSelector);
|
|
await page.evaluate(scrollToSelector => {
|
|
document.querySelector(scrollToSelector).scrollIntoView();
|
|
}, scrollToSelector);
|
|
}
|
|
};
|