> **vue-testing-best-practices** — skill 16 of 19 in [antfu/skills](https://skillsdocs.com/antfu/skills).
>
> Book (all skills, one file): https://skillsdocs.com/antfu/skills.md
> Machine manifest: https://skillsdocs.com/antfu/skills/.well-known/agent-skills/index.json
> Install the book: `npx skills add antfu/skills`
> Upstream: https://github.com/antfu/skills/blob/main/skills/vue-testing-best-practices/SKILL.md @ `main`
> Raw bytes, no header: https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/SKILL.md
> Base for relative paths: https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/
> Licence: MIT — https://spdx.org/licenses/MIT.html
>
> Bundled files (13), referenced from this skill's directory:
>   - `LICENSE.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/LICENSE.md
>   - `reference/async-component-testing.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/async-component-testing.md
>   - `reference/teleport-testing-complexity.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md
>   - `reference/testing-async-await-flushpromises.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md
>   - `reference/testing-browser-vs-node-runners.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md
>   - `reference/testing-component-blackbox-approach.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md
>   - `reference/testing-composables-helper-wrapper.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md
>   - `reference/testing-e2e-playwright-recommended.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md
>   - `reference/testing-no-snapshot-only.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md
>   - `reference/testing-pinia-store-setup.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md
>   - `reference/testing-suspense-async-components.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md
>   - `reference/testing-vitest-recommended-for-vue.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md
>   - `SYNC.md` — https://raw.githubusercontent.com/antfu/skills/main/skills/vue-testing-best-practices/SYNC.md
>
> Content © its authors, served unmodified. Takedown: https://github.com/DreambaseAI/skillsdocs/issues/new?labels=takedown&title=Takedown+request

<!-- Verbatim upstream SKILL.md follows, YAML frontmatter included. -->

---
name: vue-testing-best-practices
version: 1.0.0
license: MIT
author: github.com/vuejs-ai
description: Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.
---

Vue.js testing best practices, patterns, and common gotchas.

### Testing
- Setting up test infrastructure for Vue 3 projects → See [testing-vitest-recommended-for-vue](reference/testing-vitest-recommended-for-vue.md)
- Tests keep breaking when refactoring component internals → See [testing-component-blackbox-approach](reference/testing-component-blackbox-approach.md)
- Tests fail intermittently with race conditions → See [testing-async-await-flushpromises](reference/testing-async-await-flushpromises.md)
- Composables using lifecycle hooks or inject fail to test → See [testing-composables-helper-wrapper](reference/testing-composables-helper-wrapper.md)
- Getting "injection Symbol(pinia) not found" errors in tests → See [testing-pinia-store-setup](reference/testing-pinia-store-setup.md)
- Components with async setup won't render in tests → See [testing-suspense-async-components](reference/testing-suspense-async-components.md)
- Snapshot tests keep passing despite broken functionality → See [testing-no-snapshot-only](reference/testing-no-snapshot-only.md)
- Choosing end-to-end testing framework for Vue apps → See [testing-e2e-playwright-recommended](reference/testing-e2e-playwright-recommended.md)
- Tests need to verify computed styles or real DOM events → See [testing-browser-vs-node-runners](reference/testing-browser-vs-node-runners.md)
- Testing components created with defineAsyncComponent fails → See [async-component-testing](reference/async-component-testing.md)
- Teleported modal content can't be found in wrapper queries → See [teleport-testing-complexity](reference/teleport-testing-complexity.md)

## Reference

- [Vue.js Testing Guide](https://vuejs.org/guide/scaling-up/testing)
- [Vue Test Utils](https://test-utils.vuejs.org/)
- [Vitest Documentation](https://vitest.dev/)
- [Playwright Documentation](https://playwright.dev/)
