diff --git a/js&css/extension/www.youtube.com/general/general.js b/js&css/extension/www.youtube.com/general/general.js index 06ab32c8e..6788d118d 100644 --- a/js&css/extension/www.youtube.com/general/general.js +++ b/js&css/extension/www.youtube.com/general/general.js @@ -542,8 +542,9 @@ extension.features.thumbnailsQuality = function (anything) { --------------------------------------------------------------*/ extension.features.disableThumbnailPlayback = function (event) { if (event instanceof Event) { - if (event.composedPath().some(elem => (elem.matches != null && elem.matches('#content.ytd-rich-item-renderer, #contents.ytd-item-section-renderer')) - )) { + if (event.composedPath().some(elem => (elem.matches != null && elem.matches( + '#content.ytd-rich-item-renderer, #contents.ytd-item-section-renderer, #dismissible.ytd-compact-video-renderer' + )))) { event.stopImmediatePropagation(); } } else { diff --git a/tests/unit/disable-thumbnail-playback.test.js b/tests/unit/disable-thumbnail-playback.test.js new file mode 100644 index 000000000..8aa754ea8 --- /dev/null +++ b/tests/unit/disable-thumbnail-playback.test.js @@ -0,0 +1,29 @@ +// Test for Issue #3639: Disable video playback on hover not working on sidebar + +const fs = require('fs'); +const path = require('path'); + +describe('Disable Thumbnail Playback (#3639)', () => { + let generalContent; + + beforeAll(() => { + const filePath = path.join(__dirname, '../../js&css/extension/www.youtube.com/general/general.js'); + generalContent = fs.readFileSync(filePath, 'utf8'); + }); + + test('should match home page grid items', () => { + expect(generalContent).toContain('#content.ytd-rich-item-renderer'); + }); + + test('should match search results items', () => { + expect(generalContent).toContain('#contents.ytd-item-section-renderer'); + }); + + test('should match sidebar compact video items', () => { + expect(generalContent).toContain('#dismissible.ytd-compact-video-renderer'); + }); + + test('should use stopImmediatePropagation to block hover playback', () => { + expect(generalContent).toContain('event.stopImmediatePropagation()'); + }); +});