Skip to content

Instantly share code, notes, and snippets.

@pachun
Created September 26, 2024 21:20
Show Gist options
  • Save pachun/37706f3126702d590d05f4e9a7f8c565 to your computer and use it in GitHub Desktop.
Save pachun/37706f3126702d590d05f4e9a7f8c565 to your computer and use it in GitHub Desktop.
import type { Config } from "jest"
import * as fsPromises from "fs/promises"
const setupFilesAfterEnv = async (): Promise<string[]> => {
const setupFilesAfterEnvPath = "./tests/helpers/jest/setupFilesAfterEnv/"
return (await fsPromises.readdir(`${setupFilesAfterEnvPath}`)).map(
fileName => `${setupFilesAfterEnvPath}/${fileName}`,
)
}
const setupFiles = async (): Promise<string[]> => {
const setupFilesPath = "./tests/helpers/jest/setupFiles/"
return (await fsPromises.readdir(`${setupFilesPath}`)).map(
fileName => `${setupFilesPath}/${fileName}`,
)
}
const projectPresets = ["jest-expo/ios", "jest-expo/android"]
const projects = async (): Promise<
{ preset: string; setupFilesAfterEnv: string[]; setupFiles: string[] }[]
> => {
return await Promise.all(
projectPresets.map(async preset => ({
preset,
setupFilesAfterEnv: await setupFilesAfterEnv(),
setupFiles: await setupFiles(),
})),
)
}
const transformIgnorePatterns = [
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)",
]
const collectCoverageFrom = ["./src/**", "!src/types/**"]
const minimumCoveragePercentage = 100
const coverageThreshold = {
global: {
lines: minimumCoveragePercentage,
functions: minimumCoveragePercentage,
branches: minimumCoveragePercentage,
statements: minimumCoveragePercentage,
},
}
export default async (): Promise<Config> => {
return {
projects: await projects(),
transformIgnorePatterns,
coverageProvider: "v8",
collectCoverageFrom,
coverageThreshold,
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment