1. jest-preset-stylelint
Jest preset for Stylelint plugins.
jest-preset-stylelint
Package: jest-preset-stylelint
Created by: stylelint
Last modified: Fri, 08 Dec 2023 11:42:03 GMT
Version: 7.0.0
License: MIT
Downloads: 398,156
Repository: https://github.com/stylelint/jest-preset-stylelint

Install

npm install jest-preset-stylelint
yarn add jest-preset-stylelint

jest-preset-stylelint

NPM version Build Status

Jest preset for Stylelint plugins.

Installation

Install the preset alongside Jest and Stylelint:

 npm install jest-preset-stylelint jest stylelint --save-dev

Setup

Add the preset to your jest.config.js or jest field in package.json:

 {
  "preset": "jest-preset-stylelint"
}

Adjust setup globally

Optionally, you can avoid specifying plugins in every schema by defining your own setup file to configure the testRule/testRuleConfigs functions.
This is useful if you have many tests. There are two additional steps to do this:

  1. Create jest.setup.js in the root of your project. Provide plugins option to getTestRule/getTestRuleConfigs:

     import { getTestRule, getTestRuleConfigs } from "jest-preset-stylelint";
    import myPlugin from "./my-plugin.js";
    
    const plugins = [myPlugin];
    
    global.testRule = getTestRule({ plugins });
    global.testRuleConfigs = getTestRuleConfigs({ plugins });
    
  2. Add jest.setup.js to your jest.config.js or jest field in package.json:

     {
      "preset": "jest-preset-stylelint",
      "setupFiles": ["<rootDir>/jest.setup.js"]
    }
    

Prevent segmentation fault

If you get a segmentation fault while running the preset on Node.js 18, you can use jest-light-runner:

 {
  "preset": "jest-preset-stylelint",
  "runner": "jest-light-runner"
}

Usage

This preset exposes the following global functions as a helper.

See also the type definitions for more details.

testRule

The testRule function enables you to efficiently test your plugin using a schema.

For example, we can test a plugin that enforces and autofixes kebab-case class selectors:

 // my-plugin.test.js
import myPlugin from "./my-plugin.js";

const plugins = [myPlugin];
const {
  ruleName,
  rule: { messages }
} = myPlugin;

testRule({
  plugins,
  ruleName,
  config: [true, { type: "kebab" }],
  fix: true,

  accept: [
    {
      code: ".class {}",
      description: "simple class selector"
    },
    {
      code: ".my-class {}",
      description: "kebab class selector"
    }
  ],

  reject: [
    {
      code: ".myClass {}",
      fixed: ".my-class {}",
      description: "camel case class selector",
      message: messages.expected(),
      line: 1,
      column: 1,
      endLine: 1,
      endColumn: 8
    },
    {
      code: ".MyClass,\n.MyOtherClass {}",
      fixed: ".my-class,\n.my-other-class {}",
      description: "two pascal class selectors in a selector list",
      warnings: [
        {
          message: messages.expected(),
          line: 1,
          column: 1,
          endLine: 1,
          endColumn: 8
        },
        {
          message: messages.expected(),
          line: 2,
          column: 1,
          endLine: 2,
          endColumn: 13
        }
      ]
    }
  ]
});

testRuleConfigs

The testRuleConfigs function enables you to test invalid configs for a rule.

For example:

 testRuleConfigs({
  plugins,
  ruleName,

  accept: [
    {
      config: "valid"
    }
  ],

  reject: [
    {
      config: "invalid"
    },
    {
      config: [/invalid/],
      description: "regex is not allowed"
    }
  ]
});

Changelog

License

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code