GithubHelp home page GithubHelp logo

eugeny-dementev / neotest-jest Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nvim-neotest/neotest-jest

0.0 0.0 1.0 146 KB

License: MIT License

Shell 1.28% Lua 92.75% TypeScript 5.76% Vim Script 0.21%

neotest-jest's Introduction

neotest-jest

build

This plugin provides a jest adapter for the Neotest framework. Requires at least Neotest version 4.0.0 which in turn requires at least neovim version 0.9.0.

It is currently a work in progress.

Installation

Using packer:

use({
  'nvim-neotest/neotest',
  requires = {
    ...,
    'nvim-neotest/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 = require('neotest-jest.jest-util').getJestCommand(vim.fn.expand '%:p:h') .. ' --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>", {})

Parameterized tests

If you want to allow to neotest-jest to discover parameterized tests you need to enable flag jest_test_discovery in config setup:

require('neotest').setup({
  ...,
  adapters = {
    require('neotest-jest')({
      ...,
      jest_test_discovery = false,
    }),
  }
})

Its also recommended to disable neotest discovery option like this:

require("neotest").setup({
	...,
	discovery = {
		enabled = false,
	},
})

because jest_test_discovery runs jest command on file to determine what tests are inside the file. If discovery would be enabled then neotest-jest would spawn a lot of procesees.

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(file)
  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(file)
  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.

neotest-jest's People

Contributors

adrigzr avatar ammarcodes avatar andresatierf avatar arthurgeek avatar benelan avatar benlubas avatar carlosflorencio avatar conermurphy avatar entropitor avatar gugahoi avatar guivazcabral avatar haydenmeade avatar jamie-505 avatar jordanfaust avatar kostkabrukowa avatar marilari88 avatar mattdonnelly avatar mikaoelitiana avatar misanthropicbit avatar mrjones2014 avatar pineappletooth avatar rcarriga avatar rguruprakash avatar stephenaboyd avatar stevearc avatar stevearc-stripe avatar tapayne88 avatar tuanbass avatar

Forkers

matheusavi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.