# Instructions

- Following Playwright test failed.
- Explain why, be concise, respect Playwright best practices.
- Provide a snippet of code with the fix, if possible.

# Test info

- Name: mfc-corporate-de.spec.ts >> blog >> overview
- Location: visual/mfc-corporate-de.spec.ts:247:9

# Error details

```
Error: expect(page).toHaveScreenshot(expected) failed

  Expected an image 328px by 4716px, received 328px by 4588px. 

  Snapshot: blog-overview.png

Call log:
  - Expect "toHaveScreenshot(blog-overview.png)" with timeout 15000ms
    - verifying given screenshot expectation
  - taking page screenshot
    - disabled all CSS animations
  - waiting for fonts to load...
  - fonts loaded
  - Expected an image 328px by 4716px, received 328px by 4588px.
  - waiting 100ms before taking screenshot
  - taking page screenshot
    - disabled all CSS animations
  - waiting for fonts to load...
  - fonts loaded
  - captured a stable screenshot
  - Expected an image 328px by 4716px, received 328px by 4588px.

```

# Page snapshot

```yaml
- generic [ref=e2]:
  - link "Zum Inhalt springen" [ref=e3] [cursor=pointer]:
    - /url: "#page-content"
  - banner [ref=e4]:
    - generic [ref=e5]:
      - link "Marketing Factory Digital GmbH" [ref=e6] [cursor=pointer]:
        - /url: /
        - img "Marketing Factory Digital GmbH" [ref=e7]
      - link "Kontaktformular" [ref=e26] [cursor=pointer]:
        - /url: /formulare/kontaktformular/
      - button "Navigation" [expanded] [ref=e27] [cursor=pointer]
  - navigation "Brotkrumen-Navigation" [ref=e29]:
    - generic [ref=e30]:
      - paragraph [ref=e31]: "Sie sind here:"
      - list [ref=e32]:
        - listitem [ref=e33]:
          - link "Startseite" [ref=e34] [cursor=pointer]:
            - /url: /
        - listitem [ref=e37]:
          - text: /
          - generic [ref=e38]: Blog
  - main [ref=e39]:
    - generic [ref=e40]:
      - generic [ref=e41]: Suche nach Blogbeiträgen
      - textbox "Suchbegriff" [ref=e42]:
        - /placeholder: Blogbeiträge durchsuchen
      - button "Suchergebnisse anzeigen" [ref=e43] [cursor=pointer]
    - generic [ref=e47]:
      - generic [ref=e50]:
        - link "Blog als RSS-Feed abonnieren" [ref=e51] [cursor=pointer]:
          - /url: /blog/blog.recent.xml
        - button "Kategorien" [ref=e55] [cursor=pointer]
        - button "Blogreihen" [ref=e59] [cursor=pointer]
        - button "Autoren" [ref=e63] [cursor=pointer]
      - generic [ref=e68]:
        - generic [ref=e69]:
          - article [ref=e71]:
            - figure [ref=e73]
            - generic [ref=e74]:
              - paragraph [ref=e75]:
                - link "Übersetztes Featured Image" [ref=e76] [cursor=pointer]:
                  - /url: /blog/uebersetztes-featured-image/
              - paragraph [ref=e77]: Das Featured Image unterscheidet sich in deutschem und englischem Beitrag (Listen- und Detailansicht).
              - text: Beitrag lesen
            - generic [ref=e78]:
              - time [ref=e79]: 24.07.2023
              - generic [ref=e80]: Michael Mustermann
          - article [ref=e85]:
            - figure [ref=e87]
            - generic [ref=e88]:
              - paragraph [ref=e89]:
                - link "Mit Menü-Elementen" [ref=e90] [cursor=pointer]:
                  - /url: /blog/mit-menue-elementen/
              - paragraph [ref=e91]: Manuell gesetzte Verlinkungen auf thematisch passende Blogbeiträge und Themen-Seiten.
              - text: Beitrag lesen
            - generic [ref=e92]:
              - time [ref=e93]: 16.06.2023
              - generic [ref=e94]: Michael Mustermann
          - article [ref=e99]:
            - figure [ref=e101]
            - generic [ref=e102]:
              - paragraph [ref=e103]:
                - link "Dritter Teil einer Serie" [ref=e104] [cursor=pointer]:
                  - /url: /blog/dritter-teil-einer-serie/
              - paragraph [ref=e105]: Hier wird automatisch das Menü der Blogreihe in der rechten Spalte ausgegeben.
              - text: Beitrag lesen
            - generic [ref=e106]:
              - time [ref=e107]: 16.06.2023
              - generic [ref=e108]:
                - generic [ref=e109]: Max Powers
                - img "Max Powers" [ref=e110]
          - article [ref=e112]:
            - figure [ref=e114]
            - generic [ref=e115]:
              - paragraph [ref=e116]:
                - link "Zweiter Teil einer Serie" [ref=e117] [cursor=pointer]:
                  - /url: /blog/zweiter-teil-einer-serie/
              - paragraph [ref=e118]: SEO-Beschreibung und Teaser-Text fehlen, daher wird der vorhandene Blogtext in der Card gerendert. Lorem ipsum dolor...
              - text: Beitrag lesen
            - generic [ref=e119]:
              - time [ref=e120]: 18.04.2023
              - generic [ref=e121]:
                - generic [ref=e122]: Max Powers
                - img "Max Powers" [ref=e123]
          - article [ref=e125]:
            - figure [ref=e127]
            - generic [ref=e128]:
              - paragraph [ref=e129]:
                - link "Erster Teil einer Serie" [ref=e130] [cursor=pointer]:
                  - /url: /blog/erster-teil-einer-serie/
              - paragraph [ref=e131]: Hier wird automatisch das Menü der Blogreihe in der rechten Spalte ausgegeben.
              - text: Beitrag lesen
            - generic [ref=e132]:
              - time [ref=e133]: 15.02.2023
              - generic [ref=e134]:
                - generic [ref=e135]: Max Powers
                - img "Max Powers" [ref=e136]
          - article [ref=e138]:
            - generic [ref=e143]:
              - paragraph [ref=e144]:
                - link "Ohne Beitragsbild" [ref=e145] [cursor=pointer]:
                  - /url: /blog/ohne-beitragsbild/
              - paragraph [ref=e146]: Ein Font-Awesome-Icon mit Hintergrundverlauf wird als Fallback verwendet.
              - text: Beitrag lesen
            - generic [ref=e147]:
              - time [ref=e148]: 06.12.2022
              - generic [ref=e149]: Michael Mustermann
          - article [ref=e154]:
            - figure [ref=e156]
            - generic [ref=e157]:
              - paragraph [ref=e158]:
                - link "Mit Kommentaren" [ref=e159] [cursor=pointer]:
                  - /url: /blog/mit-kommentaren/
              - paragraph [ref=e160]: Blog-Kommentare, auch verschachtelt. Keine Unterscheidung nach Frontend-Sprache!
              - text: Beitrag lesen
            - generic [ref=e161]:
              - time [ref=e162]: 15.06.2022
              - generic [ref=e163]:
                - generic [ref=e164]: John Doe
                - img "John Doe" [ref=e165]
          - article [ref=e167]:
            - figure [ref=e169]
            - generic [ref=e170]:
              - paragraph [ref=e171]:
                - link "Drei Autoren, einer inaktiv" [ref=e172] [cursor=pointer]:
                  - /url: /blog/drei-autoren-einer-inaktiv/
              - paragraph [ref=e173]: Der inaktive (ehemalige) Autor wird am Ende der Autorenbox einsortiert und ist kein Accordion-Element.
              - text: Beitrag lesen
            - generic [ref=e174]:
              - time [ref=e175]: 09.03.2022
              - list [ref=e176]:
                - listitem [ref=e177]:
                  - generic [ref=e178]: Michael Mustermann
                - listitem [ref=e182]:
                  - generic [ref=e183]:
                    - generic [ref=e184]: Ehemaliger Kollege
                    - img "Ehemaliger Kollege" [ref=e185]
                - listitem [ref=e186]:
                  - generic [ref=e187]:
                    - generic [ref=e188]: Max Powers
                    - img "Max Powers" [ref=e189]
        - navigation "Seitennavigation" [ref=e190]:
          - list [ref=e191]:
            - listitem [ref=e192]:
              - link "Zur Seite 1" [ref=e193] [cursor=pointer]:
                - /url: /blog/
                - text: "1"
  - contentinfo [ref=e194]:
    - generic [ref=e196]:
      - navigation [ref=e197]:
        - list [ref=e198]:
          - listitem [ref=e199]:
            - button "Cookie-Einstellungen" [ref=e200] [cursor=pointer]
          - listitem [ref=e201]:
            - link "Datenschutzerklärung" [ref=e202] [cursor=pointer]:
              - /url: https://www.marketing-factory.de.renovate-develop-php-packages.review.mfc.gmbh/datenschutzerklaerung/
          - listitem [ref=e203]:
            - link "Impressum" [ref=e204] [cursor=pointer]:
              - /url: https://www.marketing-factory.de.renovate-develop-php-packages.review.mfc.gmbh/impressum/
      - generic [ref=e205]:
        - paragraph [ref=e206]: © Marketing Factory Digital GmbH
        - paragraph [ref=e207]:
          - text: Alternativtexte für Bilder sind teilweise
          - link "KI-generiert" [ref=e208] [cursor=pointer]:
            - /url: https://www.marketing-factory.de.renovate-develop-php-packages.review.mfc.gmbh/technologie/typo3/unsere-typo3-extensions/ai-filemetadata/
```

