@vyriy/jest-config
Part of Vyriy - a calm architecture toolkit for TypeScript, React, SSR, SSG, APIs, and cloud-ready apps.
Shared Jest config for Vyriy projects.
Purpose
This package provides the base Jest setup used in Vyriy repositories for:
- TypeScript test runs
- SWC transforms
- JSDOM environment
- coverage defaults
- JUnit reporting
Coverage
Coverage is enabled by default and collected from:
[
'<rootDir>/**/*.{ts,tsx,js,jsx,mjs,cjs}',
'!<rootDir>/**/*.d.ts',
'!<rootDir>/**/*.stories.{ts,tsx}',
'!<rootDir>/**/*.types.ts',
'!<rootDir>/**/types.ts',
'!<rootDir>/*.config.ts',
'!<rootDir>/consumer/**',
];
Coverage paths ignore generated output, package manager state, Storybook output, and common build folders:
[
'/node_modules/',
'<rootDir>/storybook-static/',
'<rootDir>/dist/',
'<rootDir>/build/',
'<rootDir>/bin/',
'<rootDir>/.bin/',
'<rootDir>/.storybook/',
'<rootDir>/coverage/',
'<rootDir>/.yarn/',
'<rootDir>/consumer/',
];
Jest also ignores these generated and dependency directories while resolving modules and discovering tests:
[
'/node_modules/',
'<rootDir>/coverage/',
'<rootDir>/dist/',
'<rootDir>/storybook-static/',
'<rootDir>/consumer/',
];
Reports are written to coverage using json, text, text-summary, lcov, clover, and cobertura reporters. The shared default requires 100% global coverage for branches, functions, lines, and statements.
CI Reports
The config includes jest-junit alongside the default Jest reporter. This writes a JUnit report to coverage/junit.xml, which CI systems such as GitLab can publish as a test report artifact.
Jest transformer, reporter, environment, and style proxy packages are resolved from this shared config package, so consumers only need the config package and their local Jest CLI.
The transform ignore rules keep normal dependencies ignored but allow Vyriy packages and the ESM Markdown/unified ecosystem used by SSG and docs packages to pass through SWC.
JSDOM uses Node export conditions in this shared config so server-oriented packages, including the AWS SDK, resolve their Node builds during tests. A CommonJS setup file provides Node's TextEncoder and TextDecoder globals for dependencies that expect them at import time.
Install
With npm:
npm install -D @vyriy/jest-config jest
With Yarn:
yarn add -D @vyriy/jest-config jest
Install jest in the consumer project so CLI binaries are available.
Usage
Create jest.config.mjs in your project:
export { default } from '@vyriy/jest-config';
If you need local overrides:
import baseConfig, { type Config } from '@vyriy/jest-config';
const config: Config = {
...baseConfig,
coverageThreshold: {
global: {
branches: 80,
functions: 80,
lines: 80,
statements: 80,
},
},
};
export default config;
Current Vyriy Usage
In this repository the root Jest config is a thin wrapper:
export { default } from '@vyriy/jest-config';
See the article with a complete testing setup walkthrough: https://vyriy.dev/examples/vyriy-jest-config/.