linaria-jest

0.0.4 • Public • Published

Jest utilities for Linaria

A set of utilities for more delightful testing of Linaria–enhanced code with Jest.

API

  • reactSerializer – React snapshot serializer
  • preactSerializer – Preact snapshot serializer

Snapshot serializers

One of the most helpful utilities for CSS in JS libraries are snapshot serialiers, which are able to colocate styles with JS code. Linaria provides serializers for React and Preact components by default.

Usage

Use it directly in your test file, or in setupFiles:

import { reactSerializer } from 'linaria-jest';
 
expect.addSnapshotSerializer(reactSerializer);

Make sure you turn off linaria/babel preset for testing purposes, otherwise it won't work. E.g. change this:

{
  "presets": ["env", "react", "linaria/babel"],
}

...to this:

{
  "presets": ["env", "react"],
  "env": {
    "development": {
      "presets": ["linaria/babel"]
    },
    "production": {
      "presets": ["linaria/babel"]
    }
  }
}

Example

Here's a component we want to snapshot:

import React from 'react';
import { css, names } from 'linaria';
import theme from '../theme';
 
export default function Container({ children, className }) {
  return <div className={names(container, className)}>{children}</div>;
}
 
const container = css`
  max-width: 900px;
 
  &:hover {
    background: ${theme.hover};
  }
`;

We write a test (provided that our serializer is added in setupFiles):

import React from 'react';
import { css } from 'linaria';
 
test('my pretty Container', () => {
  const tree = renderer.create(
    <Container className={css`flex: 1;`}>text</Container>;
  );
 
  expect(tree).toMatchSnapshot();
});

...and the output snapshot with serializer applied is:

// Jest Snapshot v1, https://goo.gl/fbAQLP
 
exports[`my pretty Container 1`] = `
.a0 {
  max-width: 900px;
}
.a0:hover {
  background: #fff;
}
.a1 {
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}
 
<div
  className="a0 a1"
>
  text
</div>
`

Readme

Keywords

none

Package Sidebar

Install

npm i linaria-jest

Weekly Downloads

20

Version

0.0.4

License

MIT

Unpacked Size

141 kB

Total Files

14

Last publish

Collaborators

  • thymikee