I have the following component:
App.js
import React from "react";
import { Slider } from "./Slider";
function App() {
return (
<div className="App">
<header className="App-header">
<Slider />
</header>
</div>
);
}
export { App };
Slider.jsx
import {Virtual, Navigation} from 'swiper';
import {Swiper, SwiperSlide} from 'swiper/react';
export const Slider = ({meetings = []}) => {
const rerenderSwiperKey = useMemo(() => Date.now(), [meetings.length]);
const lessThanThree = meetings.length < 3;
const lessThanTwo = meetings.length < 2;
return (
<Swiper
key={rerenderSwiperKey}
navigation={{
nextEl: '.swiper-button.next',
prevEl: '.swiper-button.prev',
}}
spaceBetween={24}
slidesPerView={3}
simulateTouch={false}
breakpoints={{
0: {
slidesPerView: 1,
},
900: {
slidesPerView: lessThanTwo ? 1 : 2,
},
1200: {
slidesPerView: lessThanThree ? (lessThanTwo ? 1 : 2) : 3,
},
}}
modules={[Virtual, Navigation]}
virtual>
{meetings.map((meeting, index) => (
<SwiperSlide key={meeting.id} virtualIndex={index}>
<Slide>{meeting}</Slide>
</SwiperSlide>
))}
</Swiper>
);
}
Then I have the following test file:
App.test.js
import React from "react";
import { shallow } from "enzyme";
import { App } from "../../App";
import { Slider } from "../../Slider";
describe("App page", () => {
it("render: learn react link", () => {
const component = shallow(<App />);
const buttons = component.find(Slider);
expect(buttons.length).toBe(1);
});
});
and the following configuration jest.config.js:
const { defaults } = require("jest-config");
module.exports = {
moduleFileExtensions: [...defaults.moduleFileExtensions, "js"],
setupFiles: ["<rootDir>/src/__test__/setupTests.js"],
setupFilesAfterEnv: ["<rootDir>/src/__test__/setupTestsAfterEnv.js"],
testPathIgnorePatterns: ["<rootDir>/node_modules/"],
moduleNameMapper: {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
"./__mocks__/fileMock.js",
},
};
The issue is that: when I run yarn test
- it produces the following error:
~/Downloads/jest-esm-issue/node_modules/swiper/swiper.esm.js:13
export { default as Swiper, default } from './core/core.js';
^^^^^^
SyntaxError: Unexpected token 'export'
> 1 | import {Virtual, Navigation} from 'swiper';
| ^
Could somebody help me understand how to fix it? Here is a demo example project https://github.com/DaveLomber/jest-esm-issue