// jest.config.js
const config = {
transform: {
'^.+\\.m?(t|j)sx?$': [
'@swc/jest',
{
jsc: {
parser: {
syntax: 'typescript',
},
},
},
],
},
moduleNameMapper: {
'\\.(svg|css|png)$': 'identity-obj-proxy',
},
testEnvironmentOptions: {
customExportConditions: ci && !coverage ? [] : ['dev'],
},
setupFilesAfterEnv: [
'<rootDir>/tests/__setup__/axe.js',
'<rootDir>/tests/__setup__/fail-on-console.js',
'<rootDir>/tests/__setup__/setupResizeObserver.js',
'<rootDir>/tests/__setup__/setupJestSnapshot.js',
],
testPathIgnorePatterns: ['/node_modules/'],
transformIgnorePatterns: ['/node_modules/(?!react-merge-refs)'],
testEnvironment: 'jsdom',
reporters: ci
? [['github-actions', { silent: false }], 'summary']
: ['default'],
coverageReporters: ['lcov', 'text', 'cobertura'],
coverageThreshold: {
global: {
branches: 100,
lines: 100,
},
},
};
export default config;
// setupJestSnapshot.js
import 'jest-styled-components';
import { setStyleSheetSerializerOptions } from 'jest-styled-components/serializer';
console.log('Setting up Jest snapshot serializer for styled-components/emotion class names'); // works in CI + local
setStyleSheetSerializerOptions({
classNameFormatter: (index) => {
console.log(`Formatting class name for index: ${index}`); // works locally, NOT in CI (Linux)
return `wxp${index}`;
},
});
When running snapshot tests with
jest-styled-components, theclassNameFormattercallback insidesetStyleSheetSerializerOptionsworks fine locally on Windows.However, in our CI/CD environment (running on AWS Linux), the callback never gets executed — no console output, no custom class names — which causes snapshot mismatches.
This makes snapshot testing inconsistent between local and CI environments.
Environment
Local (works fine)
CI/CD (fails)
Jest Config
Snapshot Setup
Observed Behavior