Возможно, немного опоздал для вас, но просто смотрю на эту проблему.Это конфиг, который я придумал, который, кажется, работает для меня.
import initStoryshots from "@storybook/addon-storyshots";
import path from "path";
import { render } from "react-testing-library";
const reactTestingLibrarySerializer = {
print: (val, serialize, indent) => serialize(val.container.firstChild),
test: (val) => val && val.hasOwnProperty("container")
};
initStoryshots({
configPath: path.join(__dirname, "..", "config", "storybook"),
framework: "react",
integrityOptions: { cwd: path.join(__dirname, "stories") },
renderer: render,
snapshotSerializers: [reactTestingLibrarySerializer],
storyKindRegex: /^((?!.*?DontTest).)*$/
});
Секрет в том, чтобы передать пользовательский Jest сериализатор для опции snapshotSerializers который получает контейнер из результата функции рендеринга и передает свой firstChild для сериализации.
Если вам нужно, вы можете изменить содержимое контейнера перед сериализацией, чтобы удалить нестабильные атрибуты или целые элементы, используяDOM api.