Index: test/polls.test.js
===================================================================
--- test/polls.test.js	(revision 04031873473c62253ea8961f8fc5cd47159ac270)
+++ test/polls.test.js	(revision 0a93c15436f7a8f5a12389660d2feb0a690a17c6)
@@ -42,4 +42,21 @@
   assert.ok(note.endTime, 'has an endTime');
   assert.ok(!('attachment' in note), 'no media on a poll (mutually exclusive on Mastodon)');
+});
+
+test('a poll KEEPS its cover in note.image (feeds show it; Mastodon ignores it)', () => {
+  // An embed/music poll suppresses image attachments (so Mastodon shows the
+  // player/embed card) and carries the cover in note.image instead — exactly
+  // the case that lost its cover when applyPollToNote deleted image.
+  const withCover = {
+    ...singlePoll, id: 'p1', slug: 'fav',
+    content: '<p>Pick one</p> [[embed:https://www.youtube.com/watch?v=abcdefghijk]]',
+    cover_image_url: '/media/post-images/cover.webp', cover_alt: 'Album art',
+  };
+  const note = AP.buildNote(BASE, site, withCover);
+  assert.equal(note.type, 'Question', 'still a Question');
+  assert.ok(note.image && note.image.url, 'the cover survives as note.image');
+  assert.ok(note.image.url.endsWith('/media/post-images/cover.webp'), 'absolute cover url');
+  assert.equal(note.image.name, 'Album art', 'alt text kept');
+  assert.ok(!('attachment' in note), 'still no media attachment on a poll');
 });
 
