import { act, fireEvent } from '../../../tests/utils';

export async function awaitPromise() {
  for (let i = 0; i < 10; i += 1) {
    // eslint-disable-next-line no-await-in-loop
    await Promise.resolve();
  }
}

export async function triggerMotionEnd(runAllTimers: boolean = true) {
  await awaitPromise();

  if (runAllTimers) {
    // Flush css motion state update
    for (let i = 0; i < 5; i += 1) {
      act(() => {
        jest.runAllTimers();
      });
    }
  }

  // document.querySelectorAll('.ant-notification-fade-leave').forEach(ele => {
  //   fireEvent.animationEnd(ele);
  // });
  document.querySelectorAll('[role="alert"]').forEach((ele) => {
    fireEvent.animationEnd(ele.parentNode?.parentNode!);
  });

  await awaitPromise();
}
