Repository navigation
Conversation
`vis test` runs the project's tests with Vitest without needing a `test` script or a vis config entry. It finds the nearest `vitest` install by walking up from the current directory, so a hoisted install works from a workspace package. Arguments and unknown flags are forwarded to Vitest, `--watch` keeps Vitest in watch mode, and the exit code is Vitest's. Vitest is not bundled; the command errors with the `vis add -D vitest` hint when it is missing. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
`vis check` now runs `vis lint` and then `vis fmt --check` over the same scope, so one command gates a change on every source check. The type check runs too when TypeScript is detected, unless `lint.adapters.typecheck.enabled` is set to `false`. `--fix`, `--since`, `--staged`, and file arguments are forwarded to both tools. The catalog dependency check moves to `vis outdated`, which is now its primary name. It keeps its options, including `--security-config`. A bare file-like argument that does not exist (for example `vis check react`) is rejected with a pointer to `vis outdated`, so a dependency name cannot be skipped silently as a path. BREAKING CHANGE: `vis check` no longer reports outdated dependencies. Replace `vis check` with `vis outdated` in scripts, CI, and hooks, and replace `vis check <packages>` and flags such as `--exit-code`, `--security`, and `--format json` the same way. The `c` alias is removed from the dependency check, so `vis c` no longer runs anything. Old flags on `vis check` fail as unknown options. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
`vis test` now prefers the package's own `test` script over the Vitest fallback, so the command a team already runs stays the source of truth. It runs `<pm> run test` with the detected package manager, forwards arguments after `--`, and prints a warning first so it is clear which runner ran. npm's `init` placeholder does not count as a script. `--watch` is rejected when a test script is used: it only applies to Vitest, and dropping it silently would look like it had worked. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Contributor
|
Thank you for following the naming conventions! 🙏 |
commit: |
Merging this PR will not alter performance
|
`vis test` still runs the package's own `test` script first, then Vitest. When Vitest is not installed, it now runs Rstest (`rstest run`, or `rstest watch` with `--watch`) instead of failing. Vitest keeps priority when both are installed, the same order the target inference uses. The bin lookup is shared between the two runners, so a hoisted install is found from a workspace package for either one. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
`vis test` used to fail when neither Vitest nor Rstest was installed. Now, when the package has no `test` script and no runner, it asks which runner to add: Vitest or Rstest. The choice is the consent. The install goes through `vis add -D`, so workspace root handling and the supply-chain checks apply, and nothing runs after a failed install. Outside an interactive terminal it does not choose for the user. It stops with an error listing each runner and its install command. Cancelling (Enter, `q`, or an out-of-range number) stops before anything is installed. The prompt and installer are shared helpers in `util/tool-choice`, so the dev and build commands can use the same flow. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
vis testruns the package'stestscript when one exists, through the detected package manager. A warning is printed first. Otherwise it runs Vitest, or Rstest when Vitest is not installed. Both are found by walking upnode_modules.vis testasks whether to add Vitest or Rstest as a devDependency, then runs it. Non-interactive runs stop with an error that lists the install commands. Cancelling installs nothing.--watchis rejected when a test script is used, so the flag is never dropped silently.vis checkis now a gate: it runsvis lint, thenvis fmt --check, over the same scope. The type check runs when TypeScript is detected, unlesslint.adapters.typecheck.enabledisfalse.vis outdatedis the catalog dependency check, previouslyvis check.Breaking change
vis checkno longer reports outdated dependencies. Scripts and CI that usevis checkfor that now needvis outdated. Old flags onvis check(--exit-code,--security,--format json) fail as unknown options.vis check <package>fails with a message that points tovis outdated. Thecalias is removed.Testing
vis checkwas run against the built CLI in sandboxes: exit 1 on a type error, exit 0 on a clean project, and a clear error forvis check react.vis testwas run against the built CLI: it lists the runners and installs nothing when non-interactive. The Rstest fallback forwards arguments and propagates the exit code.