Description
Version
19.3.0
Platform
Darwin MacBook-Pro-2.local 22.3.0 Darwin Kernel Version 22.3.0: Thu Jan 5 20:53:49 PST 2023; root:xnu-8792.81.2~2/RELEASE_X86_64 x86_64
Subsystem
test_runner
What steps will reproduce the bug?
Given a set of tests like this
describe("my suite 1", () => {
it("works", async () => {
// don't run me
});
describe("my suite 2", () => {
it("works", async () => {
// run me!
});
})
});
... it is impossible to command line filter (--test-name-filter
) to run only the "works" test in my suite 2
.
Being able to be precise about tests to run is important when working on an editor integration. If a user asks to "run this test", then only that test should run. This is especially relevant in the use case of integration tests, where running tests may have side effects.
How often does it reproduce? Is there a required condition?
100%
What is the expected behavior?
I should be able to run my suite 2 > works
by itself. In every test runner I've worked with (jest, mocha, or vitest for example) names are generated for glob purposes by space-delimiting nested tests. So I expected to be able to pass --test-name-pattern="^my suite 1 my suite 2 works$"
to run only that test.
(This does mean that identically named tests in the same context cannot be differentiated. But this is a common problem across test runners that also affects result output, and I already have code that emits a diagnostic warning ('yellow squiggle') if the user does this.)
What do you see instead?
I must pass --test-name-pattern="^my suite 1$" --test-name-pattern="^my suite 2$" --test-name-pattern="^works$"
, which runs the undesired test.
Additional information
Apologies for the late followup on #42984. I didn't get a chance to work on the vscode integration for this for a few months, and only noticed this issue later.