# 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: checkout-flow/fra.spec.ts >> @COF_FR PAYPAL PAYMENT >> FR - PayPal express - Cart Drawer Checkout with PayPal express in Checkout page
- Location: tests/checkout-flow/fra.spec.ts:143:7

# Error details

```
Test timeout of 120000ms exceeded.
```

```
Error: locator.click: Test timeout of 120000ms exceeded.
Call log:
  - waiting for locator('//*[contains(@class, \'om-popup-close-x\')]').nth(1)
    - locator resolved to <span data-delay="1" class="om-popup-close-x">X</span>
  - attempting click action
    2 × waiting for element to be visible, enabled and stable
      - element is not visible
    - retrying click action
    - waiting 20ms
    2 × waiting for element to be visible, enabled and stable
      - element is not visible
    - retrying click action
      - waiting 100ms
    89 × waiting for element to be visible, enabled and stable
       - element is not visible
     - retrying click action
       - waiting 500ms

```

# Page snapshot

```yaml
- generic [active] [ref=e1]:
  - link "Passer au contenu" [ref=e2] [cursor=pointer]:
    - /url: "#main"
  - complementary [ref=e3]:
    - paragraph [ref=e9]:
      - link "Noté 4.7/5 ⭐ Livraison et retours gratuits" [ref=e10] [cursor=pointer]:
        - /url: /collections/our-products
  - banner [ref=e11]:
    - generic [ref=e14]:
      - navigation [ref=e17]:
        - list [ref=e18]:
          - listitem [ref=e19]:
            - group [ref=e20]:
              - generic "Sondes périnéales" [ref=e21] [cursor=pointer]: Sondes périnéales
          - listitem [ref=e23]:
            - group [ref=e24]:
              - generic "Tire-laits" [ref=e25] [cursor=pointer]: Tire-laits
      - link "Perifit (France)" [ref=e27] [cursor=pointer]:
        - /url: /
        - generic [ref=e28]: Perifit (France)
      - generic [ref=e29]:
        - navigation [ref=e30]:
          - list [ref=e31]:
            - listitem [ref=e32]:
              - link "Questions fréquentes" [ref=e33] [cursor=pointer]:
                - /url: /pages/faq-perifit
        - generic [ref=e34]:
          - link "Ouvrir la recherche" [ref=e35] [cursor=pointer]:
            - /url: /search
            - generic [ref=e36]: Ouvrir la recherche
          - link "Voir le panier" [ref=e39] [cursor=pointer]:
            - /url: /cart
            - generic [ref=e40]: Voir le panier
  - main [ref=e45]:
    - generic [ref=e48]:
      - generic [ref=e52]:
        - generic [ref=e53]:
          - img "Perifit Care+ | Sonde périnéale nouvelle génération" [ref=e54]
          - button "Zoomer sur l'image" [ref=e56] [cursor=pointer]:
            - generic [ref=e57]: Zoomer sur l'image
        - generic [ref=e61]:
          - img "Perifit Care+ | Sonde périnéale nouvelle génération" [ref=e62]
          - button "Zoomer sur l'image" [ref=e64] [cursor=pointer]:
            - generic [ref=e65]: Zoomer sur l'image
        - generic [ref=e69]:
          - img "Perifit Care+ | Sonde périnéale nouvelle génération" [ref=e70]
          - button "Zoomer sur l'image" [ref=e72] [cursor=pointer]:
            - generic [ref=e73]: Zoomer sur l'image
      - generic [ref=e77]:
        - heading "Perifit Care+ | Sonde périnéale nouvelle génération" [level=1] [ref=e78]
        - heading "En finir avec les fuites de façon ludique" [level=5] [ref=e81]
        - generic [ref=e83]:
          - generic [ref=e85]:
            - generic [ref=e86]: Prix de vente
            - text: €159,00
          - generic [ref=e88] [cursor=pointer]:
            - button "Voir tous les avis" [ref=e89]:
              - generic [ref=e90]: 
              - generic [ref=e91]: 
              - generic [ref=e92]: 
              - generic [ref=e93]: 
              - generic [ref=e94]: 
            - text: 1116 avis
        - paragraph [ref=e99]:
          - text: 3 paiements de
          - strong [ref=e100]: 53,00 €
          - text: à 0 % d'intérêt avec
          - generic [ref=e101]: Klarna
          - button "En savoir plus (Opens in the current tab)" [ref=e102] [cursor=pointer]: En savoir plus
        - generic [ref=e106]:
          - button "Ajouter au panier" [ref=e107] [cursor=pointer]:
            - generic [ref=e108]: Ajouter au panier
          - generic [ref=e110]:
            - iframe [ref=e114]:
              - generic "PayPal" [ref=f21e2]:
                - link "Payer avec PayPal" [ref=f21e5] [cursor=pointer]:
                  - generic [ref=f21e7]: Payer avec
            - link "Plus de moyens de paiement" [ref=e116] [cursor=pointer]:
              - /url: "#"
        - generic [ref=e121]: En stock, commande expédiée le 10/08/26 - Livraison en 72h offerte !
        - separator [ref=e122]
        - paragraph [ref=e125]:
          - text: 💪
          - strong [ref=e126]: Renforcement du plancher pelvien
          - text: pour réduire les fuites urinaires et tonifier votre périnée durablement
          - text: ✅
          - strong [ref=e127]: Technologie de biofeedback
          - text: avec détection des mouvements et des mauvaises contractions en temps réel
          - text: 🎮
          - strong [ref=e128]: Jeux vidéo interactifs
          - text: pour un entraînement motivant engageant une pratique régulière
          - text: 🏠
          - strong [ref=e129]: Facile à utiliser et discret
          - text: pour une rééducation à domicile avec un confort amélioré grâce au design miniaturisé et flexible
          - text: 🤩
          - strong [ref=e130]: Efficacité cliniquement prouvée
          - text: pour réduire l'incontinence urinaire
        - group [ref=e131]:
          - generic "Comment ça fonctionne" [ref=e132] [cursor=pointer]:
            - generic [ref=e134]: Comment ça fonctionne
        - generic [ref=e137]:
          - generic [ref=e138]:
            - generic [ref=e142]: 100 jours d'essai
            - paragraph [ref=e144]:
              - link "Retour facile et gratuit" [ref=e145] [cursor=pointer]:
                - /url: /policies/refund-policy
          - generic [ref=e146]:
            - generic [ref=e151]: Livraison gratuite
            - paragraph [ref=e153]: Colis discret et anonyme
        - generic [ref=e155]:
          - generic [ref=e156]:
            - paragraph [ref=e157]: Fréquemment achetés ensemble
            - generic [ref=e158]:
              - button "Précédent" [disabled] [ref=e159]
              - button "Suivant" [ref=e161] [cursor=pointer]
          - generic [ref=e164]:
            - generic [ref=e165]:
              - img "Pochette pour la sonde Perifit" [ref=e166]
              - generic [ref=e167]:
                - generic [ref=e168]:
                  - link "Pochette pour la sonde Perifit" [ref=e169] [cursor=pointer]:
                    - /url: /products/small-bag?pr_prod_strat=pinned&pr_rec_id=b870813d7&pr_rec_pid=8672912048458&pr_ref_pid=8672911982922&pr_seq=uniform
                  - paragraph [ref=e170]: €18,99
                - button "+ Ajouter" [ref=e173] [cursor=pointer]:
                  - generic [ref=e174]: + Ajouter
            - generic [ref=e175]:
              - img "Perifit Pearls | Billes d'exercices pour le périnée" [ref=e176]
              - generic [ref=e177]:
                - generic [ref=e178]:
                  - link "Perifit Pearls | Billes d'exercices pour le périnée" [ref=e179] [cursor=pointer]:
                    - /url: /products/perifit-kegel-weights?pr_prod_strat=pinned&pr_rec_id=b870813d7&pr_rec_pid=9493797568842&pr_ref_pid=8672911982922&pr_seq=uniform
                  - paragraph [ref=e180]: €29,99
                - button "+ Ajouter" [ref=e183] [cursor=pointer]:
                  - generic [ref=e184]: + Ajouter
            - generic [ref=e185]:
              - img "Culotte menstruelle" [ref=e186]
              - generic [ref=e187]:
                - generic [ref=e188]:
                  - link "Culotte menstruelle" [ref=e189] [cursor=pointer]:
                    - /url: /products/perifit-period-panties?pr_prod_strat=pinned&pr_rec_id=b870813d7&pr_rec_pid=9491790561610&pr_ref_pid=8672911982922&pr_seq=uniform
                  - paragraph [ref=e190]: €19,99
                - button "+ Ajouter" [ref=e192] [cursor=pointer]:
                  - generic [ref=e193]: + Ajouter
            - generic [ref=e194]:
              - img "Coupe menstruelle" [ref=e195]
              - generic [ref=e196]:
                - generic [ref=e197]:
                  - link "Coupe menstruelle" [ref=e198] [cursor=pointer]:
                    - /url: /products/perifit-menstrual-cup?pr_prod_strat=pinned&pr_rec_id=b870813d7&pr_rec_pid=9493791670602&pr_ref_pid=8672911982922&pr_seq=uniform
                  - paragraph [ref=e199]: €18,99
                - button "+ Ajouter" [ref=e201] [cursor=pointer]:
                  - generic [ref=e202]: + Ajouter
    - generic [ref=e205]:
      - generic [ref=e209]:
        - paragraph [ref=e210]: Simple comme un jeu d'enfant
        - paragraph [ref=e211]:
          - text: 💡 Insérez la sonde périnéale Perifit
          - text: 🎮 Jouez à des jeux avec votre périnée
          - text: ✅ Détectez les mauvaises contractions
          - text: 💪 Renforcez rapidement votre périnée
          - text: 🥳 Améliorez le tonus de votre périnée
        - link "Voir comment ça marche" [ref=e212] [cursor=pointer]:
          - /url: /pages/perifit-care-app
      - generic [ref=e216]:
        - paragraph [ref=e219]: Protègez votre périnée tout en renforçant votre corps
        - paragraph [ref=e220]: Pour obtenir des résultats plus durables, Perifit Care+ offre en exclusivité des activités permettant de renforcer vos muscles abdominaux et fessiers tout en protégeant votre périnée.
        - link "Voir l'efficacité prouvée" [ref=e221] [cursor=pointer]:
          - /url: /pages/perifit-care-effectiveness
    - generic [ref=e224]:
      - heading "Choisissez la solution qui vous correspond le mieux" [level=2] [ref=e227]
      - generic [ref=e229]:
        - generic [ref=e230]:
          - generic [ref=e231]:
            - generic [ref=e232]:
              - link "#couleur_vert" [ref=e233] [cursor=pointer]:
                - /url: /products/kegel-exerciser-with-app
                - img "#couleur_vert" [ref=e234]
              - generic [ref=e235]:
                - generic [ref=e237]:
                  - link "Perifit Care | Sonde de renforcement vaginale" [ref=e238] [cursor=pointer]:
                    - /url: /products/kegel-exerciser-with-app
                  - generic [ref=e240]:
                    - generic [ref=e241]: Prix de vente
                    - text: €139,00
                - link "Voir" [ref=e243] [cursor=pointer]:
                  - /url: /products/kegel-exerciser-with-app
            - generic [ref=e244]:
              - generic [ref=e245]: Page actuelle
              - link "Perifit Care+ | Sonde périnéale nouvelle génération" [ref=e246] [cursor=pointer]:
                - /url: /products/new-kegel-exerciser-with-app-perifit-plus
                - img "Perifit Care+ | Sonde périnéale nouvelle génération" [ref=e247]
              - generic [ref=e248]:
                - generic [ref=e250]:
                  - link "Perifit Care+ | Sonde périnéale nouvelle génération" [ref=e251] [cursor=pointer]:
                    - /url: /products/new-kegel-exerciser-with-app-perifit-plus
                  - generic [ref=e253]:
                    - generic [ref=e254]: Prix de vente
                    - text: €159,00
                - link "Voir" [ref=e256] [cursor=pointer]:
                  - /url: /products/new-kegel-exerciser-with-app-perifit-plus
          - generic [ref=e257]:
            - generic [ref=e258]: En résumé
            - paragraph [ref=e260]: La sonde périnéale la plus vendue au monde
            - paragraph [ref=e262]: Nouvelle sonde encore plus confortable et efficace
          - generic [ref=e263]:
            - generic [ref=e264]: Rééducation périnéale complète
            - paragraph [ref=e266]: ✅
            - paragraph [ref=e268]: ✅
          - generic [ref=e269]:
            - generic [ref=e270]: Petite taille pour plus de confort
            - paragraph [ref=e272]: ❌
            - paragraph [ref=e274]: ✅
          - generic [ref=e275]:
            - generic [ref=e276]: Design flexible pour s'adapter à toutes les anatomies
            - paragraph [ref=e278]: ❌
            - paragraph [ref=e280]: ✅
          - generic [ref=e281]:
            - generic [ref=e282]: Détection de position pour un suivi plus précis
            - paragraph [ref=e284]: ❌
            - paragraph [ref=e286]: ✅
        - button "Voir plus de caractéristiques" [ref=e288] [cursor=pointer]:
          - generic [ref=e289]: Voir plus de caractéristiques
    - generic [ref=e295]:
      - button "En savoir plus" [ref=e297] [cursor=pointer]:
        - generic [ref=e298]: En savoir plus
      - button "En savoir plus" [ref=e300] [cursor=pointer]:
        - generic [ref=e301]: En savoir plus
      - button "En savoir plus" [ref=e303] [cursor=pointer]:
        - generic [ref=e304]: En savoir plus
      - button "En savoir plus" [ref=e306] [cursor=pointer]:
        - generic [ref=e307]: En savoir plus
      - button "En savoir plus" [ref=e309] [cursor=pointer]:
        - generic [ref=e310]: En savoir plus
    - region [ref=e315]:
      - group "Elément 1 de 2" [ref=e316]:
        - generic [ref=e322]:
          - paragraph [ref=e323]: Éliminez l'incertitude
          - paragraph [ref=e324]: Il n'est plus nécessaire de jouer aux devinettes. Le biofeedback en temps réel de Perifit vous indique quand et à quelle intensité vous contractez les muscles de votre plancher pelvien pour rendre votre rééducation périnéale plus simple et efficace.
      - group "Elément 2 de 2" [ref=e325]:
        - generic [ref=e330]:
          - paragraph [ref=e331]: Protégez votre périnée
          - paragraph [ref=e332]:
            - text: Sans biofeedback,
            - link "une femme sur quatre effectue des contractions potentiellement nocives" [ref=e333] [cursor=pointer]:
              - /url: https://pubmed.ncbi.nlm.nih.gov/25349943/
            - text: . Le double capteur de Perifit Care détecte les mauvaises contractions et protège votre périnée en vous aidant à perfectionner votre technique.
    - generic [ref=e337]:
      - generic [ref=e338]: 100 jours d'essai
      - generic [ref=e339]: 100 jours d'essai
      - generic [ref=e340]: 100 jours d'essai
      - generic [ref=e341]: 100 jours d'essai
      - generic [ref=e342]: 100 jours d'essai
      - generic [ref=e343]: 100 jours d'essai
      - generic [ref=e344]: 100 jours d'essai
      - generic [ref=e345]: 100 jours d'essai
      - generic [ref=e346]: 100 jours d'essai
      - generic [ref=e347]: 100 jours d'essai
    - generic [ref=e353]:
      - generic [ref=e354]:
        - heading "Avis Clients" [level=2] [ref=e355]
        - generic [ref=e356]:
          - generic [ref=e358]:
            - img "Average rating is 4.79 stars" [ref=e359]:
              - generic [ref=e360]: 
              - generic [ref=e361]: 
              - generic [ref=e362]: 
              - generic [ref=e363]: 
              - generic [ref=e364]: 
              - text: 4.79 sur 5
            - generic [ref=e365]: Basé sur 1116 avis
          - generic [ref=e366]:
            - generic [ref=e367] [cursor=pointer]:
              - button "81% (905) reviews with 5 star rating" [ref=e368]:
                - generic [ref=e369]: 
                - generic [ref=e370]: 
                - generic [ref=e371]: 
                - generic [ref=e372]: 
                - generic [ref=e373]: 
              - generic [ref=e376]: "905"
            - generic [ref=e377] [cursor=pointer]:
              - button "17% (188) reviews with 4 star rating" [ref=e378]:
                - generic [ref=e379]: 
                - generic [ref=e380]: 
                - generic [ref=e381]: 
                - generic [ref=e382]: 
                - generic [ref=e383]: 
              - generic [ref=e386]: "188"
            - generic [ref=e387] [cursor=pointer]:
              - button "2% (19) reviews with 3 star rating" [ref=e388]:
                - generic [ref=e389]: 
                - generic [ref=e390]: 
                - generic [ref=e391]: 
                - generic [ref=e392]: 
                - generic [ref=e393]: 
              - generic [ref=e396]: "19"
            - generic [ref=e397] [cursor=pointer]:
              - button "0% (4) reviews with 2 star rating" [ref=e398]:
                - generic [ref=e399]: 
                - generic [ref=e400]: 
                - generic [ref=e401]: 
                - generic [ref=e402]: 
                - generic [ref=e403]: 
              - generic [ref=e405]: "4"
            - generic:
              - button "0% (0) reviews with 1 star rating":
                - generic: 
                - generic: 
                - generic: 
                - generic: 
                - generic: 
              - generic: "0"
        - generic [ref=e408]:
          - textbox "Rechercher parmi les avis" [ref=e409]
          - text: 
      - generic [ref=e412] [cursor=pointer]:
        - generic [ref=e413]: Sort by
        - combobox "Sort by " [ref=e414]:
          - option "Plus récents" [selected]
          - option "Meilleures notes"
          - option "Notes les plus basses"
          - option "Uniquement les photos"
          - option "Photos en premier"
          - option "Vidéos en premier"
          - option "Plus utiles"
        - generic [ref=e415]: 
      - generic [ref=e416]:
        - generic [ref=e417]:
          - generic [ref=e418]:
            - generic [ref=e419]:
              - generic [ref=e420]:  
              - generic [ref=e421]:
                - text: Sandra Zabar
                - generic [ref=e423]: Vérifié
            - generic [ref=e425]:
              - generic [ref=e426]:
                - img "4 star review" [ref=e427]:
                  - generic [ref=e428]: 
                  - generic [ref=e429]: 
                  - generic [ref=e430]: 
                  - generic [ref=e431]: 
                  - generic [ref=e432]: 
                - time [ref=e433]: 26/07/2026
              - generic [ref=e434]: Incroyable
              - paragraph [ref=e436]:
                - text: J'en suis très satisfaite en 3 semaines j’ai vu un changement incroyable
                - text: Les jeux sont sympa mais il y a des jours où j’ai encore du mal et des jeux un peu difficile
                - text: Mais je pense qu’il me faut encore travailler mon périnée et dans quelques semaines je mettrais un 5 étoiles mais cela ne m'empêche pas d'en dire du bien ou de le recommander
          - generic [ref=e437]:
            - generic [ref=e438]:
              - generic [ref=e439]:  
              - generic [ref=e440]:
                - text: Gala Ins
                - generic [ref=e442]: Vérifié
            - generic [ref=e444]:
              - generic [ref=e445]:
                - img "5 star review" [ref=e446]:
                  - generic [ref=e447]: 
                  - generic [ref=e448]: 
                  - generic [ref=e449]: 
                  - generic [ref=e450]: 
                  - generic [ref=e451]: 
                - time [ref=e452]: 26/07/2026
              - generic [ref=e453]: Excellent
              - paragraph [ref=e455]: Ludique, pratique, parfait
          - generic [ref=e456]:
            - generic [ref=e457]:
              - generic [ref=e458]:  
              - generic [ref=e459]:
                - text: Gloria
                - generic [ref=e461]: Vérifié
            - generic [ref=e463]:
              - generic [ref=e464]:
                - img "5 star review" [ref=e465]:
                  - generic [ref=e466]: 
                  - generic [ref=e467]: 
                  - generic [ref=e468]: 
                  - generic [ref=e469]: 
                  - generic [ref=e470]: 
                - time [ref=e471]: 20/07/2026
              - generic [ref=e472]: Tres sensible et facile à utiliser
              - paragraph [ref=e474]: Facile à utiliser, ludique, juste j' aimerai des exercises qui incluent la tonicité du transverse.
          - generic [ref=e475]:
            - generic [ref=e476]:
              - generic [ref=e477]:  
              - generic [ref=e478]:
                - text: Elisabeth Guillemenet
                - generic [ref=e480]: Vérifié
            - generic [ref=e482]:
              - generic [ref=e483]:
                - img "5 star review" [ref=e484]:
                  - generic [ref=e485]: 
                  - generic [ref=e486]: 
                  - generic [ref=e487]: 
                  - generic [ref=e488]: 
                  - generic [ref=e489]: 
                - time [ref=e490]: 16/07/2026
              - generic [ref=e491]: Parfait
              - paragraph [ref=e493]: Parfait
          - generic [ref=e494]:
            - generic [ref=e495]:
              - generic [ref=e496]:  
              - generic [ref=e497]:
                - text: Nadege Speybroeck
                - generic [ref=e499]: Vérifié
            - generic [ref=e501]:
              - generic [ref=e502]:
                - img "5 star review" [ref=e503]:
                  - generic [ref=e504]: 
                  - generic [ref=e505]: 
                  - generic [ref=e506]: 
                  - generic [ref=e507]: 
                  - generic [ref=e508]: 
                - time [ref=e509]: 15/07/2026
              - paragraph [ref=e511]: A
          - generic [ref=e512]:
            - generic [ref=e513]:
              - generic [ref=e514]:  
              - generic [ref=e515]:
                - text: Bénédicte Derieux
                - generic [ref=e517]: Vérifié
            - generic [ref=e519]:
              - generic [ref=e520]:
                - img "5 star review" [ref=e521]:
                  - generic [ref=e522]: 
                  - generic [ref=e523]: 
                  - generic [ref=e524]: 
                  - generic [ref=e525]: 
                  - generic [ref=e526]: 
                - time [ref=e527]: 03/07/2026
              - generic [ref=e528]: Efficace sur fuites urinaires
              - paragraph [ref=e530]:
                - text: Très ludique. Juste une remarque pour avoir longuement travaillé avec une kiné du périnée qui fait pas mal d'interventions dans les colloques. Elle m'avait toujours recommandé de contracter de manière précise et pas tout l'ensemble. Je trouve qu'avec ces jeux il faut être très vigilants sur ce point. Pour avoir des scores on a tendance à tout contracter ce qui n'est pas juste.
                - text: "D'autre part il y a plusieurs types de contractions: profondes, sur la partie basse ou haute, à l'entrée du vagin."
                - text: ...
                - button "Lire plus" [ref=e531] [cursor=pointer]
          - generic [ref=e532]:
            - generic [ref=e533]:
              - generic [ref=e534]:  
              - generic [ref=e535]:
                - text: Cecile Marty
                - generic [ref=e537]: Vérifié
            - generic [ref=e539]:
              - generic [ref=e540]:
                - img "4 star review" [ref=e541]:
                  - generic [ref=e542]: 
                  - generic [ref=e543]: 
                  - generic [ref=e544]: 
                  - generic [ref=e545]: 
                  - generic [ref=e546]: 
                - time [ref=e547]: 03/07/2026
              - generic [ref=e548]: Experience
              - paragraph [ref=e550]:
                - text: Ludique
                - text: Très facile d’utilisation
                - text: Certains exercices plus faciles que d’autres
                - text: Déjà de l’amélioration
          - generic [ref=e551]:
            - generic [ref=e552]:
              - generic [ref=e553]:  
              - generic [ref=e554]:
                - text: Anonyme
                - generic [ref=e556]: Vérifié
            - generic [ref=e558]:
              - generic [ref=e559]:
                - img "5 star review" [ref=e560]:
                  - generic [ref=e561]: 
                  - generic [ref=e562]: 
                  - generic [ref=e563]: 
                  - generic [ref=e564]: 
                  - generic [ref=e565]: 
                - time [ref=e566]: 02/07/2026
              - generic [ref=e567]: Satisfaite
              - paragraph [ref=e569]: Je suis ravie de l'appareil, facile d'utilisation, ludique. Les séances sont variées et agréables. Dès 15 jours, j'ai perçus des résultats. Je recommande
          - generic [ref=e570]:
            - generic [ref=e571]:
              - generic [ref=e572]:  
              - generic [ref=e573]:
                - text: Béatrice BELVAL
                - generic [ref=e575]: Vérifié
            - generic [ref=e577]:
              - generic [ref=e578]:
                - img "5 star review" [ref=e579]:
                  - generic [ref=e580]: 
                  - generic [ref=e581]: 
                  - generic [ref=e582]: 
                  - generic [ref=e583]: 
                  - generic [ref=e584]: 
                - time [ref=e585]: 01/07/2026
              - generic [ref=e586]: Utilisation facile
              - paragraph [ref=e588]: Je trouve l’appareil facile d’utilisation et en même temps , très ludique avec l’application.
          - generic [ref=e589]:
            - generic [ref=e590]:
              - generic [ref=e591]:  
              - generic [ref=e592]:
                - text: Déborah C
                - generic [ref=e594]: Vérifié
            - generic [ref=e596]:
              - generic [ref=e597]:
                - img "4 star review" [ref=e598]:
                  - generic [ref=e599]: 
                  - generic [ref=e600]: 
                  - generic [ref=e601]: 
                  - generic [ref=e602]: 
                  - generic [ref=e603]: 
                - time [ref=e604]: 01/07/2026
              - generic [ref=e605]: Rééducation
              - paragraph [ref=e607]: Très bon moyen pour faire une rééducation cependant les réglages sont parfois difficiles à faire et les mêmes exercices sont souvent proposés. Mais au top, je vois déjà des résultats.
        - button "Charger plus" [ref=e609] [cursor=pointer]
    - generic [ref=e612]:
      - heading "Questions Fréquentes" [level=2] [ref=e616]
      - generic [ref=e618]:
        - group [ref=e619]:
          - generic "Pourquoi utiliser la sonde périnéale Perifit Care ou Perifit Care+?" [ref=e620] [cursor=pointer]:
            - generic [ref=e622]: Pourquoi utiliser la sonde périnéale Perifit Care ou Perifit Care+?
        - group [ref=e625]:
          - generic "Comment choisir entre Perifit Care et Care+ ?" [ref=e626] [cursor=pointer]:
            - generic [ref=e628]: Comment choisir entre Perifit Care et Care+ ?
        - group [ref=e631]:
          - generic "Quelles sont les dimensions des sondes Perifit ?" [ref=e632] [cursor=pointer]:
            - generic [ref=e634]: Quelles sont les dimensions des sondes Perifit ?
        - group [ref=e637]:
          - generic "Puis-je télécharger et utiliser l'application Perifit gratuitement?" [ref=e638] [cursor=pointer]:
            - generic [ref=e640]: Puis-je télécharger et utiliser l'application Perifit gratuitement?
        - group [ref=e643]:
          - generic "Pendant combien de temps et à quelle fréquence utiliser Perifit ?" [ref=e644] [cursor=pointer]:
            - generic [ref=e646]: Pendant combien de temps et à quelle fréquence utiliser Perifit ?
        - group [ref=e649]:
          - generic "Est-ce que j'ai besoin de recharger mon appareil Perifit ?" [ref=e650] [cursor=pointer]:
            - generic [ref=e652]: Est-ce que j'ai besoin de recharger mon appareil Perifit ?
        - group [ref=e655]:
          - generic "Comment fonctionne l'offre des 100 jours d'essai ?" [ref=e656] [cursor=pointer]:
            - generic [ref=e658]: Comment fonctionne l'offre des 100 jours d'essai ?
        - group [ref=e661]:
          - generic "Quels sont les délais de livraison ?" [ref=e662] [cursor=pointer]:
            - generic [ref=e664]: Quels sont les délais de livraison ?
        - group [ref=e667]:
          - generic "Puis-je utiliser Perifit Care ou Perifit Care+ enceinte ?" [ref=e668] [cursor=pointer]:
            - generic [ref=e670]: Puis-je utiliser Perifit Care ou Perifit Care+ enceinte ?
        - group [ref=e673]:
          - generic "Les sondes Perifit sont-elles sans danger ?" [ref=e674] [cursor=pointer]:
            - generic [ref=e676]: Les sondes Perifit sont-elles sans danger ?
        - group [ref=e679]:
          - generic "Je ne suis pas rassurée par le Bluetooth, est-ce sans danger pour la santé?" [ref=e680] [cursor=pointer]:
            - generic [ref=e682]: Je ne suis pas rassurée par le Bluetooth, est-ce sans danger pour la santé?
      - link "Voir plus de questions" [ref=e687] [cursor=pointer]:
        - /url: /pages/faq-perifit
    - region [ref=e692]:
      - group "Elément 1 de 4" [ref=e693]:
        - generic [ref=e697]:
          - paragraph [ref=e698]: 10 000+ avis cinq étoiles
          - paragraph [ref=e699]:
            - text: Avis exceptionnels sur
            - link "Amazon" [ref=e700] [cursor=pointer]:
              - /url: https://www.amazon.fr/Perifit-R%C3%A9%C3%A9ducation-Dispositif-Application-Musculation/dp/B09KV6TQYJ?th=1
            - text: ","
            - link "AppStore" [ref=e701] [cursor=pointer]:
              - /url: https://apps.apple.com/us/app/perifit/id1183437203
            - text: ", et"
            - link "Google Play." [ref=e702] [cursor=pointer]:
              - /url: https://play.google.com/store/apps/details?id=starshipproduct.perifitmainapp&hl=en&gl=US
      - group "Elément 2 de 4" [ref=e703]:
        - generic [ref=e708]:
          - paragraph [ref=e709]: Retour simple et gratuit
          - paragraph [ref=e710]:
            - text: Le produit ne vous convient pas? Les retours sont
            - link "offerts." [ref=e711] [cursor=pointer]:
              - /url: /policies/refund-policy
      - group "Elément 3 de 4" [ref=e712]:
        - generic [ref=e718]:
          - paragraph [ref=e719]: Livraison rapide et gratuite
          - paragraph [ref=e720]:
            - link "Livraison gratuite" [ref=e721] [cursor=pointer]:
              - /url: /policies/shipping-policy
            - text: à partir de 35€ et possibilité de livraison express.
      - group "Elément 4 de 4" [ref=e722]:
        - generic [ref=e728]:
          - paragraph [ref=e729]: Service client d'exception
          - paragraph [ref=e730]:
            - text: Une
            - link "équipe d'experts" [ref=e731] [cursor=pointer]:
              - /url: mailto:support@perifit.co
            - text: dédiée à la réussite de votre expérience Perifit.
    - navigation "breadcrumbs" [ref=e733]:
      - list
    - generic [ref=e737]:
      - generic [ref=e738]:
        - generic [ref=e740]:
          - paragraph [ref=e741]: "Inscrivez-vous pour recevoir nos offres exclusives :"
          - generic [ref=e744]:
            - textbox "E-mail" [ref=e746]
            - button "S'inscrire" [ref=e747] [cursor=pointer]
        - generic [ref=e748]:
          - paragraph [ref=e749]: Contact
          - list [ref=e750]:
            - listitem [ref=e751]:
              - link "Questions fréquentes et contact" [ref=e752] [cursor=pointer]:
                - /url: /pages/faq-perifit
            - listitem [ref=e753]:
              - link "Nos points de vente" [ref=e754] [cursor=pointer]:
                - /url: https://fr.perifit.co/pages/resellers
            - listitem [ref=e755]:
              - link "Offres d'emploi" [ref=e756] [cursor=pointer]:
                - /url: https://www.welcometothejungle.com/fr/companies/perifit
            - listitem [ref=e757]:
              - link "Distribution" [ref=e758] [cursor=pointer]:
                - /url: mailto:sales@perifit.co
            - listitem [ref=e759]:
              - link "Professionnels de santé" [ref=e760] [cursor=pointer]:
                - /url: /pages/health-professionals
        - generic [ref=e761]:
          - paragraph [ref=e762]: Informations légales
          - list [ref=e763]:
            - listitem [ref=e764]:
              - link "Conditions générales de vente" [ref=e765] [cursor=pointer]:
                - /url: /policies/terms-of-sale
            - listitem [ref=e766]:
              - link "Politique de confidentialité" [ref=e767] [cursor=pointer]:
                - /url: /policies/privacy-policy
            - listitem [ref=e768]:
              - link "Politique des retours" [ref=e769] [cursor=pointer]:
                - /url: /policies/refund-policy
            - listitem [ref=e770]:
              - link "Politique de livraison" [ref=e771] [cursor=pointer]:
                - /url: /policies/shipping-policy
            - listitem [ref=e772]:
              - link "Mentions Légales" [ref=e773] [cursor=pointer]:
                - /url: /policies/legal-notice
            - listitem [ref=e774]:
              - link "Formulaire de retrait" [ref=e775] [cursor=pointer]:
                - /url: /pages/widerruf-formular
        - generic [ref=e776]:
          - paragraph [ref=e777]: Nos conseils
          - list:
            - listitem [ref=e778]:
              - link "Blog" [ref=e779] [cursor=pointer]:
                - /url: https://fr.perifit.co/pages/blog
            - listitem [ref=e780]:
              - link "Qu'est-ce que le périnée ?" [ref=e781] [cursor=pointer]:
                - /url: https://fr.perifit.co/blogs/perinee/le-perinee-c-est-quoi
            - listitem [ref=e782]:
              - link "Comment renforcer son périnée ?" [ref=e783] [cursor=pointer]:
                - /url: /blogs/perinee/exercice-du-perinee
            - listitem [ref=e784]:
              - link "Les exercices de Kegel pour femmes" [ref=e785] [cursor=pointer]:
                - /url: https://fr.perifit.co/blogs/perinee/exercices-de-kegel-notre-guide-pratique
            - listitem [ref=e786]:
              - link "Calendrier mictionnel à imprimer" [ref=e787] [cursor=pointer]:
                - /url: /blogs/incontinence-urinaire/calendrier-mictionnel
            - listitem [ref=e788]:
              - link "Conseils pratiques pour tirer son lait" [ref=e789] [cursor=pointer]:
                - /url: https://fr.perifit.co/blogs/allaitement/tirer-son-lait
            - listitem [ref=e790]:
              - link "Power pumping" [ref=e791] [cursor=pointer]:
                - /url: https://fr.perifit.co/blogs/allaitement/power-pumping
      - generic [ref=e792]:
        - list [ref=e794]:
          - listitem [ref=e795]:
            - link "Nous suivre sur Facebook" [ref=e796] [cursor=pointer]:
              - /url: https://www.facebook.com/monperifit/
          - listitem [ref=e798]:
            - link "Nous suivre sur Instagram" [ref=e799] [cursor=pointer]:
              - /url: https://www.instagram.com/perifit.co/?hl=en
          - listitem [ref=e801]:
            - link "Nous suivre sur TikTok" [ref=e802] [cursor=pointer]:
              - /url: https://www.tiktok.com/@perifit.co
          - listitem [ref=e804]:
            - link "Nous suivre sur LinkedIn" [ref=e805] [cursor=pointer]:
              - /url: https://www.linkedin.com/company/perifit/?originalSubdomain=fr
        - paragraph [ref=e808]: © 2026, Perifit tout droit réservé.
  - iframe [ref=e809]:
    
  - iframe [ref=e810]:
    
```

