You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

86 lines
3.8 KiB

// packages/svelte/jest.config.js
/** @type {import('jest').Config} */
const config = {
// Indicates whether the coverage information should be collected while executing the test
collectCoverage: true,
// An array of glob patterns indicating a set of files for which coverage information should be collected
collectCoverageFrom: ["src/**/*.{ts,svelte}"], // Focus coverage on your source files
// The directory where Jest should output its coverage files
coverageDirectory: "coverage",
// A list of reporter names that Jest uses when writing coverage reports
coverageReporters: ["json", "text", "lcov", "html"],
// The test environment that will be used for testing (jsdom for browser-like environment)
testEnvironment: "jest-environment-jsdom",
// A list of paths to modules that run some code to configure or set up the testing framework
// before each test file in the suite.
setupFilesAfterEnv: ["<rootDir>/jest.setup.ts"],
// The glob patterns Jest uses to detect test files
testMatch: [
"<rootDir>/src/**/*.test.ts",
"<rootDir>/src/**/*.spec.ts",
"<rootDir>/test/**/*.test.ts", // Or wherever your tests are located
"<rootDir>/test/**/*.spec.ts",
],
// An array of file extensions your modules use
moduleFileExtensions: ["ts", "js", "svelte", "json"],
// A map from regular expressions to module names or to arrays of module names
// that allow to stub out resources with a single module
moduleNameMapper: {
// Alias for SvelteKit-style $lib imports (if you use them)
"^\\$lib(.*)$": "<rootDir>/src$1",
// Mock CSS imports to prevent errors
"\\.(css|less|scss|sass)$": "identity-obj-proxy",
// You can add mocks for other static assets if needed
// '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir>/__mocks__/fileMock.js',
},
// A map from regular expressions to paths to transformers
transform: {
"^.+\\.svelte$": [
"svelte-jester", // Uses your svelte-jester@^5.0.0
{
preprocess: true, // This will automatically use svelte.config.js
// Set to false if svelte.config.js is not found or not to be used.
// You could also pass preprocess options directly here:
// preprocess: require('svelte-preprocess')({ typescript: true })
},
],
"^.+\\.ts$": [
// Changed from (ts|tsx) as tsx is less common in Svelte libs
"ts-jest",
{
tsconfig: "<rootDir>/tsconfig.json", // Points to your package's tsconfig for type-safety
// Example: disabling some TS diagnostics if they are noisy in tests
// diagnostics: {
// ignoreCodes: ['TS151001']
// }
},
],
// If you have .js files that need transpilation (e.g. using modern JS features not supported by Node version running Jest)
// you might add a babel-jest transformer here. For a library mostly in TS, this might not be needed.
// '^.+\\.js$': 'babel-jest',
},
// An array of regexp pattern strings that are matched against all source file paths before transformation.
// If the file path matches any of the patterns, it will not be transformed.
// This is important for node_modules that are published as ES modules but Jest runs in CJS by default.
transformIgnorePatterns: [
"/node_modules/(?!(svelte-routing|another-es-module-package)/)", // Adjust if you use ESM-only deps
],
// Indicates whether each individual test should be reported during the run
verbose: true,
// Optionally, if your project or tests are pure ESM, you might explore ESM support in Jest:
// preset: 'ts-jest/presets/default-esm', // or 'ts-jest/presets/default-esm-legacy'
// extensionsToTreatAsEsm: ['.ts', '.svelte'],
// moduleNameMapper for ESM often needs to handle .js extensions in imports.
};
export default config;