# 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 >> other >> styling
- Location: visual/mfc-corporate-de.spec.ts:8:9

# Error details

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

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

  Snapshot: other-styling.png

Call log:
  - Expect "toHaveScreenshot(other-styling.png)" with timeout 15000ms
    - verifying given screenshot expectation
  - taking page screenshot
    - disabled all CSS animations
  - waiting for fonts to load...
  - fonts loaded
  - 1804 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
  - 1804 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]
  - 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: /
            - img [ref=e35]
        - listitem [ref=e37]:
          - text: /
          - generic [ref=e38]: Basics
  - main [ref=e39]:
    - generic [ref=e41]:
      - heading "Buttons" [level=2] [ref=e43]
      - heading "Als Button gestylte Links" [level=4] [ref=e44]
      - generic [ref=e45]:
        - link "Default" [ref=e46] [cursor=pointer]:
          - /url: "#"
        - link "Primary" [ref=e47] [cursor=pointer]:
          - /url: "#"
        - link "Secondary" [ref=e48] [cursor=pointer]:
          - /url: "#"
        - link "Success" [ref=e49] [cursor=pointer]:
          - /url: "#"
        - link "Warning" [ref=e50] [cursor=pointer]:
          - /url: "#"
        - link "Danger" [ref=e51] [cursor=pointer]:
          - /url: "#"
      - generic [ref=e52]:
        - link "Default" [ref=e53] [cursor=pointer]:
          - /url: "#"
        - link "Primary" [ref=e54] [cursor=pointer]:
          - /url: "#"
        - link "Secondary" [ref=e55] [cursor=pointer]:
          - /url: "#"
        - link "Success" [ref=e56] [cursor=pointer]:
          - /url: "#"
        - link "Warning" [ref=e57] [cursor=pointer]:
          - /url: "#"
        - link "Danger" [ref=e58] [cursor=pointer]:
          - /url: "#"
      - generic [ref=e59]:
        - link "Default (small)" [ref=e60] [cursor=pointer]:
          - /url: "#"
        - link "Primary (small)" [ref=e61] [cursor=pointer]:
          - /url: "#"
        - link "Secondary (small)" [ref=e62] [cursor=pointer]:
          - /url: "#"
        - link "Success (small)" [ref=e63] [cursor=pointer]:
          - /url: "#"
        - link "Warning (small)" [ref=e64] [cursor=pointer]:
          - /url: "#"
        - link "Danger (small)" [ref=e65] [cursor=pointer]:
          - /url: "#"
      - heading "Button-Elemente" [level=4] [ref=e66]
      - generic [ref=e67]:
        - button "Default" [ref=e68] [cursor=pointer]
        - button "Primary" [ref=e69] [cursor=pointer]
        - button "Secondary" [ref=e70] [cursor=pointer]
        - button "Success" [ref=e71] [cursor=pointer]
        - button "Warning" [ref=e72] [cursor=pointer]
        - button "Danger" [ref=e73] [cursor=pointer]
      - generic [ref=e74]:
        - button "Default" [ref=e75] [cursor=pointer]
        - button "Primary" [ref=e76] [cursor=pointer]
        - button "Secondary" [ref=e77] [cursor=pointer]
        - button "Success" [ref=e78] [cursor=pointer]
        - button "Warning" [ref=e79] [cursor=pointer]
        - button "Danger" [ref=e80] [cursor=pointer]
    - generic [ref=e82]:
      - heading "Alerts" [level=2] [ref=e84]
      - alert [ref=e85]: A simple success alert—check it out!
      - alert [ref=e86]: A simple danger alert—check it out!
      - alert [ref=e87]: A simple warning alert—check it out!
      - alert [ref=e88]: A simple info alert—check it out!
      - alert [ref=e89]:
        - heading "Well done!" [level=4] [ref=e90]
        - paragraph [ref=e91]: Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.
        - separator [ref=e92]
        - paragraph [ref=e93]: Whenever you need to, be sure to use margin utilities to keep things nice and tidy.
    - generic [ref=e95]:
      - heading "Badges" [level=2] [ref=e97]
      - list [ref=e98]:
        - listitem [ref=e99]:
          - generic [ref=e100]: Badge (default)
        - listitem [ref=e101]:
          - link "Badge (default)" [ref=e102] [cursor=pointer]:
            - /url: "#"
      - list [ref=e103]:
        - listitem [ref=e104]:
          - generic [ref=e105]: Badge (Blog tag)
        - listitem [ref=e106]:
          - link "Badge (Blog tag)" [ref=e107] [cursor=pointer]:
            - /url: "#"
  - contentinfo [ref=e108]:
    - generic [ref=e111]:
      - navigation [ref=e112]:
        - list [ref=e113]:
          - listitem [ref=e114]:
            - button "Cookie-Einstellungen" [ref=e115] [cursor=pointer]
          - listitem [ref=e116]:
            - link "Datenschutzerklärung" [ref=e117] [cursor=pointer]:
              - /url: https://www.marketing-factory.de/datenschutzerklaerung/
          - listitem [ref=e118]:
            - link "Impressum" [ref=e119] [cursor=pointer]:
              - /url: https://www.marketing-factory.de/impressum/
      - generic [ref=e120]:
        - paragraph [ref=e121]: © Marketing Factory Digital GmbH
        - paragraph [ref=e122]:
          - text: Alternativtexte für Bilder sind teilweise
          - link "KI-generiert" [ref=e123] [cursor=pointer]:
            - /url: https://www.marketing-factory.de/technologie/typo3/unsere-typo3-extensions/ai-filemetadata/
