I’m more than happy for avoriaz to be adopted and improved on for an official solution.
Shallow rendering is definitely the primary need.
Another pain point is that transitions are not supported in JSDOM, which is a popular way to test Vue components without a browser. This means
getTransitionInfo throws an error when it tries to split transition CSS properties - https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/transition-util.js#L113. Although this is JSDOM issue, it’s a fairly common problem for avoriaz users.
I was thinking about updating avoriaz to v2. The plan was to return a class of Wrappers from .find() instead of an array. This way it could default to using the first item for methods:
And could throw an improved error message if no element is found:
wrapper.find('div').is('div') // throws Uncaught TypeError: Cannot read property 'is' of undefined
wrapper.find('div').is('div') // throws Error, no div element was found
The downside would be having to implement a custom array-like structure. This is similar to what enzyme does.
I would also like to refactor the traversal implementation, and add the ability to use sibling selectors + and ~ in find. I was actually planning on doing that in the next fortnight.