Skip to content

GLSP-1635: Migrate spec assertions to native Vitest matchers#1708

Merged
tortmayr merged 1 commit into
masterfrom
update-vitest
Jun 23, 2026
Merged

GLSP-1635: Migrate spec assertions to native Vitest matchers#1708
tortmayr merged 1 commit into
masterfrom
update-vitest

Conversation

@tortmayr

Copy link
Copy Markdown
Contributor

What it does

Follow-up to the Vitest migration (#1705): converts the remaining chai-style
BDD assertions in all spec files to native Vitest matchers and drops the
now-unused chai tooling.

  • Migrate all spec assertions across 35 files (.to.equaltoBe,
    .to.deep.equaltoEqual, .to.include.members([...])
    toEqual(expect.arrayContaining([...])), .to.throwtoThrow, etc.)
  • Remove eslint-plugin-chai-friendly from the config and eslint-config
    packages and re-enable the core no-unused-expressions rule, which is correct
    again now that assertions are function calls rather than property accesses
  • Drop the obsolete globals.mocha entry from the base ESLint config
  • Remove stale ctrf/ and .nyc_output/ entries from .gitignore
  • Add a test:coverage passthrough script to the root package.json

Part of: #1635

How to test

pnpm install
pnpm test
  • Full CLI unit suite passes (22 files, 395 tests) — verified locally
  • No chai/mocha/sinon references remain in dev-packages/cli/src or tests

Follow-ups

Changelog

  • This PR should be mentioned in the changelog
  • This PR introduces a breaking change (if yes, provide more details below for the changelog and the migration guide)

- Convert all Chai-style BDD assertions (`.to.be.true`,
  `.to.deep.equal`, `.to.include.members`, ...) across the CLI specs
  to native Vitest matchers; they previously passed only via Vitest's
  bundled Chai-compatible API
- Drop the now-redundant eslint-plugin-chai-friendly and restore the
  plain no-unused-expressions rule, since the converted assertions are
  method calls rather than bare expression statements
- Remove the stale mocha global from the shared eslint base config

Also:
- Add a root test:coverage script
- Drop dead ctrf/ and .nyc_output/ entries from .gitignore

Part of: #1635

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes the Vitest migration by converting the remaining chai-style assertions in CLI unit/e2e specs to native Vitest matchers, and cleans up the now-obsolete ESLint/ignore tooling that supported chai’s property-based assertions.

Changes:

  • Migrate chai-style assertions to Vitest matchers across CLI unit and e2e spec files.
  • Remove eslint-plugin-chai-friendly, re-enable core no-unused-expressions, and drop obsolete globals.mocha from the shared ESLint config.
  • Minor repo hygiene: remove stale ignore entries and add a root test:coverage passthrough script.

Reviewed changes

Copilot reviewed 37 out of 39 changed files in this pull request and generated no comments.

Show a summary per file
File Description
pnpm-lock.yaml Removes eslint-plugin-chai-friendly from the lockfile/importers.
package.json Adds root test:coverage script forwarding to dev-packages/cli.
dev-packages/eslint-config/package.json Drops eslint-plugin-chai-friendly peer dependency.
dev-packages/eslint-config/configs/errors.js Re-enables core no-unused-expressions with appropriate options.
dev-packages/eslint-config/configs/base.js Removes chai-friendly plugin wiring and obsolete globals.mocha.
dev-packages/config/package.json Drops eslint-plugin-chai-friendly dependency.
dev-packages/cli/tests/e2e/update-next.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/repo/repo-vscode.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/repo/repo-theia.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/repo/repo-eclipse.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/repo/repo-core-clone.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/repo/repo-core-build.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/releng/version.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/releng/prepare.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/generate-index.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/tests/e2e/check-header.e2e.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/util/validation-util.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/util/process-util.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/util/package-util.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/util/glsp-repo-util.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/util/git-util.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/util/file-util.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/update-next.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/workspace.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/switch.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/start.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/server-node.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/run.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/repo.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/link.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/fork.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/common/utils.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/clone.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/repo/build.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/releng/version.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/releng/publish.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/commands/releng/common.spec.ts Converts assertions to Vitest matchers.
dev-packages/cli/src/cli.spec.ts Converts assertions to Vitest matchers (CLI shape/option tests).
.gitignore Removes stale ctrf/ and .nyc_output/ ignore entries.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tortmayr tortmayr merged commit 5b40020 into master Jun 23, 2026
5 checks passed
@tortmayr tortmayr deleted the update-vitest branch June 23, 2026 07:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants