Tests With Special Characters In Test Name Don't Rerun Individually In Vitest UI
Introduction
Vitest is a popular testing framework for JavaScript applications, known for its speed, flexibility, and ease of use. However, like any other complex software, it's not immune to bugs and issues. In this article, we'll explore a specific problem that has been reported by users: tests with special characters in their names cannot be rerun individually in the Vitest UI.
Describe the Bug
When using the Vitest UI, tests that have special characters like parentheses, brackets, or similar in their test name cannot be rerun individually by clicking the "Run" button. Instead, only the "Rerun All" button at the top works. This is because the test name pattern is not properly escaped, leading to an error message that indicates no test files were found.
Error Message
The error message that appears when trying to rerun a test with special characters in its name is as follows:
RERUN rerun test
Test name pattern: /Square root of nine (9)/
No test files found. You can change the file name pattern by pressing "p"
include: **/*.{test,spec}.?(c|m)[jt]s?(x)
exclude: **/node_modules/**, **/dist/**, **/cypress/**, **/.{idea,git,cache,output,temp}/**, **/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*
Reproduction
To reproduce this issue, you can use the following StackBlitz example:
https://stackblitz.com/edit/vitest-dev-vitest-8b9barmz?file=test%2Fbasic.test.ts
System Info
The system information for this issue is as follows:
System:
OS: Linux 6.11 Ubuntu 24.04.2 LTS 24.04.2 LTS (Noble Numbat)
Binaries:
Node: 23.6.1
npm: 10.9.2
Browsers:
Brave Browser: 134.1.76.73
npmPackages:
@vitejs/plugin-react-swc: ^3.8.0 => 3.8.0
@vitest/browser: ^3.0.8 => 3.0.8
playwright: ^1.51.0 => 1.51.0
vite: ^6.2.0 => 6.2.1
vitest: ^3.0.8 => 3.0.8
vitest-browser-react: ^0.1.1 => 0.1.1
Used Package Manager
The package manager used for this issue is npm.
Validations
To ensure that this issue is properly reported, we've followed the necessary validations:
- [x] Follow our Code of Conduct
- [x] Read the Contributing Guidelines.
- [x] Read the docs.
- [x] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- [x] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
- [x] The provided reproduction is a minimal reproducible example of the bug.
Solution
The solution to this issue is to escape the test name pattern using the following code:
testNamePattern.replace(/[$^+?()[\]]/g, '\\{{content}}amp;')
This will properly escape the special characters in the test name pattern, allowing tests with special characters in their names to be rerun individually in the Vitest UI.
Conclusion
Introduction
In our previous article, we explored a specific problem that has been reported by users: tests with special characters in their names cannot be rerun individually in the Vitest UI. In this article, we'll answer some frequently asked questions related to this issue.
Q: What is the cause of this issue?
A: The cause of this issue is that the test name pattern is not properly escaped, leading to an error message that indicates no test files were found.
Q: How can I reproduce this issue?
A: To reproduce this issue, you can use the following StackBlitz example:
https://stackblitz.com/edit/vitest-dev-vitest-8b9barmz?file=test%2Fbasic.test.ts
Q: What system information is required to reproduce this issue?
A: The system information required to reproduce this issue is as follows:
System:
OS: Linux 6.11 Ubuntu 24.04.2 LTS 24.04.2 LTS (Noble Numbat)
Binaries:
Node: 23.6.1
npm: 10.9.2
Browsers:
Brave Browser: 134.1.76.73
npmPackages:
@vitejs/plugin-react-swc: ^3.8.0 => 3.8.0
@vitest/browser: ^3.0.8 => 3.0.8
playwright: ^1.51.0 => 1.51.0
vite: ^6.2.0 => 6.2.1
vitest: ^3.0.8 => 3.0.8
vitest-browser-react: ^0.1.1 => 0.1.1
Q: What package manager is required to reproduce this issue?
A: The package manager required to reproduce this issue is npm.
Q: How can I resolve this issue?
A: To resolve this issue, you can escape the test name pattern using the following code:
testNamePattern.replace(/[$^+?()[\]]/g, '\\{{content}}amp;')
Q: What are the necessary validations to report this issue?
A: To ensure that this issue is properly reported, you should follow the necessary validations:
- [x] Follow our Code of Conduct
- [x] Read the Contributing Guidelines.
- [x] Read the docs.
- [x] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- [x] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
- [x] The provided reproduction is a minimal reproducible example of the bug.
Q: What is the solution to this issue?
A: The solution to this issue is to escape the test name pattern using the provided code.
Conclusion
In conclusion, we've answered some frequently asked questions related to the issue of tests with special characters in their names not being able to be rerun individually in the Vitest UI. We hope that this article has provided a clear explanation of the issue and its solution, and that it will be helpful to users who encounter this problem.