# Test source

```ts
  149 |         await expect(page).toHaveScreenshot(snap('content-textmedia-pixel-2-images-top-bottom-centered'));
  150 |     });
  151 | 
  152 |     test('2-images-beside-text-centered', async ({ page }) => {
  153 |         await setup(page, '/inhaltselemente/textmedia/pixel-bilder/2-bilder-neben-text-zentriert/');
  154 |         await expect(page).toHaveScreenshot(snap('content-textmedia-pixel-2-images-beside-text-centered'));
  155 |     });
  156 | 
  157 |     test('2-images-beside-text', async ({ page }) => {
  158 |         await setup(page, '/inhaltselemente/textmedia/pixel-bilder/2-bilder-neben-text/');
  159 |         await expect(page).toHaveScreenshot(snap('content-textmedia-pixel-2-images-beside-text'));
  160 |     });
  161 | 
  162 |     test('1-image-beside-text-centered-33-percent', async ({ page }) => {
  163 |         await setup(page, '/inhaltselemente/textmedia/pixel-bilder/1-bild-neben-text-zentriert-33-bildbreite/');
  164 |         await expect(page).toHaveScreenshot(snap('content-textmedia-pixel-1-image-beside-text-centered-33-percent'));
  165 |     });
  166 | 
  167 |     test('1-image-beside-text-33-percent', async ({ page }) => {
  168 |         await setup(page, '/inhaltselemente/textmedia/pixel-bilder/1-bild-neben-text-33-bildbreite/');
  169 |         await expect(page).toHaveScreenshot(snap('content-textmedia-pixel-1-image-beside-text-33-percent'));
  170 |     });
  171 | });
  172 | 
  173 | test.describe('content › textmedia › svg-images', () => {
  174 |     test('1-image-top-bottom-centered', async ({ page }) => {
  175 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/1-bild-oben-unten-zentriert/');
  176 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-1-image-top-bottom-centered'));
  177 |     });
  178 | 
  179 |     test('1-image-beside-text-centered', async ({ page }) => {
  180 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/1-bild-neben-text-zentriert/');
  181 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-1-image-beside-text-centered'));
  182 |     });
  183 | 
  184 |     test('1-image-beside-text', async ({ page }) => {
  185 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/1-bild-neben-text/');
  186 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-1-image-beside-text'));
  187 |         await setDarkTheme(page);
  188 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-1-image-beside-text-dark'));
  189 |     });
  190 | 
  191 |     test('2-images-top-bottom-centered', async ({ page }) => {
  192 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/2-bilder-oben-unten-zentriert/');
  193 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-2-images-top-bottom-centered'));
  194 |     });
  195 | 
  196 |     test('2-images-beside-text-centered', async ({ page }) => {
  197 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/2-bilder-neben-text-zentriert/');
  198 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-2-images-beside-text-centered'));
  199 |     });
  200 | 
  201 |     test('2-images-beside-text', async ({ page }) => {
  202 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/2-bilder-neben-text/');
  203 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-2-images-beside-text'));
  204 |     });
  205 | 
  206 |     test('1-image-beside-text-centered-33-percent', async ({ page }) => {
  207 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/1-bild-neben-text-zentriert-33-bildbreite/');
  208 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-1-image-beside-text-centered-33-percent'));
  209 |     });
  210 | 
  211 |     test('1-image-beside-text-33-percent', async ({ page }) => {
  212 |         await setup(page, '/inhaltselemente/textmedia/svg-bilder/1-bild-neben-text-33-bildbreite/');
  213 |         await expect(page).toHaveScreenshot(snap('content-textmedia-svg-1-image-beside-text-33-percent'));
  214 |     });
  215 | });
  216 | 
  217 | test.describe('page-types', () => {
  218 |     test('client-list', async ({ page }) => {
  219 |         await setup(page, '/seitentypen/kunden-listenansicht/');
  220 |         await expect(page).toHaveScreenshot(snap('page-type-client-list'));
  221 |     });
  222 | 
  223 |     test('client-pfm', async ({ page }) => {
  224 |         await setup(page, '/seitentypen/kunden-listenansicht/pfm-medical-sg/');
  225 |         await expect(page).toHaveScreenshot(snap('page-type-client-pfm'));
  226 |     });
  227 | });
  228 | 
  229 | test.describe('plugins', () => {
  230 |     test('project-list', async ({ page }) => {
  231 |         await setup(page, '/plugins/projekt-liste/');
  232 |         await expect(page).toHaveScreenshot(snap('plugin-project-list'));
  233 |     });
  234 | 
  235 |     test('project-obermeyer-corporate', async ({ page }) => {
  236 |         await setup(page, '/seitentypen/kunden-listenansicht/obermeyer-sg/launch-der-neuen-corporate-site-der-unternehmensgruppe-obermeyer-sg/');
  237 |         await expect(page).toHaveScreenshot(snap('plugin-project-obermeyer-corporate'));
  238 |     });
  239 | 
  240 |     test('picturecredits', async ({ page }) => {
  241 |         await setup(page, '/plugins/picturecredits/');
  242 |         await expect(page).toHaveScreenshot(snap('plugin-picturecredits'));
  243 |     });
  244 | });
  245 | 
  246 | test.describe('blog', () => {
  247 |     test('overview', async ({ page }) => {
  248 |         await setup(page, '/blog/');
> 249 |         await expect(page).toHaveScreenshot(snap('blog-overview'));
      |                            ^ Error: expect(page).toHaveScreenshot(expected) failed
  250 |         await setDarkTheme(page);
  251 |         await expect(page).toHaveScreenshot(snap('blog-overview-dark'));
  252 |     });
  253 | 
  254 |     test('list-authors', async ({ page }) => {
  255 |         await setup(page, '/blog/autoren/');
  256 |         await expect(page).toHaveScreenshot(snap('blog-list-authors'));
  257 |     });
  258 | 
  259 |     test('author', async ({ page }) => {
  260 |         await setup(page, '/blog/autoren/max-powers/');
  261 |         await expect(page).toHaveScreenshot(snap('blog-author'));
  262 |     });
  263 | 
  264 |     test('list-categories', async ({ page }) => {
  265 |         await setup(page, '/blog/kategorien/');
  266 |         await expect(page).toHaveScreenshot(snap('blog-list-categories'));
  267 |     });
  268 | 
  269 |     test('category', async ({ page }) => {
  270 |         await setup(page, '/blog/kategorien/schokolade/');
  271 | 
  272 | 
  273 |         await expect(page).toHaveScreenshot(snap('blog-category'));
  274 |     });
  275 | 
  276 |     test('list-blogseries', async ({ page }) => {
  277 |         await setup(page, '/blog/blogreihen/');
  278 |         await expect(page).toHaveScreenshot(snap('blog-list-blogseries'));
  279 |     });
  280 | 
  281 |     test('blogseries', async ({ page }) => {
  282 |         await setup(page, '/blog/blogreihen/styleguide-highlights/');
  283 |         await expect(page).toHaveScreenshot(snap('blog-blogseries'));
  284 |     });
  285 | 
  286 |     test('post-menu-elements', async ({ page }) => {
  287 |         await setup(page, '/blog/mit-menue-elementen/');
  288 |         await expect(page).toHaveScreenshot(snap('blog-post-menu-elements'));
  289 |     });
  290 | 
  291 |     test('post-blogseries', async ({ page }) => {
  292 |         await setup(page, '/blog/erster-teil-einer-serie/');
  293 |         await expect(page).toHaveScreenshot(snap('blog-post-blogseries'));
  294 |     });
  295 | 
  296 |     test('post-no-featured-image', async ({ page }) => {
  297 |         await setup(page, '/blog/ohne-beitragsbild/');
  298 |         await expect(page).toHaveScreenshot(snap('blog-post-no-featured-image'));
  299 |     });
  300 | 
  301 |     test('post-with-comments', async ({ page }) => {
  302 |         await setup(page, '/blog/mit-kommentaren/');
  303 |         await expect(page).toHaveScreenshot(snap('blog-post-with-comments'));
  304 |     });
  305 | 
  306 |     test('post-inactive-author', async ({ page }) => {
  307 |         await setup(page, '/blog/drei-autoren-einer-inaktiv/');
  308 |         await expect(page).toHaveScreenshot(snap('blog-post-inactive-author'));
  309 |     });
  310 | 
  311 |     test('post-localized-featured-image', async ({ page }) => {
  312 |         await setup(page, '/blog/uebersetztes-featured-image/');
  313 |         await expect(page).toHaveScreenshot(snap('blog-post-localized-featured-image'));
  314 |     });
  315 | });
  316 | 
  317 | test.describe('forms', () => {
  318 |     test('contact', async ({ page }) => {
  319 |         await setup(page, '/formulare/kontaktformular/');
  320 |         await expect(page).toHaveScreenshot(snap('forms-contact'));
  321 |         await setDarkTheme(page);
  322 |         await expect(page).toHaveScreenshot(snap('forms-contact-dark'));
  323 |     });
  324 | 
  325 |     test('footer', async ({ page }) => {
  326 |         await setup(page, '/formulare/footer-formular/');
  327 |         await expect(page).toHaveScreenshot(snap('forms-footer'));
  328 |     });
  329 | 
  330 |     test('example', async ({ page }) => {
  331 |         await setup(page, '/formulare/styleguide-testformular/');
  332 |         await expect(page).toHaveScreenshot(snap('forms-example'));
  333 |         await setDarkTheme(page);
  334 |         await expect(page).toHaveScreenshot(snap('forms-example-dark'));
  335 |     });
  336 | });
  337 | 
```