guivazcabral / neotest-jest

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

neotest-jest

build

This plugin provides a jest adapter for the Neotest framework. It is currently a work in progress. It will be transferred to the official neotest organisation (once it's been created).

Installation

Using packer:

use({
  'nvim-neotest/neotest',
  requires = {
    ...,
    'haydenmeade/neotest-jest',
  }
  config = function()
    require('neotest').setup({
      ...,
      adapters = {
        require('neotest-jest')({
          jestCommand = "npm test --",
          jestConfigFile = "custom.jest.config.ts",
          env = { CI = true },
          cwd = function(path)
            return vim.fn.getcwd()
          end,
        }),
      }
    })
  end
})

Make sure you have the appropriate treesitter language parsers installed otherwise no tests will be found:

:TSInstall javascript

Usage

See neotest's documentation for more information on how to run tests.

Running tests in watch mode

jest allows to run your tests in watch mode. To run test in this mode you either can enable it globally in the setup:

require('neotest').setup({
  ...,
  adapters = {
    require('neotest-jest')({
      jestCommand = "jest --watch ",
    }),
  }
})

or add a specific keymap to run tests with watch mode:

vim.api.nvim_set_keymap("n", "<leader>tw", "<cmd>lua require('neotest').run.run({ jestCommand = 'jest --watch ' })<cr>", {})

Monorepos

If you have a monorepo setup, you might have to do a little more configuration, especially if you have different jest configurations per package.

jestConfigFile = function()
  local file = vim.fn.expand('%:p')
  if string.find(file, "/packages/") then
    return string.match(file, "(.-/[^/]+/)src") .. "jest.config.ts"
  end

  return vim.fn.getcwd() .. "/jest.config.ts"
end,

Also, if your monorepo set up requires you to run a specific test file with cwd on the package directory (like when you have a lerna setup for example), you might also have to tweak things a bit:

cwd = function()
  local file = vim.fn.expand('%:p')
  if string.find(file, "/packages/") then
    return string.match(file, "(.-/[^/]+/)src")
  end
  return vim.fn.getcwd()
end

🎁 Contributing

Please raise a PR if you are interested in adding new functionality or fixing any bugs. When submitting a bug, please include an example spec that can be tested.

To trigger the tests for the adapter, run:

./scripts/test

Bug Reports

Please file any bug reports and I might take a look if time permits otherwise please submit a PR, this plugin is intended to be by the community for the community.

About


Languages

Language:Lua 94.4%Language:TypeScript 3.4%Language:Shell 1.9%Language:Vim Script 0.3%