( id, selector, elementName, multipleElements = false, timeout = 10000, )
| 9 | }; |
| 10 | |
| 11 | function waitForElement( |
| 12 | id, |
| 13 | selector, |
| 14 | elementName, |
| 15 | multipleElements = false, |
| 16 | timeout = 10000, |
| 17 | ) { |
| 18 | |
| 19 | if (!multipleElements){ |
| 20 | customConsoleLog(id, `Waiting for ${elementName}`); |
| 21 | } |
| 22 | |
| 23 | return new Promise((resolve) => { |
| 24 | const startTime = Date.now(); |
| 25 | |
| 26 | const checkElement = () => { |
| 27 | const element = multipleElements |
| 28 | ? document.querySelectorAll(selector) |
| 29 | : document.querySelector(selector); |
| 30 | if (element) { |
| 31 | if (!multipleElements){ |
| 32 | customConsoleLog(id, `Found ${elementName}`); |
| 33 | } |
| 34 | resolve(element); |
| 35 | } else if (Date.now() - startTime >= timeout) { |
| 36 | customConsoleLog(id, `Timeout waiting for ${elementName}`); |
| 37 | resolve(null); |
| 38 | } else { |
| 39 | setTimeout(checkElement, 100); |
| 40 | } |
| 41 | }; |
| 42 | |
| 43 | checkElement(); |
| 44 | }); |
| 45 | } |
| 46 | |
| 47 | async function wait(seconds) { |
| 48 | return new Promise((resolve) => { |
no test coverage detected