Repository navigation
v0.9.1
Patch Changes
-
#92
0001eea- Bun: a test whose function is passed by name, followed by a timeout or options, as in
test('reprices a basket', repricesBasket, 5_000), is read as a test. The scan took the timeout for the function and
reported atest-without-bodyerror, listing every test in the file as not loaded, though Bun runs them. -
#92
0001eea- A__proto__key in abunfig.tomlor.mocharc.ymlis read as a plain key, as Bun and Mocha read it. A
bunfig.tomlwith a[__proto__]table changedObject.prototypefor the whole process, so every later scan in it,
such as those of a long-running MCP server, read settings the project never set. A.mocharc.ymlone gave its map the
settings inside it. TOML keys namedconstructorortoStringare read too, where they were refused. -
#92
0001eea- Cypress:specPatternandexcludeSpecPatternare read as globby, which Cypress uses, reads them. AspecPatternthat
starts with!leaves files out, where the scan took it to match every other file and listed nearly the whole project;
anexcludeSpecPatterndrops its!, where the scan left out everything else; and a folder in either stands for every
file below it, where it matched nothing. -
#92
0001eea- Jasmine: a describe callback with a TypeScriptthisparameter, a parameter with a default value or a rest parameter,
asfunction (this: object), is no longer reported as taking arguments. Jasmine checks the function'slength, which
counts none of these, and runs the specs; the scan listed them as not loaded. -
#92
0001eea- Jasmine: anxdescribeinside anfdescribestays skipped, as in Jasmine, where the scan listed its specs as active;
a focus inside thexdescribestill runs. WebdriverIO on Jasmine now follows Jasmine's focus rules: afitinside an
xdescriberuns, and in anfdescribewith afitbelow it only thefithasisOnly, where the scan applied
Mocha's rules. -
#92
0001eea- A<rootDir>entry in Jest'smoduleDirectories, as['node_modules', '<rootDir>/src'], is followed as a folder to
look in, as Jest does. The scan looked for a folder named<rootDir>/srcand left the files out ofdependencies
without a warning. -
#92
0001eea- Jest'smoduleNameMapperreplaces the whole import name, as Jest does, also when its pattern matches only part of it,
as'\\.css$'does. The scan replaced only the matched part, so a mapped style or file mock was missing from
dependenciesand its import got adependency-not-followedwarning. Vite's aliases still replace only the part they
match. -
#92
0001eea- Test files reached through a symbolic link are read the way each runner reads them. Jasmine and Bun follow such links
and run the file once, as Vitest and Mocha do, so the file is no longer left out; Bun names it by its own path, as its
reports do. node:test runs a linked file, twice when its own path matches too, but a wildcard in its pattern doesn't
enter a linked folder. Thesymlink-ignoredwarning now names the runner in use, where it named Playwright for every
runner but Jest. -
#92
0001eea- Mocha: an absolute glob inspec, as a.mocharc.jsbuilds it withpath.join(__dirname, 'test', '**', '*.spec.js'),
runs the files it matches. The scan matched it against paths relative to the config's folder, found nothing, and
reportedno-files-matched. -
#92
0001eea- Mocha, Cypress and WebdriverIO on Mocha:this.skip()in anafterEachhook no longer marks the tests as skipped.
The test has passed by the time the hook runs, and Mocha reports it as a pass. -
#92
0001eea- Mocha: a.onlyin a project whose config setsforbid-only(orforbidOnly) gets aforbidden-onlyerror, as Mocha
stops the run before any test runs, or a warning when the setting depends on a condition, as Playwright'sforbidOnly
does. -
#92
0001eea- A.mocharc.ymlis read as js-yaml, Mocha's reader, reads it. Files that Mocha reads and the scan refused, which lost
every setting and so the files to test, are now read: a byte order mark, a comment or a%YAMLline before---, a
...at the end, quoted list items with commas, as['test/**/*.{ts,js}'], YAML's escapes in double quotes, as
\x41, and a tab or an escaped quote followed by#in quotes. A quote inside a value, as ingrep: buy 'limit # note,
no longer hides the comment after it,-a.json its own line is a value, not a list item, and what Mocha refuses is
reported rather than read: a key set twice, a tab in the indent,a: bin a value, a list inside a list, and values
that start with@,`or%.-.5is a string, as js-yaml reads it. A long line is read in linear time; one of
160 KB took 5 seconds. -
#92
0001eea- node:test and Bun: a skipped describe skips every test inside it, over the test's own todo, as node:test creates none of
them, and in Bun the outermost skipped or todo describe decides, over the describes inside it and the test's own state.
The scan took the state nearest the test, sotest.todo()indescribe.skip()was todo, and in Buntest.skip()in
describe.todo()was skipped. -
#92
0001eea- node:test: a test whose function is passed by name, astest('fills a market order', fillsMarketOrder)or
test(fillsMarketOrder), gets that function'sbodyHash, and without a title the function's name, as Node.js names it.
The scan took the function for the test's options, with anunresolved-optionwarning and no hash, or for a title it
couldn't work out. -
#92
0001eea- node:test: the scan reads thenode --testcommands of every script thetestscript runs throughnpm run,pnpm,
yarn,bun run,npm-run-all,run-sorrun-p, as in"test": "npm run test:unit && npm run test:integration".
It read only the first script that runsnode --test, and left out the files of the others without a warning. -
#92
0001eea- From Playwright 1.65,test.skip('reason'),test.fixme('reason')andtest.fail('reason')with only a string give
that string as the record'sreason, in a test body and at file or describe level, and no longer askip-without-body
warning, as Playwright 1.65 takes the string as the description. An empty string still applies nothing. Older versions
keep the old reading. -
#92
0001eea- Adependency-not-followedwarning for an import a config maps to a file that doesn't exist gives that file's path
relative to the root, as every path in the output is. It gave the absolute path, aspath.resolve()or<rootDir>
built it, so the output differed from machine to machine. -
#92
0001eea- A test or describe function chosen in place, as in(process.env.CI ? it.skip : it)('books a fill', ...)or
(process.env.CI && it.skip || it)(...), is read as one kept in a variable: only what both choices share applies. The
scan dropped these tests without a warning, for every runner but Playwright, whose case is still open. Jasmine
variables that holdxit,fit,xdescribeorfdescribe, asconst later = xit, keep thexorf, as the docs
said; their tests were dropped too. -
#92
0001eea- A Vite alias to a path that starts with/, asalias: { '@': '/src' }, is followed from the project's root, as Vite
does, sodependenciesanddependencyHashinclude the files imported through it. The scan looked for/srcon the
disk, gave adependency-not-followedwarning and left the files out. -
#92
0001eea- WebdriverIO: aspecsorexcludeglob that starts with!matches no file, as in WebdriverIO, where the scan took it
to match every other file; a glob that starts with./matches from the config's folder only, as its slash keeps glob's
matchBaseoff; from WebdriverIO 10 a capability'sspecsandexcludeare no longer read, onlywdio:specsand
wdio:exclude; and a capability's settings insidealwaysMatchare read.