summaryrefslogtreecommitdiff
path: root/spec/frontend/helpers/wait_for_attribute_change.js
blob: 8f22d569222b65cabff68ad1bdad415e38316fbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
export default (domElement, attributes, timeout = 1500) =>
  new Promise((resolve, reject) => {
    let observer;
    const timeoutId = setTimeout(() => {
      observer.disconnect();
      reject(new Error(`Could not see an attribute update within ${timeout} ms`));
    }, timeout);

    observer = new MutationObserver(() => {
      clearTimeout(timeoutId);
      observer.disconnect();
      resolve();
    });

    observer.observe(domElement, { attributes: true, attributeFilter: attributes });
  });