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
+
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' );
+ } );
} );