'Vue not updating DOM with vee-validate errors while testing

I am trying to test whether validations error show up. They do show up in the browser. However, my tests are failing. This is my code:

import {shallowMount, createLocalVue} from '@vue/test-utils'
import SignUpUser from '@/components/SignForms/SignUpUser.vue'
import VueRouter from 'vue-router'
import VeeValidate from 'vee-validate'
import flushPromises from 'flush-promises';

const localVue = createLocalVue()
localVue.use(VueRouter)
localVue.use(VeeValidate)
const router = new VueRouter()

test('displays error message when validations fail', async () => {
  const wrapper = shallowMount(SignUpUser, {
    localVue,
    router,
  })

  wrapper.find('#username').setValue('');
  const text = wrapper.findComponent('#username-error')

  await flushPromises();
    expect(text.textContent).toBeTruthy()

})

I think that Vue is not updating the DOM with the error messages and I don't understand why.

The component looks like this:

            <input
              id="username"
              v-model="username"
              v-validate="'required|alpha_dash'"
              name="username"
              type="text"
              placeholder="Eg: harinepali123"
            >
            <p class="form_error" id='username-error'>
              {{ errors.first("username") }}
            </p>


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source