diff --git a/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/render.php b/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/render.php index 651b3298b64ed..c72d80e892b15 100644 --- a/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/render.php +++ b/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/render.php @@ -21,4 +21,8 @@

0

+
+

no

+

no

+
diff --git a/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/view.js b/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/view.js index b99f63b02517a..57c75e9c4cb63 100644 --- a/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/view.js +++ b/packages/e2e-tests/plugins/interactive-blocks/directive-on-window/view.js @@ -25,6 +25,8 @@ const { state } = store( 'directive-on-window', { counter: 0, isVisible: true, isEventAttached: 'no', + resizeHandler: 'no', + resizeSecondHandler: 'no', }, callbacks: { resizeHandler() { @@ -39,5 +41,11 @@ const { state } = store( 'directive-on-window', { state.isEventAttached = 'no'; state.isVisible = ! state.isVisible; }, + resizeHandler: () => { + state.resizeHandler = 'yes'; + }, + resizeSecondHandler: () => { + state.resizeSecondHandler = 'yes'; + } } } ); diff --git a/test/e2e/specs/interactivity/directive-on-window.spec.ts b/test/e2e/specs/interactivity/directive-on-window.spec.ts index 3afd1a9942fa8..ed090839c49ad 100644 --- a/test/e2e/specs/interactivity/directive-on-window.spec.ts +++ b/test/e2e/specs/interactivity/directive-on-window.spec.ts @@ -65,4 +65,25 @@ test.describe( 'data-wp-on-window', () => { await page.setViewportSize( { width: 200, height: 600 } ); await expect( counter ).toHaveText( '2' ); } ); + test( 'should work with multiple event handlers on the same event type', async ( { + page, + } ) => { + const resizeHandler = page.getByTestId( 'resizeHandler' ); + const resizeSecondHandler = page.getByTestId( 'resizeSecondHandler' ); + + // Initial value. + await expect( resizeHandler ).toHaveText( 'no' ); + await expect( resizeSecondHandler ).toHaveText( 'no' ); + + // Make sure the event listener is attached. + await page + .getByTestId( 'isEventAttached' ) + .filter( { hasText: 'yes' } ) + .waitFor(); + + // This keyboard press should increase the counter. + await page.setViewportSize( { width: 600, height: 600 } ); + await expect( resizeHandler ).toHaveText( 'yes' ); + await expect( resizeSecondHandler ).toHaveText( 'yes' ); + } ); } );