Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

jest-preset-stylelint

stylelint366.8kMIT7.2.0TypeScript support: included

Jest preset for Stylelint plugins.

stylelint, jest, jest-preset, preset

readme

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

changelog

Changelog

7.2.0

  • Added: support for testing computeEditInfo.

7.1.1

  • Fixed: circular structure in exceptions.

7.1.0

  • Added: codeFilename option to accept/reject cases in testRule function.

7.0.1

  • Fixed: missing funding field in package.json.

7.0.0

  • Removed: support for Node.js less than 18.12.0.
  • Changed: loadLint option's default value.

6.3.2

  • Fixed: missing getTestRuleConfigs export.

6.3.1

  • Fixed: loadLint option's type declaration.

6.3.0

  • Added: loadLint option.

6.2.0

  • Added: testRuleConfigs function.

6.1.1

  • Fixed: tightly-coupled dependency on Stylelint's internal module lib/utils/getOsEol.

6.1.0

  • Added: support for custom unfixable error messages.
  • Fixed: false negatives for invalidOptionWarnings.

6.0.0

  • Removed: support for Jest less than 29.0.2 from peer dependencies.
  • Removed: support for Node.js less than 14.15.0.

5.0.4

  • Fixed: readability of failure output using the Jest .toMatchObject() API.

5.0.3

  • Fixed: peer dependency range for Jest 28.

5.0.2

  • Fixed: error in TypeScript definitions.

5.0.1

  • Fixed: incorrect TestSchema.config property type.

5.0.0

  • Removed: skipBasicChecks schema property.
  • Added: endLine and endColumn schema properties.
  • Added: TypeScript definitions.

4.2.0

  • Added: codeFilename schema property.

4.1.1

  • Fixed: peer dependency range for jest 27

4.1.0

  • Added: only and skip to test group.
  • Fixed: peer dependencies and engine range.

4.0.0

  • Removed: syntax schema property.
  • Added: customSyntax schema property.

3.0.0

  • Changed: getTestRule signature to only accept options as argument.
  • Added: support for Jest 26.0.1+.

2.0.0

  • Removed: support for stylelint versions less than 13.
  • Removed: support for node@8.
  • Removed: settings not related to plugin testing.
  • Changed: testRule signature to only accept schema as argument.
  • Added: warnings to reject schema property.
  • Added: plugins schema property.
  • Added: only schema property.
  • Added: skip schema property.
  • Fixed: TypeError: stylelint is not a function.

1.3.0

  • Use stylelint exported modules.
  • Include getOsEol.js in a .package.json distribution files.

1.2.0

  • Use absolute path to jest-setup.js in jest-preset.json.
  • Avoid Jest preset conflicts by not using the Jest preset for this repo.

1.1.0

  • Include jest-setup.js in a .package.jsondistributionfiles`.

1.0.0

  • Initial release.
  • jest-setup.js copied from stylelint upstream commit.