# 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: src/manager/tests/e2e/customer/customer-edit-general.spec.ts >> edits the email
- Location: src/manager/tests/e2e/customer/customer-edit-general.spec.ts:103:5

# Error details

```
Error: expect(locator).toHaveCount(expected) failed

Locator:  getByTestId('app-page').getByTestId('app-page-content').locator('.ui-data-grid').locator('[data-test-id=ui-data-grid-table]:not(.disabled):not(.loading):not(.fetching)').getByTestId('ui-data-grid-table-with-data').locator('tr')
Expected: 1
Received: 10
Timeout:  20000ms

Call log:
  - Expect "toHaveCount" with timeout 20000ms
  - waiting for getByTestId('app-page').getByTestId('app-page-content').locator('.ui-data-grid').locator('[data-test-id=ui-data-grid-table]:not(.disabled):not(.loading):not(.fetching)').getByTestId('ui-data-grid-table-with-data').locator('tr')
    2 × locator resolved to 0 elements
      - unexpected value "0"
    22 × locator resolved to 10 elements
       - unexpected value "10"

```

# Page snapshot

```yaml
- generic [ref=e1]:
  - generic [ref=e6]:
    - navigation [ref=e7]:
      - generic [ref=e9]:
        - link [ref=e10] [cursor=pointer]:
          - /url: /
        - generic [ref=e11]:
          - generic [ref=e12]: KINNOVIS
          - generic [ref=e13]: Manager
        - button [ref=e15] [cursor=pointer]:
          - img [ref=e16]
      - list [ref=e19]:
        - generic [ref=e22]: Dashboard
        - link "Tasks" [ref=e23] [cursor=pointer]:
          - /url: /tasks
          - img [ref=e26]
          - generic [ref=e29]: Tasks
        - link "Facility maps" [ref=e30] [cursor=pointer]:
          - /url: /facility-map
          - generic [ref=e32]: 󰧾
          - generic [ref=e34]: Facility maps
        - link "Analytics" [ref=e35] [cursor=pointer]:
          - /url: /dashboard
          - generic [ref=e37]: 󱖶
          - generic [ref=e39]: Analytics
        - generic [ref=e41]: Sales
        - link "Bookings" [ref=e42] [cursor=pointer]:
          - /url: /bookings
          - generic [ref=e44]: 󰇡
          - generic [ref=e46]: Bookings
        - link "Customers" [ref=e47] [cursor=pointer]:
          - /url: /customers
          - generic [ref=e49]: 󰀏
          - generic [ref=e51]: Customers
        - link "Invoices" [ref=e52] [cursor=pointer]:
          - /url: /invoices
          - generic [ref=e54]: 󰷉
          - generic [ref=e56]: Invoices
        - link "Credit notes" [ref=e57] [cursor=pointer]:
          - /url: /credit-notes
          - img [ref=e60]
          - generic [ref=e63]: Credit notes
        - link "Units" [ref=e64] [cursor=pointer]:
          - /url: /units
          - generic [ref=e66]: 󰍀
          - generic [ref=e68]: Units
        - generic [ref=e70]: Site management
        - link "Locations" [ref=e71] [cursor=pointer]:
          - /url: /locations
          - generic [ref=e73]: 󰟙
          - generic [ref=e75]: Locations
        - link "Unit types" [ref=e76] [cursor=pointer]:
          - /url: /unit-types
          - generic [ref=e78]: 󰆧
          - generic [ref=e80]: Unit types
        - link "Protection Plans" [ref=e81] [cursor=pointer]:
          - /url: /insurances
          - generic [ref=e83]: 󰳌
          - generic [ref=e85]: Protection Plans
        - link "Deposits" [ref=e86] [cursor=pointer]:
          - /url: /deposits
          - generic [ref=e88]: 󱙆
          - generic [ref=e90]: Deposits
        - link "Products" [ref=e91] [cursor=pointer]:
          - /url: /products
          - generic [ref=e93]: 󰄑
          - generic [ref=e95]: Products
        - link "Discounts" [ref=e96] [cursor=pointer]:
          - /url: /discounts
          - generic [ref=e98]: 󰓼
          - generic [ref=e100]: Discounts
        - generic [ref=e101]:
          - option "Emails" [ref=e102] [cursor=pointer]:
            - generic [ref=e104]: 󰻨
            - generic [ref=e106]: Emails
            - generic [ref=e110]: 󰅀
          - text: 󱡰 󰁥
        - generic [ref=e112]: Admin
        - link "Integrations" [ref=e113] [cursor=pointer]:
          - /url: /connected-apps
          - generic [ref=e115]: 󱘖
          - generic [ref=e117]: Integrations
        - link "User & Roles" [ref=e118] [cursor=pointer]:
          - /url: /users
          - generic [ref=e120]: 󰭘
          - generic [ref=e122]: User & Roles
        - generic [ref=e123]:
          - option "Booking Portal" [ref=e124] [cursor=pointer]:
            - generic [ref=e126]: 󱃁
            - generic [ref=e128]: Booking Portal
            - generic [ref=e132]: 󰅀
          - text: 󰖟 󰟙
        - generic [ref=e133]:
          - option "JaneAI" [ref=e134] [cursor=pointer]:
            - generic [ref=e136]: 󱙺
            - generic [ref=e138]: JaneAI
            - generic [ref=e142]: 󰅀
          - text: 󱜹
        - generic [ref=e144]: Feedback
        - link "Voting Portal" [ref=e145] [cursor=pointer]:
          - /url: /voting-portal
          - generic [ref=e147]: 󰔔
          - generic [ref=e149]: Voting Portal
      - generic [ref=e152]:
        - button "AS Andreas Stadler andreas.stadler@storeroom.at" [ref=e155] [cursor=pointer]:
          - generic [ref=e158]: AS
          - generic [ref=e159]:
            - generic [ref=e160]: Andreas Stadler
            - generic "andreas.stadler@storeroom.at" [ref=e161]
          - generic [ref=e162]: 󰇙
          - generic:
            - text: 󰗊 󰅀
            - text: 󰷖 󰍃
        - button [ref=e163] [cursor=pointer]:
          - generic [ref=e165]: 󰋽
    - main [ref=e166]:
      - generic [ref=e168]:
        - generic [ref=e170]:
          - generic [ref=e172]: Customers
          - generic [ref=e174]:
            - link "Create customer" [ref=e175] [cursor=pointer]:
              - /url: /customers/create
              - generic [ref=e176]:
                - generic [ref=e177]: 󰐕
                - text: Create customer
            - button [ref=e178] [cursor=pointer]:
              - generic [ref=e182]: 󰍝
        - generic [ref=e184]:
          - generic [ref=e186]:
            - button "Filters Reset filters" [ref=e187] [cursor=pointer]:
              - generic [ref=e188]:
                - heading "Filters" [level=3] [ref=e191]
                - generic [ref=e193]:
                  - button "Reset filters" [ref=e195]:
                    - generic [ref=e196]:
                      - generic [ref=e197]: 󰑐
                      - text: Reset filters
                  - generic [ref=e201]: 󰅀
            - generic [ref=e207]:
              - generic [ref=e212]:
                - generic [ref=e214]: 󰍉
                - textbox "Search" [active] [ref=e216]: Nicolas3@gmail.com
                - button "Clear Search" [ref=e218] [cursor=pointer]: 󰅙
                - generic:
                  - generic: Search
              - combobox [ref=e222]:
                - generic [ref=e223]:
                  - generic: Location
                  - combobox "Location" [ref=e225]
                - button [ref=e227] [cursor=pointer]: 󰍝
              - combobox [ref=e231]:
                - generic [ref=e232]:
                  - generic: Has past due invoice(s)
                  - combobox "Has past due invoice(s)" [ref=e234]
                - button [ref=e236] [cursor=pointer]: 󰍝
              - combobox [ref=e240]:
                - generic [ref=e241]:
                  - generic: Status
                  - combobox "Status" [ref=e243]
                - button [ref=e245] [cursor=pointer]: 󰍝
          - generic [ref=e247]:
            - table [ref=e251]:
              - rowgroup [ref=e252]:
                - row "Customer no. Name Location(s) Email address Phone number Status Past due invoice(s) Created at" [ref=e253]:
                  - columnheader "Customer no." [ref=e254]:
                    - button "Customer no." [ref=e255] [cursor=pointer]:
                      - generic [ref=e257]: Customer no.
                      - generic [ref=e260]: 󰁝
                  - columnheader "Name" [ref=e261]:
                    - button "Name" [ref=e262] [cursor=pointer]:
                      - generic [ref=e264]: Name
                      - generic [ref=e267]: 󰁝
                  - columnheader "Location(s)" [ref=e268]:
                    - button "Location(s)" [ref=e269] [cursor=pointer]:
                      - generic [ref=e271]: Location(s)
                      - generic [ref=e274]: 󰁝
                  - columnheader "Email address" [ref=e275]:
                    - button "Email address" [ref=e276] [cursor=pointer]:
                      - generic [ref=e278]: Email address
                      - generic [ref=e281]: 󰁝
                  - columnheader "Phone number" [ref=e282]:
                    - generic [ref=e285]: Phone number
                  - columnheader "Status" [ref=e286]:
                    - button "Status" [ref=e287] [cursor=pointer]:
                      - generic [ref=e289]: Status
                      - generic [ref=e292]: 󰁝
                  - columnheader "Past due invoice(s)" [ref=e293]:
                    - button "Past due invoice(s)" [ref=e294] [cursor=pointer]:
                      - generic [ref=e296]: Past due invoice(s)
                      - generic [ref=e299]: 󰁝
                  - columnheader "Created at" [ref=e300]:
                    - button "Created at" [ref=e301] [cursor=pointer]:
                      - generic [ref=e303]: Created at
                      - generic [ref=e306]: 󰁝
                - row [ref=e307]:
                  - columnheader [ref=e308]
              - rowgroup [ref=e309]:
                - row "1760-5057-57 Zella Padberg Vienna South gerson_sipes2@hotmail.com +43 6029 603690 Lead None 26 May 2026" [ref=e310]:
                  - cell "1760-5057-57" [ref=e311]:
                    - link "1760-5057-57" [ref=e312] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e313]: 1760-5057-57
                  - cell "Zella Padberg" [ref=e314]:
                    - link "Zella Padberg" [ref=e315] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e316]: Zella Padberg
                  - cell "Vienna South" [ref=e317]:
                    - link "Vienna South" [ref=e318] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e322]: Vienna South
                  - cell "gerson_sipes2@hotmail.com" [ref=e323]:
                    - link "gerson_sipes2@hotmail.com" [ref=e324] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e327]: gerson_sipes2@hotmail.com
                  - cell "+43 6029 603690" [ref=e328]:
                    - link "+43 6029 603690" [ref=e329] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e332]: +43 6029 603690
                  - cell "Lead" [ref=e333]:
                    - link "Lead" [ref=e334] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e337]: Lead
                  - cell "None" [ref=e338]:
                    - link "None" [ref=e339] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e342]: None
                  - cell "26 May 2026" [ref=e343]:
                    - link "26 May 2026" [ref=e344] [cursor=pointer]:
                      - /url: /customers/1760505757
                      - generic [ref=e345]: 26 May 2026
                - row "1466-3762-43 Cloyd Stanton Vienna South nicolas3@gmail.com +43 7518 517524 Lead None 26 May 2026" [ref=e346]:
                  - cell "1466-3762-43" [ref=e347]:
                    - link "1466-3762-43" [ref=e348] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e349]: 1466-3762-43
                  - cell "Cloyd Stanton" [ref=e350]:
                    - link "Cloyd Stanton" [ref=e351] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e352]: Cloyd Stanton
                  - cell "Vienna South" [ref=e353]:
                    - link "Vienna South" [ref=e354] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e358]: Vienna South
                  - cell "nicolas3@gmail.com" [ref=e359]:
                    - link "nicolas3@gmail.com" [ref=e360] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e363]: nicolas3@gmail.com
                  - cell "+43 7518 517524" [ref=e364]:
                    - link "+43 7518 517524" [ref=e365] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e368]: +43 7518 517524
                  - cell "Lead" [ref=e369]:
                    - link "Lead" [ref=e370] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e373]: Lead
                  - cell "None" [ref=e374]:
                    - link "None" [ref=e375] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e378]: None
                  - cell "26 May 2026" [ref=e379]:
                    - link "26 May 2026" [ref=e380] [cursor=pointer]:
                      - /url: /customers/1466376243
                      - generic [ref=e381]: 26 May 2026
                - row "9511-2445-7 John Doe Vienna South luther_senger87@yahoo.com +43 6114 514954 Lead None 26 May 2026" [ref=e382]:
                  - cell "9511-2445-7" [ref=e383]:
                    - link "9511-2445-7" [ref=e384] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e385]: 9511-2445-7
                  - cell "John Doe" [ref=e386]:
                    - link "John Doe" [ref=e387] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e388]: John Doe
                  - cell "Vienna South" [ref=e389]:
                    - link "Vienna South" [ref=e390] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e394]: Vienna South
                  - cell "luther_senger87@yahoo.com" [ref=e395]:
                    - link "luther_senger87@yahoo.com" [ref=e396] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e399]: luther_senger87@yahoo.com
                  - cell "+43 6114 514954" [ref=e400]:
                    - link "+43 6114 514954" [ref=e401] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e404]: +43 6114 514954
                  - cell "Lead" [ref=e405]:
                    - link "Lead" [ref=e406] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e409]: Lead
                  - cell "None" [ref=e410]:
                    - link "None" [ref=e411] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e414]: None
                  - cell "26 May 2026" [ref=e415]:
                    - link "26 May 2026" [ref=e416] [cursor=pointer]:
                      - /url: /customers/951124457
                      - generic [ref=e417]: 26 May 2026
                - row "1661-1662-78 Charles Klocko Vienna South lana.kulas35@hotmail.com +43 6544 941052 Lead None 26 May 2026" [ref=e418]:
                  - cell "1661-1662-78" [ref=e419]:
                    - link "1661-1662-78" [ref=e420] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e421]: 1661-1662-78
                  - cell "Charles Klocko" [ref=e422]:
                    - link "Charles Klocko" [ref=e423] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e424]: Charles Klocko
                  - cell "Vienna South" [ref=e425]:
                    - link "Vienna South" [ref=e426] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e430]: Vienna South
                  - cell "lana.kulas35@hotmail.com" [ref=e431]:
                    - link "lana.kulas35@hotmail.com" [ref=e432] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e435]: lana.kulas35@hotmail.com
                  - cell "+43 6544 941052" [ref=e436]:
                    - link "+43 6544 941052" [ref=e437] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e440]: +43 6544 941052
                  - cell "Lead" [ref=e441]:
                    - link "Lead" [ref=e442] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e445]: Lead
                  - cell "None" [ref=e446]:
                    - link "None" [ref=e447] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e450]: None
                  - cell "26 May 2026" [ref=e451]:
                    - link "26 May 2026" [ref=e452] [cursor=pointer]:
                      - /url: /customers/1661166278
                      - generic [ref=e453]: 26 May 2026
                - row "1931-9532-52 Nancy Barton Vienna North Vienna South ethel6@gmail.com +43 847 1679276 Lead None 26 May 2026" [ref=e454]:
                  - cell "1931-9532-52" [ref=e455]:
                    - link "1931-9532-52" [ref=e456] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e457]: 1931-9532-52
                  - cell "Nancy Barton" [ref=e458]:
                    - link "Nancy Barton" [ref=e459] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e460]: Nancy Barton
                  - cell "Vienna North Vienna South" [ref=e461]:
                    - link "Vienna North Vienna South" [ref=e462] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e464]:
                        - generic [ref=e466]: Vienna North
                        - generic [ref=e468]: Vienna South
                  - cell "ethel6@gmail.com" [ref=e469]:
                    - link "ethel6@gmail.com" [ref=e470] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e473]: ethel6@gmail.com
                  - cell "+43 847 1679276" [ref=e474]:
                    - link "+43 847 1679276" [ref=e475] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e478]: +43 847 1679276
                  - cell "Lead" [ref=e479]:
                    - link "Lead" [ref=e480] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e483]: Lead
                  - cell "None" [ref=e484]:
                    - link "None" [ref=e485] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e488]: None
                  - cell "26 May 2026" [ref=e489]:
                    - link "26 May 2026" [ref=e490] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e491]: 26 May 2026
                - row "7813-3370-4 Kayleigh Koch Vienna South concepcion70@yahoo.com +43 6376 073072 Lead None 26 May 2026" [ref=e492]:
                  - cell "7813-3370-4" [ref=e493]:
                    - link "7813-3370-4" [ref=e494] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e495]: 7813-3370-4
                  - cell "Kayleigh Koch" [ref=e496]:
                    - link "Kayleigh Koch" [ref=e497] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e498]: Kayleigh Koch
                  - cell "Vienna South" [ref=e499]:
                    - link "Vienna South" [ref=e500] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e504]: Vienna South
                  - cell "concepcion70@yahoo.com" [ref=e505]:
                    - link "concepcion70@yahoo.com" [ref=e506] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e509]: concepcion70@yahoo.com
                  - cell "+43 6376 073072" [ref=e510]:
                    - link "+43 6376 073072" [ref=e511] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e514]: +43 6376 073072
                  - cell "Lead" [ref=e515]:
                    - link "Lead" [ref=e516] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e519]: Lead
                  - cell "None" [ref=e520]:
                    - link "None" [ref=e521] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e524]: None
                  - cell "26 May 2026" [ref=e525]:
                    - link "26 May 2026" [ref=e526] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e527]: 26 May 2026
                - row "4003-4003-40 Billy Boy Storeroom Innsbruck Vienna North billy.boy@gmail.com +41 12344003 Lead None 26 May 2026" [ref=e528]:
                  - cell "4003-4003-40" [ref=e529]:
                    - link "4003-4003-40" [ref=e530] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e531]: 4003-4003-40
                  - cell "Billy Boy" [ref=e532]:
                    - link "Billy Boy" [ref=e533] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e534]: Billy Boy
                  - cell "Storeroom Innsbruck Vienna North" [ref=e535]:
                    - link "Storeroom Innsbruck Vienna North" [ref=e536] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e538]:
                        - generic [ref=e540]: Storeroom Innsbruck
                        - generic [ref=e542]: Vienna North
                  - cell "billy.boy@gmail.com" [ref=e543]:
                    - link "billy.boy@gmail.com" [ref=e544] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e547]: billy.boy@gmail.com
                  - cell "+41 12344003" [ref=e548]:
                    - link "+41 12344003" [ref=e549] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e552]: +41 12344003
                  - cell "Lead" [ref=e553]:
                    - link "Lead" [ref=e554] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e557]: Lead
                  - cell "None" [ref=e558]:
                    - link "None" [ref=e559] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e562]: None
                  - cell "26 May 2026" [ref=e563]:
                    - link "26 May 2026" [ref=e564] [cursor=pointer]:
                      - /url: /customers/4003400340
                      - generic [ref=e565]: 26 May 2026
                - row "4002-4002-40 Tyriono Multipiablo AG Storeroom Innsbruck Vienna North tyriono.multipiablo@gmail.com +55 12344002 Lead None 26 May 2026" [ref=e566]:
                  - cell "4002-4002-40" [ref=e567]:
                    - link "4002-4002-40" [ref=e568] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e569]: 4002-4002-40
                  - cell "Tyriono Multipiablo AG" [ref=e570]:
                    - link "Tyriono Multipiablo AG" [ref=e571] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e572]: Tyriono Multipiablo AG
                  - cell "Storeroom Innsbruck Vienna North" [ref=e573]:
                    - link "Storeroom Innsbruck Vienna North" [ref=e574] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e576]:
                        - generic [ref=e578]: Storeroom Innsbruck
                        - generic [ref=e580]: Vienna North
                  - cell "tyriono.multipiablo@gmail.com" [ref=e581]:
                    - link "tyriono.multipiablo@gmail.com" [ref=e582] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e585]: tyriono.multipiablo@gmail.com
                  - cell "+55 12344002" [ref=e586]:
                    - link "+55 12344002" [ref=e587] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e590]: +55 12344002
                  - cell "Lead" [ref=e591]:
                    - link "Lead" [ref=e592] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e595]: Lead
                  - cell "None" [ref=e596]:
                    - link "None" [ref=e597] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e600]: None
                  - cell "26 May 2026" [ref=e601]:
                    - link "26 May 2026" [ref=e602] [cursor=pointer]:
                      - /url: /customers/4002400240
                      - generic [ref=e603]: 26 May 2026
                - row "4001-4001-40 Cerseio Lannistero AG Vienna North cerseio.lannistero@gmail.com +44 12344001 Lead None 26 May 2026" [ref=e604]:
                  - cell "4001-4001-40" [ref=e605]:
                    - link "4001-4001-40" [ref=e606] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e607]: 4001-4001-40
                  - cell "Cerseio Lannistero AG" [ref=e608]:
                    - link "Cerseio Lannistero AG" [ref=e609] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e610]: Cerseio Lannistero AG
                  - cell "Vienna North" [ref=e611]:
                    - link "Vienna North" [ref=e612] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e616]: Vienna North
                  - cell "cerseio.lannistero@gmail.com" [ref=e617]:
                    - link "cerseio.lannistero@gmail.com" [ref=e618] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e621]: cerseio.lannistero@gmail.com
                  - cell "+44 12344001" [ref=e622]:
                    - link "+44 12344001" [ref=e623] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e626]: +44 12344001
                  - cell "Lead" [ref=e627]:
                    - link "Lead" [ref=e628] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e631]: Lead
                  - cell "None" [ref=e632]:
                    - link "None" [ref=e633] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e636]: None
                  - cell "26 May 2026" [ref=e637]:
                    - link "26 May 2026" [ref=e638] [cursor=pointer]:
                      - /url: /customers/4001400140
                      - generic [ref=e639]: 26 May 2026
                - row "4000-4000-40 Daeneryso Targaryeno Vienna North daeneryso.targaryeno@gmail.com +49 12344000 Lead None 26 May 2026" [ref=e640]:
                  - cell "4000-4000-40" [ref=e641]:
                    - link "4000-4000-40" [ref=e642] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e643]: 4000-4000-40
                  - cell "Daeneryso Targaryeno" [ref=e644]:
                    - link "Daeneryso Targaryeno" [ref=e645] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e646]: Daeneryso Targaryeno
                  - cell "Vienna North" [ref=e647]:
                    - link "Vienna North" [ref=e648] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e652]: Vienna North
                  - cell "daeneryso.targaryeno@gmail.com" [ref=e653]:
                    - link "daeneryso.targaryeno@gmail.com" [ref=e654] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e657]: daeneryso.targaryeno@gmail.com
                  - cell "+49 12344000" [ref=e658]:
                    - link "+49 12344000" [ref=e659] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e662]: +49 12344000
                  - cell "Lead" [ref=e663]:
                    - link "Lead" [ref=e664] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e667]: Lead
                  - cell "None" [ref=e668]:
                    - link "None" [ref=e669] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e672]: None
                  - cell "26 May 2026" [ref=e673]:
                    - link "26 May 2026" [ref=e674] [cursor=pointer]:
                      - /url: /customers/4000400040
                      - generic [ref=e675]: 26 May 2026
            - generic [ref=e678]:
              - generic [ref=e679]:
                - generic [ref=e680]: "Items per page:"
                - combobox [ref=e683]:
                  - generic [ref=e685] [cursor=pointer]:
                    - generic [ref=e687]: "10"
                    - combobox "Items per page:": "10"
                  - generic [ref=e689]: 󰍝
              - generic [ref=e690]: 1-10 of 48
              - generic [ref=e691]:
                - button [disabled]:
                  - generic:
                    - generic: 󰘀
                - button [disabled]:
                  - generic:
                    - generic: 󰅁
                - button [ref=e692] [cursor=pointer]:
                  - generic [ref=e694]: 󰅂
                - button [ref=e695] [cursor=pointer]:
                  - generic [ref=e697]: 󰘁
  - generic:
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
    - tooltip
```

