-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
38 lines (32 loc) · 1001 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// @flow
import { __internal as __sxInternal } from '@adeira/sx';
import prettier from 'prettier';
import { format as prettyFormat, plugins } from 'pretty-format';
/* global window */
expect.addSnapshotSerializer({
test: (val) => {
return (
val &&
(val.$$typeof === Symbol.for('react.test.json') || // react-test-renderer
val instanceof window.HTMLElement) // @testing-library/react
);
},
print: (val) => {
const printedStyles = prettier.format(
__sxInternal.StyleCollector.print(), // TODO: apply `stylis` rules to match what SX actually does
{ parser: 'css' },
);
const { DOMElement, ReactTestComponent } = plugins;
const printedHTML = prettier.format(
prettyFormat(val, {
plugins: [DOMElement, ReactTestComponent],
printFunctionName: false,
}),
{ parser: 'html' },
);
return `${printedStyles}\n${printedHTML.trim()}`;
},
});
afterEach(() => {
__sxInternal.StyleCollector.reset();
});