-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CustomSelectControl (v1 & v2): Fix errors in unit test setup #59038
Conversation
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
@@ -12,7 +12,7 @@ import { useState } from '@wordpress/element'; | |||
/** | |||
* Internal dependencies | |||
*/ | |||
import { CustomSelect, CustomSelectItem } from '..'; | |||
import { CustomSelect as UncontrolledCustomSelect, CustomSelectItem } from '..'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Renamed to prevent accidental usage in a controlled/uncontrolled test matrix.
{ ...legacyProps } | ||
onChange={ ( { selectedItem }: any ) => setValue( selectedItem ) } | ||
<UncontrolledCustomSelect | ||
{ ...restProps } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ensure that the props from each test instance are actually passed through, instead of just spreading the scaffolded legacyProps
.
{ ...restProps } | ||
options={ options } | ||
onChange={ ( args: any ) => { | ||
onChange?.( args ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also pass through the onChange
.
expect( | ||
screen.getByRole( 'combobox', { name: 'Custom select' } ) | ||
).not.toHaveTextContent( 'Hint' ); | ||
await waitFor( () => |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some async wait is necessary for the controlled version.
Size Change: 0 B Total Size: 1.71 MB ℹ️ View Unchanged
|
@@ -100,7 +106,7 @@ describe( 'With Legacy Props', () => { | |||
} ); | |||
|
|||
it( 'Should keep current selection if dropdown is closed without changing selection', async () => { | |||
render( <CustomSelect { ...legacyProps } /> ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These were all pointing to the uncontrolled version of the component, even though it was part of a uncontrolled/controlled matrix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What a good find!
Flaky tests detected in 596452f. 🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/7918074464
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great!
Thanks for spotting the issue, and for the comprehensive self-review - made the PR so easy to review! 🚀
@@ -100,7 +106,7 @@ describe( 'With Legacy Props', () => { | |||
} ); | |||
|
|||
it( 'Should keep current selection if dropdown is closed without changing selection', async () => { | |||
render( <CustomSelect { ...legacyProps } /> ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What a good find!
* trunk: (78 commits) Components: Use `Element.scrollIntoView()` instead of `dom-scroll-into-view` (#59085) DataViews: Correctly display featured image that don't have image sizes (#59111) Elements: Fix block instance element styles for links applying to buttons (#59114) Allow editing of image block alt and title attributes in content only mode (#58998) Add toggle for grid types and stabilise Grid block variation. (#59051) Global Styles: fix console error in block preview (#59112) Navigation: Avoid using embedded records from fallback API (#59076) Refactor responsive logic for grid column spans. (#59057) Editor: Unify Mode Switcher component between post and site editor (#59100) Move StopEditingAsBlocksOnOutsideSelect to Root (#58412) Fix logic error in #58951 (#59101) Block-editor: Auto-register block commands (#59079) Fix small typo in rich text reference guide (#59089) Components: Add lint rules for theme color CSS var usage (#59022) Enter editing mode via Enter or Spacebar (#58795) Updating Storybook to v7.6.15 (latest) (#59074) CustomSelectControl (v1 & v2): Fix errors in unit test setup (#59038) Add stylelint rule to prevent theme CSS vars outside of wp-components (#59020) ColorPicker: Style without accessing InputControl internals (#59069) Pattern block: batch replacing actions (#59075) ...
Part of #55023
What?
Fixes errors in the CustomSelectControl (v1 & v2) test setup that caused the controlled/uncontrolled test matrix to completely bypass the controlled version of the tests.
Why?
While working on CustomSelectControlV2, I noticed that the test matrix for the legacy component did not correctly test the controlled version of the tests.
Although we are soon migrating to the v2, the tests for v2 legacy mode are mirrored from v1, so we still need to correct the tests in the original to establish what the baseline behavior actually is.
Testing Instructions
✅ Unit tests still pass