# Test source

```ts
  21  |     const newCustomer = applyCustomerEditGeneral(customer, tc.changes);
  22  |     const customerFullName = formatCustomerName(newCustomer.firstName, newCustomer.lastName);
  23  |     const customerTitle = newCustomer.type === 'business' ? newCustomer.companyName : customerFullName;
  24  |     const customerPhone = formatPhone(newCustomer.phone);
  25  |     const customerAddress = formatAddress(
  26  |       newCustomer.street,
  27  |       newCustomer.postalCode,
  28  |       newCustomer.city,
  29  |       newCustomer.country.name
  30  |     );
  31  |     const customerId = formatId(newCustomer.id, '-', 4);
  32  |     const customerCreatedAt = formatDate(newCustomer.createdAt);
  33  |     const customerLocationNames = newCustomer.locations.map((l) => l.name);
  34  | 
  35  |     await customerDetailsPage.goto(customer.id);
  36  | 
  37  |     const newDetailsPage = await test.step('edit customer general', async () => {
  38  |       const dialog = await customerDetailsPage.openCustomerEditGeneralDialog();
  39  |       return dialog.edit(tc.changes);
  40  |     });
  41  | 
  42  |     await test.step('verify new customer on details page', async () => {
  43  |       await expectSingleLocatorToHaveText(newDetailsPage.title, customerTitle);
  44  |       await expectSingleLocatorToHaveText(newDetailsPage.status, newCustomer.status);
  45  |       await expectMultiLocatorToHaveText(newDetailsPage.generalCard.locations, customerLocationNames);
  46  |       await expectSingleLocatorToHaveText(newDetailsPage.generalCard.type, newCustomer.type);
  47  | 
  48  |       if (newCustomer.type === 'business') {
  49  |         await expectSingleLocatorToHaveText(newDetailsPage.generalCard.companyName, newCustomer.companyName);
  50  |         await expectSingleLocatorToHaveText(newDetailsPage.generalCard.vatType, newCustomer.vatType?.name);
  51  |         await expectSingleLocatorToHaveText(newDetailsPage.generalCard.vatNumber, newCustomer.vatNumber);
  52  |       } else {
  53  |         await expect(newDetailsPage.generalCard.companyName).toBeHidden();
  54  |         await expect(newDetailsPage.generalCard.vatType).toBeHidden();
  55  |         await expect(newDetailsPage.generalCard.vatNumber).toBeHidden();
  56  |       }
  57  | 
  58  |       await expectSingleLocatorToHaveText(newDetailsPage.generalCard.name, customerFullName);
  59  |       await expectSingleLocatorToHaveText(newDetailsPage.generalCard.email, newCustomer.email);
  60  |       await expectSingleLocatorToHaveText(newDetailsPage.generalCard.phoneNumber, customerPhone);
  61  |       await expectSingleLocatorToHaveText(newDetailsPage.generalCard.language, newCustomer.language.id);
  62  |       await expectSingleLocatorToHaveText(newDetailsPage.generalCard.address, customerAddress);
  63  |       await expectSingleLocatorToHaveText(newDetailsPage.generalCard.note, newCustomer.note);
  64  |     });
  65  | 
  66  |     await test.step('verify new customer on list page', async () => {
  67  |       const listPage = await newDetailsPage.returnToCustomerListPage();
  68  | 
  69  |       await listPage.searchTextField.fill(newCustomer.email);
  70  | 
  71  |       await expect(listPage.dataTable.getRows()).toHaveCount(1);
  72  |       await expectDataTableTextColumnToHaveText(listPage.dataTable, customerTableColumnTestIds.id, customerId);
  73  |       await expectDataTableTextColumnToHaveText(listPage.dataTable, customerTableColumnTestIds.name, customerTitle);
  74  |       await expectDataTableChipsColumnToHaveText(
  75  |         listPage.dataTable,
  76  |         customerTableColumnTestIds.locations,
  77  |         customerLocationNames
  78  |       );
  79  |       await expectDataTableTextColumnToHaveText(
  80  |         listPage.dataTable,
  81  |         customerTableColumnTestIds.email,
  82  |         newCustomer.email
  83  |       );
  84  |       await expectDataTableTextColumnToHaveText(
  85  |         listPage.dataTable,
  86  |         customerTableColumnTestIds.phoneNumber,
  87  |         customerPhone
  88  |       );
  89  |       await expectDataTableChipsColumnToHaveText(
  90  |         listPage.dataTable,
  91  |         customerTableColumnTestIds.status,
  92  |         newCustomer.status
  93  |       );
  94  |       await expectDataTableTextColumnToHaveText(
  95  |         listPage.dataTable,
  96  |         customerTableColumnTestIds.createdAt,
  97  |         customerCreatedAt
  98  |       );
  99  |     });
  100 |   });
  101 | }
  102 | 
  103 | test('edits the email', async ({ createCustomer, customerDetailsPage }) => {
  104 |   const customer = await createCustomer(getCustomerCreateData());
  105 |   const newEmail = faker.internet.email();
  106 | 
  107 |   await customerDetailsPage.goto(customer.id);
  108 | 
  109 |   const newDetailsPage = await test.step('edit customer email', async () => {
  110 |     const dialog = await customerDetailsPage.openCustomerEditGeneralDialog();
  111 |     return dialog.edit({ email: newEmail });
  112 |   });
  113 | 
  114 |   await test.step('verify new email on details page', async () => {
  115 |     await expectSingleLocatorToHaveText(newDetailsPage.generalCard.email, newEmail);
  116 |   });
  117 | 
  118 |   await test.step('verify new email on list page', async () => {
  119 |     const listPage = await newDetailsPage.returnToCustomerListPage();
  120 |     await listPage.searchTextField.fill(newEmail);
> 121 |     await expect(listPage.dataTable.getRows()).toHaveCount(1);
      |                                                ^ Error: expect(locator).toHaveCount(expected) failed
  122 |   });
  123 | });
  124 | 
  125 | test('edits the phone number', async ({ createCustomer, customerDetailsPage }) => {
  126 |   const customer = await createCustomer(getCustomerCreateData());
  127 |   const newCountry = countries.BR;
  128 |   const newPhone = getCustomerPhone(newCountry);
  129 |   const formattedNewPhone = formatPhone(newPhone);
  130 | 
  131 |   await customerDetailsPage.goto(customer.id);
  132 | 
  133 |   const newDetailsPage = await test.step('edit customer phone number', async () => {
  134 |     const dialog = await customerDetailsPage.openCustomerEditGeneralDialog();
  135 |     return dialog.edit({ phone: newPhone, country: newCountry });
  136 |   });
  137 | 
  138 |   await test.step('verify new phone number on details page', async () => {
  139 |     await expectSingleLocatorToHaveText(newDetailsPage.generalCard.phoneNumber, formattedNewPhone);
  140 |   });
  141 | 
  142 |   await test.step('verify new phone number on list page', async () => {
  143 |     const listPage = await newDetailsPage.returnToCustomerListPage();
  144 |     await listPage.searchTextField.fill(formattedNewPhone);
  145 |     await expect(listPage.dataTable.getRows()).toHaveCount(1);
  146 |   });
  147 | });
  148 | 
  149 | test('rejects an edit with a duplicate email', async ({ createCustomer, customerDetailsPage }) => {
  150 |   const existing = await createCustomer(getCustomerCreateData());
  151 |   const editing = await createCustomer(getCustomerCreateData());
  152 | 
  153 |   await customerDetailsPage.goto(editing.id);
  154 | 
  155 |   const dialog = await test.step('submit edit with duplicate email', async () => {
  156 |     const editDialog = await customerDetailsPage.openCustomerEditGeneralDialog();
  157 |     await editDialog.fill({ email: existing.email });
  158 |     await editDialog.submit();
  159 |     return editDialog;
  160 |   });
  161 | 
  162 |   await test.step('verify errors on form', async () => {
  163 |     await expect(dialog.errors).toHaveCountGreaterThan(0);
  164 |   });
  165 | });
  166 | 
  167 | test('rejects an edit with a duplicate phone number', async ({ createCustomer, customerDetailsPage }) => {
  168 |   const existing = await createCustomer(getCustomerCreateData());
  169 |   const editing = await createCustomer(getCustomerCreateData());
  170 | 
  171 |   await customerDetailsPage.goto(editing.id);
  172 | 
  173 |   const dialog = await test.step('submit edit with duplicate phone number', async () => {
  174 |     const editDialog = await customerDetailsPage.openCustomerEditGeneralDialog();
  175 |     await editDialog.fill({ phone: existing.phone, country: existing.country });
  176 |     await editDialog.submit();
  177 |     return editDialog;
  178 |   });
  179 | 
  180 |   await test.step('verify errors on form', async () => {
  181 |     await expect(dialog.errors).toHaveCountGreaterThan(0);
  182 |   });
  183 | });
  184 | 
  185 | test('rejects an edit with a vat number that does not match the vat type', async ({
  186 |   createCustomer,
  187 |   customerDetailsPage,
  188 | }) => {
  189 |   const customer = await createCustomer(getCustomerCreateData({ type: 'business' }));
  190 | 
  191 |   await customerDetailsPage.goto(customer.id);
  192 | 
  193 |   const dialog = await test.step('submit edit with mismatched vat type and number', async () => {
  194 |     const editDialog = await customerDetailsPage.openCustomerEditGeneralDialog();
  195 |     await editDialog.fill({ vatType: vatTypes.eu_vat, vatNumber: 'INVALID-VAT-1234' });
  196 |     await editDialog.submit();
  197 |     return editDialog;
  198 |   });
  199 | 
  200 |   await test.step('verify errors on form', async () => {
  201 |     await expect(dialog.errors).toHaveCountGreaterThan(0);
  202 |   });
  203 | });
  204 | 
  205 | test('rejects an edit without all required fields', async ({ createCustomer, customerDetailsPage }) => {
  206 |   const customer = await createCustomer(getCustomerCreateData({ type: 'private' }));
  207 | 
  208 |   await customerDetailsPage.goto(customer.id);
  209 | 
  210 |   const dialog = await test.step('submit edit clearing required fields', async () => {
  211 |     const editDialog = await customerDetailsPage.openCustomerEditGeneralDialog();
  212 |     await editDialog.fill({ firstName: '', lastName: '' });
  213 |     await editDialog.submit();
  214 |     return editDialog;
  215 |   });
  216 | 
  217 |   await test.step('verify errors on form', async () => {
  218 |     await expect(dialog.errors).toHaveCountGreaterThan(0);
  219 |   });
  220 | });
  221 | 
```