-
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
Prevent exiting Zoom Out mode from stealing focus #60441
Merged
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
7358ea3
Don't steal focus from zoom out button when exiting zoom out mode
jeryj bbb1c56
Add test for zoom out mode button focus
jeryj 2502333
Update test to accurately catch the bug
jeryj c3ec154
move test setup to beforeEach
scruffian 3d251dd
theme activate/deactivate in beforeAll/afterAll
jeryj f50da93
Don't recalculate the initialPosition when toggling in/out of zoom-ou…
jeryj File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/** | ||
* WordPress dependencies | ||
*/ | ||
const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' ); | ||
|
||
test.describe( 'Zoom Out', () => { | ||
test.beforeAll( async ( { requestUtils } ) => { | ||
await requestUtils.activateTheme( 'emptytheme' ); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @scruffian We can leave the theme activation/deactvation part in the |
||
} ); | ||
|
||
test.beforeEach( async ( { admin, page, editor } ) => { | ||
await admin.visitAdminPage( 'admin.php', 'page=gutenberg-experiments' ); | ||
|
||
const zoomedOutCheckbox = page.getByLabel( | ||
'Test a new zoomed out view on' | ||
); | ||
|
||
await zoomedOutCheckbox.setChecked( true ); | ||
await expect( zoomedOutCheckbox ).toBeChecked(); | ||
await page.getByRole( 'button', { name: 'Save Changes' } ).click(); | ||
|
||
// Select a template part with a few blocks. | ||
await admin.visitSiteEditor( { | ||
postId: 'emptytheme//header', | ||
postType: 'wp_template_part', | ||
} ); | ||
await editor.canvas.locator( 'body' ).click(); | ||
} ); | ||
|
||
test.afterEach( async ( { admin, page } ) => { | ||
await admin.visitAdminPage( 'admin.php', 'page=gutenberg-experiments' ); | ||
const zoomedOutCheckbox = page.getByLabel( | ||
'Test a new zoomed out view on' | ||
); | ||
await zoomedOutCheckbox.setChecked( false ); | ||
await expect( zoomedOutCheckbox ).not.toBeChecked(); | ||
await page.getByRole( 'button', { name: 'Save Changes' } ).click(); | ||
} ); | ||
|
||
test.afterAll( async ( { requestUtils } ) => { | ||
await requestUtils.activateTheme( 'twentytwentyone' ); | ||
} ); | ||
|
||
test( 'Zoom-out button should not steal focus when a block is focused', async ( { | ||
page, | ||
editor, | ||
} ) => { | ||
const zoomOutButton = page.getByRole( 'button', { | ||
name: 'Zoom-out View', | ||
exact: true, | ||
} ); | ||
|
||
// Select a block for this test to surface the potential focus-stealing behavior | ||
await editor.canvas.getByLabel( 'Site title text' ).click(); | ||
|
||
await zoomOutButton.click(); | ||
|
||
await expect( zoomOutButton ).toBeFocused(); | ||
|
||
await page.keyboard.press( 'Enter' ); | ||
|
||
await expect( zoomOutButton ).toBeFocused(); | ||
} ); | ||
} ); |
Oops, something went wrong.
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.
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.
Do we sill need these changes? In my testing it works fine without them.
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.
Unfortunately, yes. Maybe there's a better way though. If you remove that line, it breaks when: