# 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 >> plugins >> picturecredits
- Location: visual/mfc-corporate-de.spec.ts:385:9

# Error details

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

  2369 pixels (ratio 0.01 of all image pixels) are different.

  Snapshot: plugin-picturecredits.png

Call log:
  - Expect "toHaveScreenshot(plugin-picturecredits.png)" with timeout 15000ms
    - verifying given screenshot expectation
  - taking page screenshot
    - disabled all CSS animations
  - waiting for fonts to load...
  - fonts loaded
  - 2369 pixels (ratio 0.01 of all image pixels) are different.
  - waiting 100ms before taking screenshot
  - taking page screenshot
    - disabled all CSS animations
  - waiting for fonts to load...
  - fonts loaded
  - captured a stable screenshot
  - 2369 pixels (ratio 0.01 of all image pixels) are different.

```

# 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]
  - img "Stormtrooper mit Lightning Kabel" [ref=e31]
  - navigation "Brotkrumen-Navigation" [ref=e32]:
    - generic [ref=e33]:
      - paragraph [ref=e34]: "Sie sind here:"
      - list [ref=e35]:
        - listitem [ref=e36]:
          - link "Startseite" [ref=e37] [cursor=pointer]:
            - /url: /
            - img [ref=e38]
        - listitem [ref=e40]:
          - text: /
          - link "Plugins" [ref=e41] [cursor=pointer]:
            - /url: /plugins/
            - generic [ref=e42]: Plugins
        - listitem [ref=e43]:
          - text: /
          - generic [ref=e44]: picturecredits
  - main [ref=e45]
  - contentinfo [ref=e46]:
    - generic [ref=e49]:
      - navigation [ref=e50]:
        - list [ref=e51]:
          - listitem [ref=e52]:
            - button "Cookie-Einstellungen" [ref=e53] [cursor=pointer]
          - listitem [ref=e54]:
            - link "Datenschutzerklärung" [ref=e55] [cursor=pointer]:
              - /url: https://www.marketing-factory.de/datenschutzerklaerung/
          - listitem [ref=e56]:
            - link "Impressum" [ref=e57] [cursor=pointer]:
              - /url: https://www.marketing-factory.de/impressum/
      - generic [ref=e58]:
        - paragraph [ref=e59]: © Marketing Factory Digital GmbH
        - paragraph [ref=e60]:
          - text: Alternativtexte für Bilder sind teilweise
          - link "KI-generiert" [ref=e61] [cursor=pointer]:
            - /url: https://www.marketing-factory.de/technologie/typo3/unsere-typo3-extensions/ai-filemetadata/
    - generic [ref=e64]:
      - strong [ref=e65]: Bildnachweise
      - list [ref=e66]:
        - listitem [ref=e67]:
          - link "\"Os Stormtroopers são a tropa de base do Império Galáctico no universo Star Wars. Devido à extensão do Império existem variações para diferentes terrenos e situações - nesse caso em lego\"" [ref=e68] [cursor=pointer]:
            - /url: https://unsplash.com/photos/rRTqyHuZHXQ
          - text: ": © danilo.alvesd -"
          - link "Fotolia" [ref=e69] [cursor=pointer]:
            - /url: https://www.fotolia.com
```

# Test source

```ts
  287 |     });
  288 | 
  289 |     test('1-video-beside-text-33-percent', async ({ page }) => {
  290 |         await setup(page, '/inhaltselemente/textmedia/videos-extern/1-video-neben-text-33-bildbreite/');
  291 |         await hideElements(page, PAGE_HEADER);
  292 |         await scrollToBottom(page);
  293 |         await expect(page).toHaveScreenshot(snap('content-textmedia-extern-1-video-beside-text-33-percent'));
  294 |     });
  295 | });
  296 | 
  297 | test.describe('content › textmedia › local-videos', () => {
  298 |     test('1-video-top-bottom-centered', async ({ page }) => {
  299 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/1-video-oben-unten-zentriert/');
  300 |         await hideElements(page, PAGE_HEADER);
  301 |         await scrollToBottom(page);
  302 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-1-video-top-bottom-centered'));
  303 |     });
  304 | 
  305 |     test('1-video-beside-text-centered', async ({ page }) => {
  306 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/1-video-neben-text-zentriert/');
  307 |         await hideElements(page, PAGE_HEADER);
  308 |         await scrollToBottom(page);
  309 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-1-video-beside-text-centered'));
  310 |     });
  311 | 
  312 |     test('1-video-beside-text', async ({ page }) => {
  313 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/1-video-neben-text/');
  314 |         await hideElements(page, PAGE_HEADER);
  315 |         await scrollToBottom(page);
  316 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-1-video-beside-text'));
  317 |     });
  318 | 
  319 |     test('2-videos-top-bottom-centered', async ({ page }) => {
  320 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/2-videos-oben-unten-zentriert/');
  321 |         await hideElements(page, PAGE_HEADER);
  322 |         await scrollToBottom(page);
  323 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-2-videos-top-bottom-centered'));
  324 |     });
  325 | 
  326 |     test('2-videos-beside-text-centered', async ({ page }) => {
  327 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/2-videos-neben-text-zentriert/');
  328 |         await hideElements(page, PAGE_HEADER);
  329 |         await scrollToBottom(page);
  330 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-2-videos-beside-text-centered'));
  331 |     });
  332 | 
  333 |     test('2-videos-beside-text', async ({ page }) => {
  334 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/2-videos-neben-text/');
  335 |         await hideElements(page, PAGE_HEADER);
  336 |         await scrollToBottom(page);
  337 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-2-videos-beside-text'));
  338 |     });
  339 | 
  340 |     test('1-video-beside-text-centered-33-percent', async ({ page }) => {
  341 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/1-video-neben-text-zentriert-33-bildbreite/');
  342 |         await hideElements(page, PAGE_HEADER);
  343 |         await scrollToBottom(page);
  344 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-1-video-beside-text-centered-33-percent'));
  345 |     });
  346 | 
  347 |     test('1-video-beside-text-33-percent', async ({ page }) => {
  348 |         await setup(page, '/inhaltselemente/textmedia/videos-lokal-gehostet/1-video-neben-text-33-bildbreite/');
  349 |         await hideElements(page, PAGE_HEADER);
  350 |         await scrollToBottom(page);
  351 |         await expect(page).toHaveScreenshot(snap('content-textmedia-local-1-video-beside-text-33-percent'));
  352 |     });
  353 | });
  354 | 
  355 | test.describe('page-types', () => {
  356 |     test('search', async ({ page }) => {
  357 |         await setup(page, '/seitentypen/suche/?tx_solr%5Bq%5D=obermeyer');
  358 |         await expect(page).toHaveScreenshot(snap('page-type-search'));
  359 |     });
  360 | 
  361 |     test('client-list', async ({ page }) => {
  362 |         await setup(page, '/seitentypen/kunden-listenansicht/');
  363 |         await expect(page).toHaveScreenshot(snap('page-type-client-list'));
  364 |     });
  365 | 
  366 |     test('client-pfm', async ({ page }) => {
  367 |         await setup(page, '/seitentypen/kunden-listenansicht/pfm-medical-sg/');
  368 |         await expect(page).toHaveScreenshot(snap('page-type-client-pfm'));
  369 |     });
  370 | });
  371 | 
  372 | test.describe('plugins', () => {
  373 |     test('project-list', async ({ page }) => {
  374 |         await setup(page, '/plugins/projekt-liste/');
  375 |         await expect(page).toHaveScreenshot(snap('plugin-project-list'));
  376 |     });
  377 | 
  378 |     test('project-obermeyer-corporate', async ({ page }) => {
  379 |         await setup(page, '/seitentypen/kunden-listenansicht/obermeyer-sg/launch-der-neuen-corporate-site-der-unternehmensgruppe-obermeyer-sg/');
  380 |         await hideElements(page, PAGE_HEADER);
  381 |         await scrollToBottom(page);
  382 |         await expect(page).toHaveScreenshot(snap('plugin-project-obermeyer-corporate'));
  383 |     });
  384 | 
  385 |     test('picturecredits', async ({ page }) => {
  386 |         await setup(page, '/plugins/picturecredits/');
> 387 |         await expect(page).toHaveScreenshot(snap('plugin-picturecredits'));
      |                            ^ Error: expect(page).toHaveScreenshot(expected) failed
  388 |     });
  389 | });
  390 | 
  391 | test.describe('blog', () => {
  392 |     test('overview', async ({ page }) => {
  393 |         await setup(page, '/blog/');
  394 |         await hideElements(page, PAGE_HEADER);
  395 |         await scrollToBottom(page);
  396 |         await expect(page).toHaveScreenshot(snap('blog-overview'));
  397 |         await setDarkTheme(page);
  398 |         await expect(page).toHaveScreenshot(snap('blog-overview-dark'));
  399 |     });
  400 | 
  401 |     test('list-authors', async ({ page }) => {
  402 |         await setup(page, '/blog/autoren/');
  403 |         await expect(page).toHaveScreenshot(snap('blog-list-authors'));
  404 |     });
  405 | 
  406 |     test('author', async ({ page }) => {
  407 |         await setup(page, '/blog/autoren/max-powers/');
  408 |         await expect(page).toHaveScreenshot(snap('blog-author'));
  409 |     });
  410 | 
  411 |     test('list-categories', async ({ page }) => {
  412 |         await setup(page, '/blog/kategorien/');
  413 |         await expect(page).toHaveScreenshot(snap('blog-list-categories'));
  414 |     });
  415 | 
  416 |     test('category', async ({ page }) => {
  417 |         await setup(page, '/blog/kategorien/schokolade/');
  418 |         await hideElements(page, PAGE_HEADER);
  419 |         await scrollToBottom(page);
  420 |         await expect(page).toHaveScreenshot(snap('blog-category'));
  421 |     });
  422 | 
  423 |     test('list-blogseries', async ({ page }) => {
  424 |         await setup(page, '/blog/blogreihen/');
  425 |         await expect(page).toHaveScreenshot(snap('blog-list-blogseries'));
  426 |     });
  427 | 
  428 |     test('blogseries', async ({ page }) => {
  429 |         await setup(page, '/blog/blogreihen/styleguide-highlights/');
  430 |         await expect(page).toHaveScreenshot(snap('blog-blogseries'));
  431 |     });
  432 | 
  433 |     test('post-menu-elements', async ({ page }) => {
  434 |         await setup(page, '/blog/mit-menue-elementen/');
  435 |         await expect(page).toHaveScreenshot(snap('blog-post-menu-elements'));
  436 |     });
  437 | 
  438 |     test('post-blogseries', async ({ page }) => {
  439 |         await setup(page, '/blog/erster-teil-einer-serie/');
  440 |         await expect(page).toHaveScreenshot(snap('blog-post-blogseries'));
  441 |     });
  442 | 
  443 |     test('post-no-featured-image', async ({ page }) => {
  444 |         await setup(page, '/blog/ohne-beitragsbild/');
  445 |         await expect(page).toHaveScreenshot(snap('blog-post-no-featured-image'));
  446 |     });
  447 | 
  448 |     test('post-with-comments', async ({ page }) => {
  449 |         await setup(page, '/blog/mit-kommentaren/');
  450 |         await expect(page).toHaveScreenshot(snap('blog-post-with-comments'));
  451 |     });
  452 | 
  453 |     test('post-inactive-author', async ({ page }) => {
  454 |         await setup(page, '/blog/drei-autoren-einer-inaktiv/');
  455 |         await expect(page).toHaveScreenshot(snap('blog-post-inactive-author'));
  456 |     });
  457 | 
  458 |     test('post-localized-featured-image', async ({ page }) => {
  459 |         await setup(page, '/blog/uebersetztes-featured-image/');
  460 |         await expect(page).toHaveScreenshot(snap('blog-post-localized-featured-image'));
  461 |     });
  462 | });
  463 | 
  464 | test.describe('forms', () => {
  465 |     test('contact', async ({ page }) => {
  466 |         await setup(page, '/formulare/kontaktformular/');
  467 |         await expect(page).toHaveScreenshot(snap('forms-contact'));
  468 |         await setDarkTheme(page);
  469 |         await expect(page).toHaveScreenshot(snap('forms-contact-dark'));
  470 |     });
  471 | 
  472 |     test('footer', async ({ page }) => {
  473 |         await setup(page, '/formulare/footer-formular/');
  474 |         await expect(page).toHaveScreenshot(snap('forms-footer'));
  475 |     });
  476 | 
  477 |     test('example', async ({ page }) => {
  478 |         await setup(page, '/formulare/styleguide-testformular/');
  479 |         await expect(page).toHaveScreenshot(snap('forms-example'));
  480 |         await setDarkTheme(page);
  481 |         await expect(page).toHaveScreenshot(snap('forms-example-dark'));
  482 |     });
  483 | });
  484 | 
```