Jest transformer for .scss files.
Useful for when you're sharing variables between Sass and JavaScript, and makes your snapshots much nicer.
npm i -D jest-scss-transform
or
yarn add -D jest-scss-transform
Using jest.config.js:
module.exports = {
  // A map from regular expressions to paths to transformers
  transform: {
    "^.+\\.scss$": 'jest-scss-transform',
  },
};Similarly, using "jest" key in package.json (create-react-app, etc):
{
  "jest": {
    "transform": {
      "^.+\\.scss$": "<rootDir>/node_modules/jest-scss-transform"
     }
  }
}Assume you have an scss file, e.g. colors.scss--
$brandPrimary: #000000;
$brandSecondary: #ffffff;
:export {
  brandPrimary: $brandPrimary;
  brandSecondary: $brandSecondary;
}And you're importing those variables for use in your js app, e.g. colors.js--
import colors from 'colors.scss';
export const brandPrimary = colors.brandPrimary;
export const brandSecondary = colors.brandSecondary;Webpack will compile these nicely, but Jest will not. Most configurations will result in undefined or empty string values for each of those constants.
Using this package, they'll be read-in as the string literal value of the scss variables. For example--
import * as colors from 'colors.js';
console.log(colors.brandPrimary); // $brandPrimary
console.log(colors.brandSecondary); // $brandSecondaryThis makes for really nice snapshot tests, where instead of being written as hex codes (#04ae46), undefined, etc, style properties are written as their semantic scss variable names ($brandPrimary).
See the example directory for a demo of some basic snapshot output.