You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jl...@apache.org on 2026/05/21 02:31:08 UTC
(superset) branch master updated: fix(tests): fix flaky FileHandler test by awaiting LaunchQueue consumer in afterEach (#39508)
This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new b1ca8cac6b6 fix(tests): fix flaky FileHandler test by awaiting LaunchQueue consumer in afterEach (#39508)
b1ca8cac6b6 is described below
commit b1ca8cac6b6a245de1e1e0f751a5b27093f78159
Author: Maxime Beauchemin <ma...@gmail.com>
AuthorDate: Wed May 20 19:31:01 2026 -0700
fix(tests): fix flaky FileHandler test by awaiting LaunchQueue consumer in afterEach (#39508)
Co-authored-by: Claude Opus 4.6 <no...@anthropic.com>
Co-authored-by: sadpandajoe <jc...@gmail.com>
---
superset-frontend/spec/helpers/testing-library.tsx | 2 +-
.../src/pages/FileHandler/index.test.tsx | 19 +++++++++++++++++--
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/superset-frontend/spec/helpers/testing-library.tsx b/superset-frontend/spec/helpers/testing-library.tsx
index e97a5ce85a7..c55f2991c0e 100644
--- a/superset-frontend/spec/helpers/testing-library.tsx
+++ b/superset-frontend/spec/helpers/testing-library.tsx
@@ -97,7 +97,7 @@ export function createWrapper(options?: Options) {
}
if (useDnd) {
- // @ts-expect-error react-dnd types not updated for React 18
+ // @ts-ignore react-dnd's DndProviderProps omits `children` under React 18 types
result = <DndProvider backend={HTML5Backend}>{result}</DndProvider>;
}
diff --git a/superset-frontend/src/pages/FileHandler/index.test.tsx b/superset-frontend/src/pages/FileHandler/index.test.tsx
index a337a88a708..a4496625fa7 100644
--- a/superset-frontend/src/pages/FileHandler/index.test.tsx
+++ b/superset-frontend/src/pages/FileHandler/index.test.tsx
@@ -117,6 +117,7 @@ type LaunchQueue = {
const pendingTimerIds = new Set<ReturnType<typeof setTimeout>>();
const MAX_CONSUMER_POLL_ATTEMPTS = 50;
+const consumerPromises: Promise<void>[] = [];
// Defer the consumer call to a macrotask so it doesn't fire synchronously inside
// the component's useEffect — calling it inline deadlocks Jest because the
@@ -131,7 +132,11 @@ const setupLaunchQueue = (fileHandle: MockFileHandle | null = null) => {
if (fileHandle) {
const id = setTimeout(() => {
pendingTimerIds.delete(id);
- consumer({ files: [fileHandle] });
+ consumerPromises.push(
+ Promise.resolve(consumer({ files: [fileHandle] })).then(
+ () => undefined,
+ ),
+ );
}, 0);
pendingTimerIds.add(id);
}
@@ -165,9 +170,19 @@ beforeEach(() => {
.launchQueue;
});
-afterEach(() => {
+afterEach(async () => {
pendingTimerIds.forEach(id => clearTimeout(id));
pendingTimerIds.clear();
+ if (consumerPromises.length > 0) {
+ const results = await Promise.allSettled(consumerPromises);
+ results.forEach(r => {
+ if (r.status === 'rejected') {
+ // eslint-disable-next-line no-console
+ console.warn('LaunchQueue consumer rejected:', r.reason);
+ }
+ });
+ consumerPromises.length = 0;
+ }
delete (window as unknown as Window & { launchQueue?: LaunchQueue })
.launchQueue;
});