La question est aussi simple que cela. Dans Cypress, comment puis-je accéder à une nouvelle fenêtre qui s'ouvre lors de l'exécution du test.
Étapes pour recréer:
- Exécutez le test. Après une action, une nouvelle fenêtre apparaît (l'url est de nature dynamique).
- Remplissez les champs de la nouvelle fenêtre et cliquez sur quelques boutons.
- Une fois les actions requises terminées dans la nouvelle fenêtre, fermez la nouvelle fenêtre et revenez à la fenêtre principale.
- Continuez l'exécution avec la fenêtre principale.
Point d'intérêt: l'accent doit être mis sur
main window -> new window -> main window
J'ai lu peu de choses concernant l'utilisation de iframe
et confirmation box
, mais ici ce n'est rien de tout cela. Concerne l'accès à une toute nouvelle fenêtre. Quelque chose comme Window Handlers
en sélénium. Malheureusement, je n'ai rien trouvé de similaire.
L'accès à de nouvelles fenêtres via Cypress n'est pas possible dans sa version actuelle.
Cependant, il existe de nombreuses façons de tester cette fonctionnalité dans Cypress maintenant. Vous pouvez diviser vos tests en plusieurs parties et être sûr que votre application est couverte.
- Écrivez un test pour vérifier que lors de l'exécution de l'action dans votre application, l'événement
window.open
Est appelé en utilisantcy.spy()
pour écouter unwindow.open
un événement.
cy.visit('http://localhost:3000', {
onBeforeLoad(win) {
cy.stub(win, 'open')
})
}
// Do the action in your app like cy.get('.open-window-btn').click()
cy.window().its('open').should('be.called')
- Dans un nouveau test, utilisez
cy.visit()
pour accéder à l'URL qui se serait ouverte dans la nouvelle fenêtre, remplissez les champs et cliquez sur les boutons comme vous le feriez dans un test Cypress.
cy.visit('http://localhost:3000/new-window')
// Do the actions you want to test in the new window
Un exemple de test pleinement fonctionnel peut être trouvé ici .