* @param {string} selector * @param {number=} timeout * @return {!Promise}
(selectorOrElement, timeout = 10000)
| 316 | * @return {!Promise} |
| 317 | */ |
| 318 | waitForElementLayout(selectorOrElement, timeout = 10000) { |
| 319 | const elements = this.querySelectorAllOrElement(selectorOrElement); |
| 320 | if (!elements.length) { |
| 321 | throw new Error(`BrowserController query failed: ${selectorOrElement}`); |
| 322 | } |
| 323 | return poll( |
| 324 | `"${selectorOrElement}" to layout`, |
| 325 | () => { |
| 326 | // AMP elements set `readyState` to complete when their |
| 327 | // layoutCallback() promise is resolved. |
| 328 | const someNotReady = [].some.call( |
| 329 | elements, |
| 330 | (e) => e.readyState !== 'complete' |
| 331 | ); |
| 332 | return !someNotReady; |
| 333 | }, |
| 334 | /* onError */ undefined, |
| 335 | timeout |
| 336 | ); |
| 337 | } |
| 338 | |
| 339 | click(selectorOrElement) { |
| 340 | const element = this.querySelectorOrElement(selectorOrElement); |
no test coverage detected