🤖 Fix Modal story tests timing issues in Chromatic #385
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.
Problem
The
EscapeKeyClosesandOverlayClickClosesstory tests were failing in Chromatic with this error:The tests were using fixed 100ms timeouts after user interactions, which wasn't reliable in the Chromatic rendering environment. React state updates are asynchronous and timing can vary across environments.
Solution
Replace fixed timeouts with
waitFor()from@storybook/test, which polls until the condition is met or times out. Also add a small delay before triggering user actions to ensure the Modal'suseEffecthas attached event listeners.Changes
waitFor()to wait for modal removalwaitFor()to wait for modal removalletwithconstfor modal queries and use descriptive variable namesThis makes the tests more reliable across different rendering environments including CI, local development, and Chromatic.
Generated with
cmux