J'utilise Cypress dans mon projet Vue.js (Nuxt.js). Le principal problème que je n'arrive pas à gérer est de savoir comment comprendre que le magasin Vuex est prêt. Disons que j'ai un bouton qui peut appeler axios pour récupérer des données. Ensuite, les données arrivent dans le magasin par mutations et Vue les rendra dans un modèle. L'élément suivant avec lequel je veux interagir est vide avant que le magasin ne soit construit. Mais le cyprès essaie de le vérifier.
Comment appeler l'action cypress suivante (comme cy.get) après que le magasin ait été construit ?
Mon projet est plus compliqué. Mais le problème principal est que Cypress n'attend parfois pas la construction du magasin pour essayer de travailler plus loin. Pour la première fois, nous avons utilisé cy.wait(1000)
mais il semble que la décision ne soit pas si parfaite.
<div>
<button data-cy="fetchDataBtn" @click="fetchData">get items</button>
<ul>
<li v-for="item in items">
<p>{{ item.title }}</p>
<button
@click="fetchProduct(item.id)"
>
buy {{ item.name }}
</button>
</li>
</ul>
</div>
<script>
import { mapState } from 'vuex';
export default {
name: 'App',
computed: {
...mapState('list', ['items'])
}
}
</script>
Je m'attends au scénario suivant :
cy.get([‘data-cy=fetchDataBtn’]).click()
// wait for store is ready and list is already rendered
// (NOT cy.wait('GET', 'url_string') or cy.wait(milliseconds))
cy.contains(‘button’, 'buyItemName').click()