OLD | NEW |
(Empty) | |
| 1 // Contains helper methods to verify expectations for tests related to Scroll |
| 2 // Anchoring |
| 3 var frame = () => new Promise((resolve) => { requestAnimationFrame(resolve); }); |
| 4 |
| 5 var waitFor = function(condition, failmsg, deadline) { |
| 6 if (!deadline) deadline = Date.now() + 1000; |
| 7 if (condition()) return Promise.resolve(); |
| 8 else if (Date.now() > deadline) return Promise.reject(failmsg); |
| 9 else return frame().then(() => waitFor(condition, failmsg, deadline)); |
| 10 }; |
| 11 |
| 12 var waitFrames = function(n, condition, failmsg) { |
| 13 var p = Promise.resolve(); |
| 14 var check = () => (!condition || condition() ? |
| 15 Promise.resolve() : Promise.reject(failmsg)); |
| 16 while (n--) |
| 17 p = p.then(check).then(frame); |
| 18 return p.then(check); |
| 19 }; |
| 20 |
| 21 var scrollSettlesAt = function(expectedY) { |
| 22 return waitFor(() => (scrollY == expectedY), |
| 23 "scroll did not reach " + expectedY) |
| 24 .then(() => waitFrames(3)) |
| 25 .then(() => waitFrames(3, () => (scrollY == expectedY), |
| 26 "scroll did not stay at " + expectedY)); |
| 27 }; |
OLD | NEW |