```

# Test source

```ts
  1   | import { test, expect } from '@playwright/test';
  2   | import { setup, scrollToBottom, setDarkTheme, hideElements } from '../helpers/utils';
  3   | 
  4   | const PAGE_HEADER = ['.c-page-header'];
  5   | const snap = (name: string) => ({ name: `${name}.png`, fullPage: true } as const);
  6   | 
  7   | test.describe('other', () => {
  8   |     test('styling', async ({ page }) => {
  9   |         await setup(page, '/design-basiseigenschaften/');
  10  |         await page.waitForTimeout(2000);
> 11  |         await expect(page).toHaveScreenshot(snap('other-styling'));
      |                            ^ Error: expect(page).toHaveScreenshot(expected) failed
  12  |         await setDarkTheme(page);
  13  |         await expect(page).toHaveScreenshot(snap('other-styling-dark'));
  14  |     });
  15  | 
  16  |     test('rte', async ({ page }) => {
  17  |         await setup(page, '/richtext-editor/');
  18  |         await expect(page).toHaveScreenshot(snap('other-rte'));
  19  |         await setDarkTheme(page);
  20  |         await expect(page).toHaveScreenshot(snap('other-rte-dark'));
  21  |     });
  22  | 
  23  |     test('rte-syntax-highlighting', async ({ page }) => {
  24  |         await setup(page, '/richtext-editor/syntax-highlighting/');
  25  |         await expect(page).toHaveScreenshot(snap('other-rte-syntax-highlighting'));
  26  |     });
  27  | });
  28  | 
  29  | test.describe('content', () => {
  30  |     test('accordion', async ({ page }) => {
  31  |         await setup(page, '/inhaltselemente/accordion/');
  32  |         await hideElements(page, PAGE_HEADER);
  33  |         await scrollToBottom(page);
  34  |         await expect(page).toHaveScreenshot(snap('content-accordion'));
  35  |     });
  36  | 
  37  |     test('keyvisual', async ({ page }) => {
  38  |         await setup(page, '/inhaltselemente/keyvisual/');
  39  |         await expect(page).toHaveScreenshot(snap('content-keyvisual'));
  40  |         await setDarkTheme(page);
  41  |         await expect(page).toHaveScreenshot(snap('content-keyvisual-dark'));
  42  |     });
  43  | 
  44  |     test('hero-image', async ({ page }) => {
  45  |         await setup(page, '/inhaltselemente/hero-image/');
  46  |         await expect(page).toHaveScreenshot(snap('content-hero-image'));
  47  |     });
  48  | 
  49  |     test('slider-slide2grid', async ({ page }) => {
  50  |         await setup(page, '/inhaltselemente/slider-slide2grid/');
  51  |         await expect(page).toHaveScreenshot(snap('content-slider-slide2grid'));
  52  |         await setDarkTheme(page);
  53  |         await expect(page).toHaveScreenshot(snap('content-slider-slide2grid-dark'));
  54  |     });
  55  | 
  56  |     test('comparison-module', async ({ page }) => {
  57  |         await setup(page, '/inhaltselemente/comparison-modul/');
  58  |         await page.locator('.o-radio-switch__label[for=switchLeft]').click();
  59  |         await page.waitForTimeout(2000);
  60  |         await expect(page).toHaveScreenshot(snap('content-comparison-module-left'));
  61  |         await page.locator('.o-radio-switch__label[for=switchRight]').click();
  62  |         await page.waitForTimeout(2000);
  63  |         await expect(page).toHaveScreenshot(snap('content-comparison-module-right'));
  64  |         await setDarkTheme(page);
  65  |         await expect(page).toHaveScreenshot(snap('content-comparison-module-dark'));
  66  |     });
  67  | 
  68  |     test('text-full-height-image', async ({ page }) => {
  69  |         await setup(page, '/inhaltselemente/text-full-height-image/');
  70  |         await hideElements(page, PAGE_HEADER);
  71  |         await scrollToBottom(page);
  72  |         await expect(page).toHaveScreenshot(snap('content-text-full-height-image'));
  73  |     });
  74  | 
  75  |     test('timeline', async ({ page }) => {
  76  |         await setup(page, '/inhaltselemente/timeline/');
  77  |         await hideElements(page, PAGE_HEADER);
  78  |         await scrollToBottom(page);
  79  |         await expect(page).toHaveScreenshot(snap('content-timeline'));
  80  |     });
  81  | 
  82  |     test('divider', async ({ page }) => {
  83  |         await setup(page, '/inhaltselemente/divider/');
  84  |         await expect(page).toHaveScreenshot(snap('content-divider'));
  85  |     });
  86  | 
  87  |     test('container', async ({ page }) => {
  88  |         await setup(page, '/inhaltselemente/container/');
  89  |         await hideElements(page, PAGE_HEADER);
  90  |         await scrollToBottom(page);
  91  |         await expect(page).toHaveScreenshot(snap('content-container'));
  92  |     });
  93  | 
  94  |     test('card-group', async ({ page }) => {
  95  |         await setup(page, '/inhaltselemente/card-group/');
  96  |         await expect(page).toHaveScreenshot(snap('content-card-group'));
  97  |     });
  98  | 
  99  |     test('quote', async ({ page }) => {
  100 |         await setup(page, '/inhaltselemente/quote/');
  101 |         await expect(page).toHaveScreenshot(snap('content-quote'));
  102 |     });
  103 | 
  104 |     test('text-icon', async ({ page }) => {
  105 |         await setup(page, '/inhaltselemente/text-icon/');
  106 |         await expect(page).toHaveScreenshot(snap('content-text-icon'));
  107 |         await setDarkTheme(page);
  108 |         await expect(page).toHaveScreenshot(snap('content-text-icon-dark'));
  109 |     });
  110 | 
  111 |     test('text-in-columns', async ({ page }) => {
```