# Test source

```ts
  1  | import { Page } from "@playwright/test";
  2  | 
  3  | export const allowAllCookies = async (page: Page) => {
  4  |     const popupLocator = page.locator("//button[contains(text(), 'Allow all')]");
  5  |     await page.addLocatorHandler(popupLocator, async () => {
  6  |         await popupLocator.click();
  7  |     })
  8  | }
  9  | 
  10 | export const closeNewsletterPopup = async (page: Page) => {
  11 |     await page.addLocatorHandler(
  12 |         page.locator('//div[@class="Avada-ContinueShoppingText"]'),
  13 |         async (locator) => {
  14 |             await locator.click();
  15 |         }
  16 |     );
  17 | }
  18 | 
  19 | export const closeWheel = async (page: Page) => {
  20 |     const closeButton = page.locator("//*[contains(@class, 'om-popup-close-x')]").first();
  21 |     await page.addLocatorHandler(closeButton, async () => {
  22 |         console.log("wating for om popup show");
  23 |         await page.waitForTimeout(2_000);
  24 |         const closeButtons = await page.locator("//*[contains(@class, 'om-popup-close-x')]").all();
  25 |         for (const button of closeButtons) {
> 26 |             await button.click();
     |                          ^ Error: locator.click: Test timeout of 120000ms exceeded.
  27 |         }
  28 |     });
  29 | 
  30 |     // try {
  31 |     //     const popupLocator = page.locator("//div[contains(@class, 'om-wheel-position')]").first();
  32 | 
  33 |     //     // Check if popup is visible - with 3s timeout
  34 |     //     const isVisible = await popupLocator.isVisible({ timeout: 3000 }).catch(() => false);
  35 | 
  36 |     //     if (isVisible) {
  37 |     //         console.log('🎡 Found wheel popup - closing...');
  38 |     //         await page.waitForTimeout(500); // SHORT wait instead of 1500ms
  39 | 
  40 |     //         const closeMessages = ["Non, merci !", "No, thanks!"];
  41 |     //         const closeButtonXPath = closeMessages.map((message) => `contains(text(), '${message}')`);
  42 |     //         const closeMsg = await page.locator(`//span[${closeButtonXPath.join(' or ')}]`).all();
  43 | 
  44 |     //         for (const button of closeMsg) {
  45 |     //             if (await button.isVisible({ timeout: 2000 }).catch(() => false)) {
  46 |     //                 await button.click({ timeout: 3000 });
  47 |     //                 console.log('✅ Wheel popup closed');
  48 |     //                 return;
  49 |     //             }
  50 |     //         }
  51 | 
  52 |     //         const closeButtons = await page.locator("//div[contains(@class, 'om-popup-close')]").all();
  53 |     //         for (const button of closeButtons) {
  54 |     //             if (await button.isVisible({ timeout: 2000 }).catch(() => false)) {
  55 |     //                 await button.click({ timeout: 3000 });
  56 |     //                 console.log('✅ Wheel popup closed');
  57 |     //                 return;
  58 |     //             }
  59 |     //         }
  60 |     //     } else {
  61 |     //         console.log('ℹ️ Wheel popup not found - skipping');
  62 |     //     }
  63 |     // } catch (error) {
  64 |     //     console.warn('⚠️ Error closing wheel popup (OK to skip):', error);
  65 |     //     // Silent fail - don't crash test
  66 |     // }
  67 | 
  68 | }
  69 | 
  70 | export const handlePopupDiscount = async (page: Page) => {
  71 |     const popupLocator = page.locator("//div[@id='pge_c9Q0tcaMTu']/div[@class='om-global-close-button om-popup-close om-popup-close-v2']").first();
  72 |     await page.addLocatorHandler(popupLocator, async () => {
  73 |         await page.waitForTimeout(1500); // wait for popup stable
  74 |         await popupLocator.click();
  75 |     });
  76 | }
  77 | 
  78 | export const authorizedShoppayPopup = async (page: Page) => {
  79 |     try {
  80 |         const popupLocator = page.locator("//section[@data-testid='authorize-modal']");
  81 | 
  82 |         // Check if popup exists - with 5s timeout
  83 |         const isVisible = await popupLocator.isVisible({ timeout: 5000 }).catch(() => false);
  84 | 
  85 |         if (isVisible) {
  86 |             console.log('🔐 Found Shoppay authorization popup - closing...');
  87 |             const closeButton = page.locator("//button[@data-testid='authorize-modal-close-button']");
  88 |             await closeButton.click({ timeout: 5000 });
  89 |             console.log('✅ Shoppay popup closed');
  90 |         } else {
  91 |             console.log('ℹ️ Shoppay popup not found - skipping');
  92 |         }
  93 |     } catch (error) {
  94 |         console.warn('⚠️ Error closing Shoppay popup (OK to skip):', error);
  95 |         // Silent fail - don't crash test
  96 |     }
  97 | }
```