# 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 >> removes the vat number
- Location: src/manager/tests/e2e/customer/customer-edit-general.spec.ts:19:7

# 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]:
            - generic [ref=e14]: Manager
            - button [ref=e15] [cursor=pointer]:
              - img [ref=e16]
      - list [ref=e19]:
        - generic [ref=e21]: Dashboard
        - link "Tasks" [ref=e22] [cursor=pointer]:
          - /url: /tasks
          - img [ref=e25]
          - generic [ref=e28]: Tasks
        - link "Facility maps" [ref=e29] [cursor=pointer]:
          - /url: /facility-map
          - generic [ref=e31]: 󰧾
          - generic [ref=e33]: Facility maps
        - link "Analytics" [ref=e34] [cursor=pointer]:
          - /url: /dashboard
          - generic [ref=e36]: 󱖶
          - generic [ref=e38]: Analytics
        - generic [ref=e40]: Sales
        - link "Bookings" [ref=e41] [cursor=pointer]:
          - /url: /bookings
          - generic [ref=e43]: 󰇡
          - generic [ref=e45]: Bookings
        - link "Customers" [ref=e46] [cursor=pointer]:
          - /url: /customers
          - generic [ref=e48]: 󰀏
          - generic [ref=e50]: Customers
        - link "Invoices" [ref=e51] [cursor=pointer]:
          - /url: /invoices
          - generic [ref=e53]: 󰷉
          - generic [ref=e55]: Invoices
        - link "Credit notes" [ref=e56] [cursor=pointer]:
          - /url: /credit-notes
          - img [ref=e59]
          - generic [ref=e62]: Credit notes
        - link "Units" [ref=e63] [cursor=pointer]:
          - /url: /units
          - generic [ref=e65]: 󰍀
          - generic [ref=e67]: Units
        - generic [ref=e69]: Site management
        - link "Locations" [ref=e70] [cursor=pointer]:
          - /url: /locations
          - generic [ref=e72]: 󰟙
          - generic [ref=e74]: Locations
        - link "Unit types" [ref=e75] [cursor=pointer]:
          - /url: /unit-types
          - generic [ref=e77]: 󰆧
          - generic [ref=e79]: Unit types
        - link "Protection Plans" [ref=e80] [cursor=pointer]:
          - /url: /insurances
          - generic [ref=e82]: 󰳌
          - generic [ref=e84]: Protection Plans
        - link "Deposits" [ref=e85] [cursor=pointer]:
          - /url: /deposits
          - generic [ref=e87]: 󱙆
          - generic [ref=e89]: Deposits
        - link "Products" [ref=e90] [cursor=pointer]:
          - /url: /products
          - generic [ref=e92]: 󰄑
          - generic [ref=e94]: Products
        - link "Discounts" [ref=e95] [cursor=pointer]:
          - /url: /discounts
          - generic [ref=e97]: 󰓼
          - generic [ref=e99]: Discounts
        - generic [ref=e100]:
          - option "Emails" [ref=e101] [cursor=pointer]:
            - generic [ref=e103]: 󰻨
            - generic [ref=e105]: Emails
            - generic [ref=e109]: 󰅀
          - text: 󱡰 󰁥
        - generic [ref=e111]: Admin
        - link "Integrations" [ref=e112] [cursor=pointer]:
          - /url: /connected-apps
          - generic [ref=e114]: 󱘖
          - generic [ref=e116]: Integrations
        - link "User & Roles" [ref=e117] [cursor=pointer]:
          - /url: /users
          - generic [ref=e119]: 󰭘
          - generic [ref=e121]: User & Roles
        - generic [ref=e122]:
          - option "Booking Portal" [ref=e123] [cursor=pointer]:
            - generic [ref=e125]: 󱃁
            - generic [ref=e127]: Booking Portal
            - generic [ref=e131]: 󰅀
          - text: 󰖟 󰟙
        - generic [ref=e132]:
          - option "JaneAI" [ref=e133] [cursor=pointer]:
            - generic [ref=e135]: 󱙺
            - generic [ref=e137]: JaneAI
            - generic [ref=e141]: 󰅀
          - text: 󱜹
        - generic [ref=e143]: Feedback
        - link "Voting Portal" [ref=e144] [cursor=pointer]:
          - /url: /voting-portal
          - generic [ref=e146]: 󰔔
          - generic [ref=e148]: Voting Portal
      - generic [ref=e150]:
        - button "AS Andreas Stadler andreas.stadler@storeroom.at" [ref=e153] [cursor=pointer]:
          - generic [ref=e156]: AS
          - generic [ref=e157]:
            - generic [ref=e158]: Andreas Stadler
            - generic "andreas.stadler@storeroom.at" [ref=e159]
          - generic [ref=e160]: 󰇙
          - generic:
            - text: 󰗊 󰅀
            - text: 󰷖 󰍃
        - button [ref=e161] [cursor=pointer]:
          - generic [ref=e163]: 󰋽
    - main [ref=e164]:
      - generic [ref=e166]:
        - generic [ref=e168]:
          - generic [ref=e170]: Customers
          - generic [ref=e172]:
            - link "Create customer" [ref=e173] [cursor=pointer]:
              - /url: /customers/create
              - generic [ref=e174]:
                - generic [ref=e175]: 󰐕
                - text: Create customer
            - button [ref=e176] [cursor=pointer]:
              - generic [ref=e180]: 󰍝
        - generic [ref=e182]:
          - generic [ref=e184]:
            - button "Filters Reset filters" [ref=e185] [cursor=pointer]:
              - generic [ref=e186]:
                - heading "Filters" [level=3] [ref=e189]
                - generic [ref=e191]:
                  - button "Reset filters" [ref=e193]:
                    - generic [ref=e194]:
                      - generic [ref=e195]: 󰑐
                      - text: Reset filters
                  - generic [ref=e199]: 󰅀
            - generic [ref=e205]:
              - generic [ref=e210]:
                - generic [ref=e212]: 󰍉
                - textbox "Search" [active] [ref=e214]: Pearl0@hotmail.com
                - button "Clear Search" [ref=e216] [cursor=pointer]: 󰅙
                - generic:
                  - generic: Search
              - combobox [ref=e220]:
                - generic [ref=e221]:
                  - generic: Location
                  - combobox "Location" [ref=e223]
                - button [ref=e225] [cursor=pointer]: 󰍝
              - combobox [ref=e229]:
                - generic [ref=e230]:
                  - generic: Has past due invoice(s)
                  - combobox "Has past due invoice(s)" [ref=e232]
                - button [ref=e234] [cursor=pointer]: 󰍝
              - combobox [ref=e238]:
                - generic [ref=e239]:
                  - generic: Status
                  - combobox "Status" [ref=e241]
                - button [ref=e243] [cursor=pointer]: 󰍝
          - generic [ref=e245]:
            - table [ref=e249]:
              - rowgroup [ref=e250]:
                - row "Customer no. Name Location(s) Email address Phone number Status Past due invoice(s) Created at" [ref=e251]:
                  - columnheader "Customer no." [ref=e252]:
                    - button "Customer no." [ref=e253] [cursor=pointer]:
                      - generic [ref=e255]: Customer no.
                      - generic [ref=e258]: 󰁝
                  - columnheader "Name" [ref=e259]:
                    - button "Name" [ref=e260] [cursor=pointer]:
                      - generic [ref=e262]: Name
                      - generic [ref=e265]: 󰁝
                  - columnheader "Location(s)" [ref=e266]:
                    - button "Location(s)" [ref=e267] [cursor=pointer]:
                      - generic [ref=e269]: Location(s)
                      - generic [ref=e272]: 󰁝
                  - columnheader "Email address" [ref=e273]:
                    - button "Email address" [ref=e274] [cursor=pointer]:
                      - generic [ref=e276]: Email address
                      - generic [ref=e279]: 󰁝
                  - columnheader "Phone number" [ref=e280]:
                    - generic [ref=e283]: Phone number
                  - columnheader "Status" [ref=e284]:
                    - button "Status" [ref=e285] [cursor=pointer]:
                      - generic [ref=e287]: Status
                      - generic [ref=e290]: 󰁝
                  - columnheader "Past due invoice(s)" [ref=e291]:
                    - button "Past due invoice(s)" [ref=e292] [cursor=pointer]:
                      - generic [ref=e294]: Past due invoice(s)
                      - generic [ref=e297]: 󰁝
                  - columnheader "Created at" [ref=e298]:
                    - button "Created at" [ref=e299] [cursor=pointer]:
                      - generic [ref=e301]: Created at
                      - generic [ref=e304]: 󰁝
                - row [ref=e305]:
                  - columnheader [ref=e306]
              - rowgroup [ref=e307]:
                - row "1931-9532-52 Zemlak, Smitham and Windler Vienna South pearl0@hotmail.com +43 677 5465987 Lead None 23 May 2026" [ref=e308]:
                  - cell "1931-9532-52" [ref=e309]:
                    - link "1931-9532-52" [ref=e310] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e311]: 1931-9532-52
                  - cell "Zemlak, Smitham and Windler" [ref=e312]:
                    - link "Zemlak, Smitham and Windler" [ref=e313] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e314]: Zemlak, Smitham and Windler
                  - cell "Vienna South" [ref=e315]:
                    - link "Vienna South" [ref=e316] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e320]: Vienna South
                  - cell "pearl0@hotmail.com" [ref=e321]:
                    - link "pearl0@hotmail.com" [ref=e322] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e325]: pearl0@hotmail.com
                  - cell "+43 677 5465987" [ref=e326]:
                    - link "+43 677 5465987" [ref=e327] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e330]: +43 677 5465987
                  - cell "Lead" [ref=e331]:
                    - link "Lead" [ref=e332] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e335]: Lead
                  - cell "None" [ref=e336]:
                    - link "None" [ref=e337] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e340]: None
                  - cell "23 May 2026" [ref=e341]:
                    - link "23 May 2026" [ref=e342] [cursor=pointer]:
                      - /url: /customers/1931953252
                      - generic [ref=e343]: 23 May 2026
                - row "7813-3370-4 Della Reinger Vienna South marjorie.orn@yahoo.com +43 885 8809199 Lead None 23 May 2026" [ref=e344]:
                  - cell "7813-3370-4" [ref=e345]:
                    - link "7813-3370-4" [ref=e346] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e347]: 7813-3370-4
                  - cell "Della Reinger" [ref=e348]:
                    - link "Della Reinger" [ref=e349] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e350]: Della Reinger
                  - cell "Vienna South" [ref=e351]:
                    - link "Vienna South" [ref=e352] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e356]: Vienna South
                  - cell "marjorie.orn@yahoo.com" [ref=e357]:
                    - link "marjorie.orn@yahoo.com" [ref=e358] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e361]: marjorie.orn@yahoo.com
                  - cell "+43 885 8809199" [ref=e362]:
                    - link "+43 885 8809199" [ref=e363] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e366]: +43 885 8809199
                  - cell "Lead" [ref=e367]:
                    - link "Lead" [ref=e368] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e371]: Lead
                  - cell "None" [ref=e372]:
                    - link "None" [ref=e373] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e376]: None
                  - cell "23 May 2026" [ref=e377]:
                    - link "23 May 2026" [ref=e378] [cursor=pointer]:
                      - /url: /customers/781333704
                      - generic [ref=e379]: 23 May 2026
                - row "1321-0844-10 Melisa Ortiz Vienna South floyd.halvorson32@hotmail.com +43 3201 436245 Lead None 23 May 2026" [ref=e380]:
                  - cell "1321-0844-10" [ref=e381]:
                    - link "1321-0844-10" [ref=e382] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e383]: 1321-0844-10
                  - cell "Melisa Ortiz" [ref=e384]:
                    - link "Melisa Ortiz" [ref=e385] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e386]: Melisa Ortiz
                  - cell "Vienna South" [ref=e387]:
                    - link "Vienna South" [ref=e388] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e392]: Vienna South
                  - cell "floyd.halvorson32@hotmail.com" [ref=e393]:
                    - link "floyd.halvorson32@hotmail.com" [ref=e394] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e397]: floyd.halvorson32@hotmail.com
                  - cell "+43 3201 436245" [ref=e398]:
                    - link "+43 3201 436245" [ref=e399] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e402]: +43 3201 436245
                  - cell "Lead" [ref=e403]:
                    - link "Lead" [ref=e404] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e407]: Lead
                  - cell "None" [ref=e408]:
                    - link "None" [ref=e409] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e412]: None
                  - cell "23 May 2026" [ref=e413]:
                    - link "23 May 2026" [ref=e414] [cursor=pointer]:
                      - /url: /customers/1321084410
                      - generic [ref=e415]: 23 May 2026
                - row "1628-3092-14 Gregory Cole Vienna North Vienna South jerald_reinger52@gmail.com +43 833 3365083 Lead None 23 May 2026" [ref=e416]:
                  - cell "1628-3092-14" [ref=e417]:
                    - link "1628-3092-14" [ref=e418] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e419]: 1628-3092-14
                  - cell "Gregory Cole" [ref=e420]:
                    - link "Gregory Cole" [ref=e421] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e422]: Gregory Cole
                  - cell "Vienna North Vienna South" [ref=e423]:
                    - link "Vienna North Vienna South" [ref=e424] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e426]:
                        - generic [ref=e428]: Vienna North
                        - generic [ref=e430]: Vienna South
                  - cell "jerald_reinger52@gmail.com" [ref=e431]:
                    - link "jerald_reinger52@gmail.com" [ref=e432] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e435]: jerald_reinger52@gmail.com
                  - cell "+43 833 3365083" [ref=e436]:
                    - link "+43 833 3365083" [ref=e437] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e440]: +43 833 3365083
                  - cell "Lead" [ref=e441]:
                    - link "Lead" [ref=e442] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e445]: Lead
                  - cell "None" [ref=e446]:
                    - link "None" [ref=e447] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e450]: None
                  - cell "23 May 2026" [ref=e451]:
                    - link "23 May 2026" [ref=e452] [cursor=pointer]:
                      - /url: /customers/1628309214
                      - generic [ref=e453]: 23 May 2026
                - row "2135-1647-18 Kutch LLC Vienna South vincenzo15@wolff.org +43 69305901089577281 Lead None 23 May 2026" [ref=e454]:
                  - cell "2135-1647-18" [ref=e455]:
                    - link "2135-1647-18" [ref=e456] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e457]: 2135-1647-18
                  - cell "Kutch LLC" [ref=e458]:
                    - link "Kutch LLC" [ref=e459] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e460]: Kutch LLC
                  - cell "Vienna South" [ref=e461]:
                    - link "Vienna South" [ref=e462] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e466]: Vienna South
                  - cell "vincenzo15@wolff.org" [ref=e467]:
                    - link "vincenzo15@wolff.org" [ref=e468] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e471]: vincenzo15@wolff.org
                  - cell "+43 69305901089577281" [ref=e472]:
                    - link "+43 69305901089577281" [ref=e473] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e476]: +43 69305901089577281
                  - cell "Lead" [ref=e477]:
                    - link "Lead" [ref=e478] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e481]: Lead
                  - cell "None" [ref=e482]:
                    - link "None" [ref=e483] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e486]: None
                  - cell "23 May 2026" [ref=e487]:
                    - link "23 May 2026" [ref=e488] [cursor=pointer]:
                      - /url: /customers/2135164718
                      - generic [ref=e489]: 23 May 2026
                - row "1471-5104-95 Howell Ltd Vienna North bahringer.tyrique@schulist.com +43 89841270768028754 Lead None 23 May 2026" [ref=e490]:
                  - cell "1471-5104-95" [ref=e491]:
                    - link "1471-5104-95" [ref=e492] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e493]: 1471-5104-95
                  - cell "Howell Ltd" [ref=e494]:
                    - link "Howell Ltd" [ref=e495] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e496]: Howell Ltd
                  - cell "Vienna North" [ref=e497]:
                    - link "Vienna North" [ref=e498] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e502]: Vienna North
                  - cell "bahringer.tyrique@schulist.com" [ref=e503]:
                    - link "bahringer.tyrique@schulist.com" [ref=e504] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e507]: bahringer.tyrique@schulist.com
                  - cell "+43 89841270768028754" [ref=e508]:
                    - link "+43 89841270768028754" [ref=e509] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e512]: +43 89841270768028754
                  - cell "Lead" [ref=e513]:
                    - link "Lead" [ref=e514] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e517]: Lead
                  - cell "None" [ref=e518]:
                    - link "None" [ref=e519] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e522]: None
                  - cell "23 May 2026" [ref=e523]:
                    - link "23 May 2026" [ref=e524] [cursor=pointer]:
                      - /url: /customers/1471510495
                      - generic [ref=e525]: 23 May 2026
                - row "3398-3092-7 Wilderman, Schumm and Littel Storeroom Innsbruck City 1030 carrie14@bergnaum.com +43 38345376027784022 Lead None 23 May 2026" [ref=e526]:
                  - cell "3398-3092-7" [ref=e527]:
                    - link "3398-3092-7" [ref=e528] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e529]: 3398-3092-7
                  - cell "Wilderman, Schumm and Littel" [ref=e530]:
                    - link "Wilderman, Schumm and Littel" [ref=e531] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e532]: Wilderman, Schumm and Littel
                  - cell "Storeroom Innsbruck City 1030" [ref=e533]:
                    - link "Storeroom Innsbruck City 1030" [ref=e534] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e536]:
                        - generic [ref=e538]: Storeroom Innsbruck
                        - generic [ref=e540]: City 1030
                  - cell "carrie14@bergnaum.com" [ref=e541]:
                    - link "carrie14@bergnaum.com" [ref=e542] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e545]: carrie14@bergnaum.com
                  - cell "+43 38345376027784022" [ref=e546]:
                    - link "+43 38345376027784022" [ref=e547] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e550]: +43 38345376027784022
                  - cell "Lead" [ref=e551]:
                    - link "Lead" [ref=e552] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e555]: Lead
                  - cell "None" [ref=e556]:
                    - link "None" [ref=e557] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e560]: None
                  - cell "23 May 2026" [ref=e561]:
                    - link "23 May 2026" [ref=e562] [cursor=pointer]:
                      - /url: /customers/339830927
                      - generic [ref=e563]: 23 May 2026
                - row "1424-5788-77 Michaela Mertz Vienna South oharber@hotmail.com +43 47954789866127094 Lead None 23 May 2026" [ref=e564]:
                  - cell "1424-5788-77" [ref=e565]:
                    - link "1424-5788-77" [ref=e566] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e567]: 1424-5788-77
                  - cell "Michaela Mertz" [ref=e568]:
                    - link "Michaela Mertz" [ref=e569] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e570]: Michaela Mertz
                  - cell "Vienna South" [ref=e571]:
                    - link "Vienna South" [ref=e572] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e576]: Vienna South
                  - cell "oharber@hotmail.com" [ref=e577]:
                    - link "oharber@hotmail.com" [ref=e578] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e581]: oharber@hotmail.com
                  - cell "+43 47954789866127094" [ref=e582]:
                    - link "+43 47954789866127094" [ref=e583] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e586]: +43 47954789866127094
                  - cell "Lead" [ref=e587]:
                    - link "Lead" [ref=e588] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e591]: Lead
                  - cell "None" [ref=e592]:
                    - link "None" [ref=e593] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e596]: None
                  - cell "23 May 2026" [ref=e597]:
                    - link "23 May 2026" [ref=e598] [cursor=pointer]:
                      - /url: /customers/1424578877
                      - generic [ref=e599]: 23 May 2026
                - row "3966-8131 Stephon Wunsch Vienna North ruecker.mallie@roob.org +43 80472687474452949 Lead None 23 May 2026" [ref=e600]:
                  - cell "3966-8131" [ref=e601]:
                    - link "3966-8131" [ref=e602] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e603]: 3966-8131
                  - cell "Stephon Wunsch" [ref=e604]:
                    - link "Stephon Wunsch" [ref=e605] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e606]: Stephon Wunsch
                  - cell "Vienna North" [ref=e607]:
                    - link "Vienna North" [ref=e608] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e612]: Vienna North
                  - cell "ruecker.mallie@roob.org" [ref=e613]:
                    - link "ruecker.mallie@roob.org" [ref=e614] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e617]: ruecker.mallie@roob.org
                  - cell "+43 80472687474452949" [ref=e618]:
                    - link "+43 80472687474452949" [ref=e619] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e622]: +43 80472687474452949
                  - cell "Lead" [ref=e623]:
                    - link "Lead" [ref=e624] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e627]: Lead
                  - cell "None" [ref=e628]:
                    - link "None" [ref=e629] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e632]: None
                  - cell "23 May 2026" [ref=e633]:
                    - link "23 May 2026" [ref=e634] [cursor=pointer]:
                      - /url: /customers/39668131
                      - generic [ref=e635]: 23 May 2026
                - row "1406-4175-55 Gladys Jacobi Storeroom Innsbruck City 1030 wpouros@yahoo.com +43 26398474566380394 Lead None 23 May 2026" [ref=e636]:
                  - cell "1406-4175-55" [ref=e637]:
                    - link "1406-4175-55" [ref=e638] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e639]: 1406-4175-55
                  - cell "Gladys Jacobi" [ref=e640]:
                    - link "Gladys Jacobi" [ref=e641] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e642]: Gladys Jacobi
                  - cell "Storeroom Innsbruck City 1030" [ref=e643]:
                    - link "Storeroom Innsbruck City 1030" [ref=e644] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e646]:
                        - generic [ref=e648]: Storeroom Innsbruck
                        - generic [ref=e650]: City 1030
                  - cell "wpouros@yahoo.com" [ref=e651]:
                    - link "wpouros@yahoo.com" [ref=e652] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e655]: wpouros@yahoo.com
                  - cell "+43 26398474566380394" [ref=e656]:
                    - link "+43 26398474566380394" [ref=e657] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e660]: +43 26398474566380394
                  - cell "Lead" [ref=e661]:
                    - link "Lead" [ref=e662] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e665]: Lead
                  - cell "None" [ref=e666]:
                    - link "None" [ref=e667] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e670]: None
                  - cell "23 May 2026" [ref=e671]:
                    - link "23 May 2026" [ref=e672] [cursor=pointer]:
                      - /url: /customers/1406417555
                      - generic [ref=e673]: 23 May 2026
            - generic [ref=e676]:
              - generic [ref=e677]:
                - generic [ref=e678]: "Items per page:"
                - combobox [ref=e681]:
                  - generic [ref=e683] [cursor=pointer]:
                    - generic [ref=e685]: "10"
                    - combobox "Items per page:": "10"
                  - generic [ref=e687]: 󰍝
              - generic [ref=e688]: 1-10 of 25
              - generic [ref=e689]:
                - button [disabled]:
                  - generic:
                    - generic: 󰘀
                - button [disabled]:
                  - generic:
                    - generic: 󰅁
                - button [ref=e690] [cursor=pointer]:
                  - generic [ref=e692]: 󰅂
                - button [ref=e693] [cursor=pointer]:
                  - generic [ref=e695]: 󰘁
  - 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
  1   | import { faker } from '@faker-js/faker';
  2   | import { getCustomerCreateData, getCustomerPhone } from '@/manager/modules/customer/customer-factories';
  3   | import { test } from '@/manager/modules/customer/customer-fixtures';
  4   | import { applyCustomerEditGeneral } from '@/manager/modules/customer/customer-mappers';
  5   | import { formatCustomerName } from '@/manager/modules/customer/customer-utils';
  6   | import { customerEditGeneralHappyTestCases } from '@/manager/modules/customer/test-cases/customer-edit-general-happy-test-cases';
  7   | import {
  8   |   expectDataTableChipsColumnToHaveText,
  9   |   expectDataTableTextColumnToHaveText,
  10  | } from '@/manager/modules/ui/data-table/data-table-assertions';
  11  | import { customerTableColumnTestIds } from '@/manager/modules/ui/data-table/data/data-table-column-test-ids';
  12  | import { expectMultiLocatorToHaveText, expectSingleLocatorToHaveText } from '@/manager/shared/utils/expect-utils';
  13  | import { countries } from '@/shared/data/seed-countries';
  14  | import { vatTypes } from '@/shared/data/seed-vat-types';
  15  | import { formatAddress, formatDate, formatId, formatPhone } from '@/shared/utils/formatters';
  16  | import { expect } from '@/shared/utils/matchers';
  17  | 
  18  | for (const tc of customerEditGeneralHappyTestCases) {
  19  |   test(tc.description, async ({ createCustomer, customerDetailsPage }) => {
  20  |     const customer = await createCustomer(getCustomerCreateData(tc.initialOptions));
  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);
      |                                                  ^ Error: expect(locator).toHaveCount(expected) failed
  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);
  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);
```