vue-test-utils: Triggering mouseenter event on v-tooltip does not update the wrapper
Version
1.0.0-beta.31
Reproduction link
https://github.com/begueradj/test-vuetify-tooltip
Steps to reproduce
- In pages/index.vue:
<template>
<component-with-tooltip tooltipText="Some information" />
</template>
<script>
import ComponentWithTooltip from '@/components/ComponentWithTooltip.vue'
export default {
components: { ComponentWithTooltip }
}
</script>
- In components/ComponentWithTooltip.vue:
<template>
<v-container>
<v-row>
<v-col cols="12">
<v-tooltip bottom>
<template v-slot:activator="{ on }">
<v-icon v-on="on" color="grey">
help
</v-icon>
</template>
<span>
{{ tooltipText }}
</span>
</v-tooltip>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: 'ComponentWithTooltip',
props: {
tooltipText: {
type: String,
default: ''
}
}
}
</script>
- In test/components/ComponentWithTooltip.vue:
it('2. User interface provides one help icon with tooltip text', async () => {
const icons = wrapper.findAll('.v-icon')
expect(icons.length).toBe(1) // Ok
const helpIcon = icons.at(0)
expect(helpIcon.text()).toEqual('help') // Ok
helpIcon.trigger('mouseenter')
await wrapper.vm.$nextTick()
expect(wrapper.text()).toEqual('science') // why this fails ?
})
What is expected?
I expect when I trigger the mouseenter event in my test, the wrapper should be updated to show a new text which is the one I defined for the prop.
What is actually happening?
WHen I trigger the mouse event, the wrapper keeps its former state, meaning its only available text is related to the help icon text.
Thank you, Billal BEGUERADJ
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 16 (8 by maintainers)
I think I am missing something. This works for me (added
idandrequestAnimationFrame). Removingmousentermakes it fail, which seems correct. Is there any other problem?Ok, I figured the problem out. It’s because VTooltip uses
requestAnimationFrame.I got the test to pass:
Try that.
I don’t think is something we can easily fix in VTU.
No problem, glad you got it working
That’s not the case when I run it:
Anything other than
sciencefails (so it should).Or I misunderstood something - I can push a repo with my changes if you like.
Oh, you need
doneso Jest waits for the update:Note both
helpandsciencewill still be in the markup, from the looks of things (Vuetify does not seem to remove thetemplatefrom the markup, just hide it somehow. Add a selector to thespan:For example.
VTooltip [uses transitions(https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/components/VTooltip/VTooltip.ts).
Can you try:
and see if that works?