From 60e5e3b1d1ce6d3be60cf46e253eb54af4dac70d Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Sat, 23 Sep 2023 10:24:46 +0330 Subject: [PATCH] Setting up required test-driven services --- .eslintrc.json | 6 +++++- jest.config.mjs | 17 +++++++++++++++++ jest.setup.js | 1 + package.json | 11 ++++++++++- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 jest.config.mjs create mode 100644 jest.setup.js diff --git a/.eslintrc.json b/.eslintrc.json index bffb357..c4f29da 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,7 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "next/core-web-vitals", + "plugin:testing-library/react", + "plugin:jest-dom/recommended" + ] } diff --git a/jest.config.mjs b/jest.config.mjs new file mode 100644 index 0000000..5bda02f --- /dev/null +++ b/jest.config.mjs @@ -0,0 +1,17 @@ +import nextJest from 'next/jest.js' + +const createJestConfig = nextJest({ + // Provide the path to your Next.js app to load next.config.js and .env files in your test environment + dir: './', +}) + +// Add any custom config to be passed to Jest +/** @type {import('jest').Config} */ +const config = { + // Add more setup options before each test is run + setupFilesAfterEnv: ['/jest.setup.js'], + testEnvironment: 'jest-environment-jsdom', +} + +// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async +export default createJestConfig(config) \ No newline at end of file diff --git a/jest.setup.js b/jest.setup.js new file mode 100644 index 0000000..010b0b5 --- /dev/null +++ b/jest.setup.js @@ -0,0 +1 @@ +import '@testing-library/jest-dom' \ No newline at end of file diff --git a/package.json b/package.json index 7c15808..e0a99e3 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,9 @@ "lint": "next lint", "update": "run-script-os", "update:win32": "echo 'ok'", - "update:linux": "rm -rf .next/ && npm i && npm run build && sudo systemctl restart crm.service" + "update:linux": "rm -rf .next/ && npm i && npm run build && sudo systemctl restart crm.service", + "test": "jest", + "test:watch": "jest --watchAll" }, "dependencies": { "@emotion/react": "^11.10.6", @@ -48,7 +50,14 @@ }, "devDependencies": { "@faker-js/faker": "^7.6.0", + "@testing-library/jest-dom": "^6.1.3", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.5.1", "eslint-config-next": "^13.3.0", + "eslint-plugin-jest-dom": "^5.1.0", + "eslint-plugin-testing-library": "^6.0.1", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "run-script-os": "^1.1.6" } }