summaryrefslogtreecommitdiff
path: root/spec/frontend/helpers/wait_for_attribute_change.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/helpers/wait_for_attribute_change.js')
-rw-r--r--spec/frontend/helpers/wait_for_attribute_change.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/spec/frontend/helpers/wait_for_attribute_change.js b/spec/frontend/helpers/wait_for_attribute_change.js
new file mode 100644
index 00000000000..8f22d569222
--- /dev/null
+++ b/spec/frontend/helpers/wait_for_attribute_change.js
@@ -0,0 +1,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 });
+ });