Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Neovim
  3. neotest

neotest

MITLuav5.20.0

An extensible framework for running and interacting with tests directly within the NeoVim editor.

GitHubGitHub
3.1k stars186 forks0 contributors

What is neotest?

Neotest is a framework for interacting with tests within NeoVim. It provides a unified interface to run, debug, and monitor tests from various languages and test runners without leaving the editor, enhancing developer workflow and productivity.

Target Audience

NeoVim users who write and run tests in multiple programming languages and want a deeply integrated, extensible testing experience directly in their editor.

Value Proposition

Developers choose Neotest for its extensible adapter system that supports a wide range of test runners, its deep integration with NeoVim's ecosystem (like treesitter and nvim-dap), and its rich consumer interfaces that provide real-time feedback and debugging capabilities.

Overview

An extensible framework for interacting with tests within NeoVim.

Use Cases

Best For

  • Running and debugging tests across multiple languages (Python, JavaScript, Go, Rust, etc.) within NeoVim using a single, consistent interface.
  • Automatically re-running tests in watch mode when related files change to maintain test-driven development workflows.
  • Visualizing test results with integrated output windows, summary panels, diagnostic messages, and status signs for immediate feedback.
  • Debugging tests directly in NeoVim using nvim-dap when adapters provide the necessary configuration.
  • Extending test runner support through community adapters or by writing custom adapters for unsupported languages or frameworks.
  • Managing test execution at multiple granularities (nearest test, file, directory) with background processes to avoid blocking the editor.

Not Ideal For

  • Teams using GUI-based IDEs like VSCode or IntelliJ that have built-in, polished testing tools with minimal setup
  • Projects relying on test runners without mature or actively maintained neotest adapters, such as niche or proprietary frameworks
  • Developers seeking out-of-the-box testing solutions with zero configuration and guaranteed stability across all languages
  • Environments where NeoVim plugin management is restricted or prone to instability, such as heavily locked-down corporate setups

Pros & Cons

Pros

Extensible Adapter Ecosystem

Supports a wide range of test runners through community adapters for languages like Python, JavaScript, Go, and Rust, as listed in the README, allowing unified testing across projects.

Deep NeoVim Integration

Leverages NeoVim's ecosystem with treesitter for parsing and nvim-dap for debugging, providing seamless, editor-native test execution and inspection without switching contexts.

Rich Real-time Feedback

Includes consumers like output windows, summary panels, and status signs that display interactive test results and diagnostics, enhancing workflow visibility.

Flexible Test Execution

Allows running tests at multiple levels (nearest, file, directory) with background processes and custom strategies, enabling tailored testing workflows.

Cons

Complex Initial Setup

Requires installing multiple dependencies like nvim-treesitter, plenary.nvim, and FixCursorHold.nvim, plus individual adapter configuration, which can be time-consuming and error-prone.

Adapter Reliability Varies

Community-maintained adapters may be outdated or lack features like error location parsing, leading to inconsistent experiences and potential bugs across different languages.

Early Stage Limitations

Labeled as early stage software, it may have breaking changes, incomplete documentation, or unstable features, as admitted in the README, risking production use.

Frequently Asked Questions

Quick Stats

Stars3,121
Forks186
Contributors0
Open Issues90
Last commit22 days ago
CreatedSince 2022

Tags

#treesitter#developer-tools#test-runner#testing#extensible-framework#neovim#lua#debugging#vim-plugin

Built With

p
plenary.nvim
n
nvim-treesitter
L
Lua

Included in

Neovim20.6k
Auto-fetched 7 hours ago

Related Projects

nvim-coveragenvim-coverage

Displays test coverage data in the sign column

Stars432
Forks57
Last commit1 year ago
jesterjester

A Neovim plugin to easily run and debug Jest tests

Stars213
Forks13
Last commit1 year ago
nvim-testnvim-test

A Neovim wrapper for running tests

Stars200
Forks24
Last commit3 months ago
neotest-jestneotest-jest

neotest-jest is a plugin that integrates Jest, the popular JavaScript testing framework, into the Neotest ecosystem for Neovim. It allows developers to run, debug, and manage Jest tests directly from their editor, streamlining the testing workflow without leaving the coding environment. ## Key Features - **Jest Integration** — Seamlessly runs Jest tests within Neovim using the Neotest framework. - **Flexible Configuration** — Supports custom Jest commands, arguments, config files, environment variables, and working directories. - **Watch Mode Support** — Enables running tests in Jest's watch mode for continuous feedback. - **Parameterized Test Discovery** — Can discover and run parameterized tests created with `it.each` or `test.each`. - **Monorepo Support** — Provides configuration options for handling monorepo structures with multiple Jest configurations. - **Debugging Capabilities** — Integrates with nvim-dap for debugging Jest tests directly in Neovim. ## Philosophy neotest-jest aims to provide a robust and configurable bridge between Jest and Neovim, following the Neotest philosophy of creating a unified testing experience within the editor.

Stars153
Forks107
Last commit5 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub