You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Confirm yellow warning stays after the valid file finishes uploading
Click dismiss on the rejected entry — entry removed, yellow warning disappears
Multiple rejected files
Drop two unsupported files
Both rejected entries visible, yellow warning present
Dismiss one — yellow warning stays (one entry remains)
Dismiss the second — yellow warning disappears
New drop clears old rejections
Drop one unsupported file — rejected entry visible, yellow warning present
Drop one supported file — rejected entry from the previous drop disappears immediately and yellow warning clears immediately on drop (before upload completes)
Note: The test sets store.errorMessage = "Some files may not be uploadable." and then calls store.dismissFile(fileB) where fileB is not in the list. After the filter, fileA (a validationError file) still remains, so setMessage() is never called — the message is preserved only because the guard (!this.files.some(f => f.fileStatus === "validationError")) is false, not because the method is a no-op overall. The test accidentally passes for the right behaviour but the assertion comment is misleading. Consider renaming the test to "keeps errorMessage when dismissed file is not in the list and validationErrors remain" to accurately describe what is actually exercised.
⚠️ Low — makeStore() bypasses makeObservable; MobX reactivity not exercised in store tests
Note:Object.create(FileUploaderStore.prototype) followed by Object.assign(store, {...}) skips the constructor, so makeObservable is never called. The tests therefore exercise plain JS object mutation rather than MobX actions/observables. This is fine for the current assertions, but if a future test relies on reaction, computed, or autorun, it will silently not work. A short comment explaining the intentional trade-off would prevent confusion for future contributors:
// Object.create bypasses the constructor intentionally — makeObservable not needed// for these pure logic assertions.
⚠️ Low — Array index used as key for custom action buttons (pre-existing, now newly visible)
File:packages/pluggableWidgets/file-uploader-web/src/components/ActionsBar.tsx line 34
Note:key={i} uses the array index. This is pre-existing code not introduced by this PR, but since ActionsBar is being reviewed now it is worth noting. If custom buttons are reordered or conditionally included, React may reuse DOM nodes incorrectly. A stable key such as a.buttonCaption.value or a dedicated id from the XML property would be safer.
Positives
dismissValidationErrors() is correctly kept private — the internal clean-up on new drop is an implementation detail not needed on the public API.
dismiss: action is correctly registered in makeObservable in FileStore, ensuring MobX tracks the state mutation through dismissFile.
The isDragActive && isDragReject guard in Dropzone.tsx is a precise, minimal fix for the ghost-warning bug — no over-engineering.
All three new test files cover the main happy path, the edge cases (last-validation-error cleared, other files unaffected), and the UI interaction (click → dismiss() called) — good coverage breadth.
CHANGELOG entry is present and correctly formatted under [Unreleased] / Fixed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull request type
Bug fix (non-breaking change which fixes an issue)
Description
What should be covered while testing?
Single rejected file
Mixed batch (valid + invalid)
Multiple rejected files
New drop clears old rejections