or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

angular-transformer.mdindex.mdpreset-configuration.mdsetup-environment.mdsnapshot-serializers.mdtest-environment.md
tile.json

preset-configuration.mddocs/

0

# Jest Preset Configuration

1

2

Core preset creation functions that generate complete Jest configurations optimized for Angular projects with different module systems and environments.

3

4

## Capabilities

5

6

### createCjsPreset Function

7

8

Creates a Jest preset configuration optimized for CommonJS module system with Angular-specific transformations and settings.

9

10

```typescript { .api }

11

/**

12

* Creates a Jest preset configuration for CommonJS modules

13

* @param options - Optional configuration options for the preset

14

* @returns Complete Jest configuration object for CommonJS projects

15

*/

16

function createCjsPreset(options?: CjsPresetOptionsType): CjsPresetType;

17

18

interface CjsPresetOptionsType {

19

/** TypeScript configuration file path or options */

20

tsconfig?: TsJestTransformerOptions['tsconfig'];

21

/** AST transformers for custom TypeScript transformations */

22

astTransformers?: TsJestTransformerOptions['astTransformers'];

23

/** Babel configuration for additional transformations */

24

babelConfig?: TsJestTransformerOptions['babelConfig'];

25

/** TypeScript diagnostic options */

26

diagnostics?: TsJestTransformerOptions['diagnostics'];

27

/** Test environment configuration */

28

testEnvironment?: JSDOMEnvironment;

29

}

30

31

type CjsPresetType = BasePresetConfig & Required<Pick<Config, 'transformIgnorePatterns' | 'transform'>>;

32

```

33

34

**Usage Examples:**

35

36

```javascript

37

const { createCjsPreset } = require('jest-preset-angular/presets');

38

39

// Basic configuration

40

module.exports = createCjsPreset();

41

42

// With custom tsconfig

43

module.exports = createCjsPreset({

44

tsconfig: '<rootDir>/tsconfig.spec.json'

45

});

46

47

// With custom environment

48

module.exports = createCjsPreset({

49

testEnvironment: 'jest-preset-angular/environments/jest-jsdom-env'

50

});

51

52

// Full configuration

53

module.exports = createCjsPreset({

54

tsconfig: {

55

tsconfig: '<rootDir>/tsconfig.spec.json',

56

isolatedModules: true

57

},

58

diagnostics: {

59

warnOnly: true

60

},

61

testEnvironment: 'jsdom'

62

});

63

```

64

65

### createEsmPreset Function

66

67

Creates a Jest preset configuration optimized for ECMAScript modules with Angular-specific transformations and ESM support.

68

69

```typescript { .api }

70

/**

71

* Creates a Jest preset configuration for ECMAScript modules

72

* @param options - Optional configuration options for the preset

73

* @returns Complete Jest configuration object for ESM projects

74

*/

75

function createEsmPreset(options?: EsmPresetOptionsType): EsmPresetType;

76

77

interface EsmPresetOptionsType {

78

/** TypeScript configuration file path or options */

79

tsconfig?: TsJestTransformerOptions['tsconfig'];

80

/** AST transformers for custom TypeScript transformations */

81

astTransformers?: TsJestTransformerOptions['astTransformers'];

82

/** Babel configuration for additional transformations */

83

babelConfig?: TsJestTransformerOptions['babelConfig'];

84

/** TypeScript diagnostic options */

85

diagnostics?: TsJestTransformerOptions['diagnostics'];

86

/** Test environment configuration */

87

testEnvironment?: JSDOMEnvironment;

88

}

89

90

type EsmPresetType = BasePresetConfig &

91

Required<Pick<Config, 'extensionsToTreatAsEsm' | 'moduleNameMapper' | 'transformIgnorePatterns' | 'transform'>>;

92

```

93

94

**Usage Examples:**

95

96

```javascript

97

// jest.config.mjs

98

import { createEsmPreset } from 'jest-preset-angular/presets';

99

100

// Basic ESM configuration

101

export default createEsmPreset();

102

103

// With custom options

104

export default createEsmPreset({

105

tsconfig: '<rootDir>/tsconfig.spec.json',

106

testEnvironment: 'jest-preset-angular/environments/jest-jsdom-env'

107

});

108

```

109

110

### Base Preset Configuration

111

112

Shared configuration object used by both CJS and ESM presets.

113

114

```typescript { .api }

115

interface BasePresetConfig {

116

testEnvironment: JSDOMEnvironment;

117

moduleFileExtensions: Config['moduleFileExtensions'];

118

snapshotSerializers: Config['snapshotSerializers'];

119

}

120

121

const basePresetConfig: BasePresetConfig = {

122

testEnvironment: 'jsdom',

123

moduleFileExtensions: ['ts', 'html', 'js', 'json', 'mjs'],

124

snapshotSerializers: [

125

'jest-preset-angular/build/serializers/html-comment',

126

'jest-preset-angular/build/serializers/ng-snapshot',

127

'jest-preset-angular/build/serializers/no-ng-attributes'

128

]

129

};

130

131

interface Config {

132

testEnvironment?: string;

133

moduleFileExtensions?: string[];

134

snapshotSerializers?: string[];

135

transformIgnorePatterns?: string[];

136

transform?: Record<string, any>;

137

extensionsToTreatAsEsm?: string[];

138

moduleNameMapper?: Record<string, string>;

139

}

140

```

141

142

### Environment Types

143

144

Available test environment options for Angular testing.

145

146

```typescript { .api }

147

type JSDOMEnvironment = 'jsdom' | 'jest-preset-angular/environments/jest-jsdom-env';

148

```

149

150

The preset supports two JSDOM environments:

151

- `'jsdom'`: Standard Jest JSDOM environment

152

- `'jest-preset-angular/environments/jest-jsdom-env'`: Custom Angular-optimized JSDOM environment

153

154

### Configuration Differences

155

156

**CommonJS Preset Features:**

157

- Transform ignore patterns: `['node_modules/(?!(.*\\.mjs$|@angular/common/locales/.*\\.js$))']`

158

- Standard transform configuration for TypeScript, JavaScript, HTML, and SVG files

159

160

**ESM Preset Features:**

161

- Extensions treated as ESM: `['.ts']`

162

- Module name mapper for tslib: `{ tslib: 'tslib/tslib.es6.js' }`

163

- Transform ignore patterns: `['node_modules/(?!tslib)']`

164

- ESM-specific transform configuration with `useESM: true`

165

166

### Traditional Preset Usage

167

168

Alternative configuration method using Jest's built-in preset system for simpler setup.

169

170

```typescript { .api }

171

/**

172

* Traditional Jest preset configuration

173

* Uses the default CJS preset with standard Jest configuration

174

*/

175

interface TraditionalPresetConfig {

176

preset: 'jest-preset-angular';

177

setupFilesAfterEnv?: string[];

178

testEnvironment?: string;

179

}

180

```

181

182

**Usage Examples:**

183

184

```javascript

185

// jest.config.js - Traditional preset approach

186

module.exports = {

187

preset: 'jest-preset-angular',

188

setupFilesAfterEnv: ['<rootDir>/setup-jest.ts']

189

};

190

191

// With custom test environment

192

module.exports = {

193

preset: 'jest-preset-angular',

194

setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],

195

testEnvironment: 'jest-preset-angular/environments/jest-jsdom-env'

196

};

197

198

// With additional Jest options

199

module.exports = {

200

preset: 'jest-preset-angular',

201

setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],

202

collectCoverageFrom: [

203

'src/**/*.{ts,js}',

204

'!src/**/*.spec.ts',

205

'!src/main.ts',

206

'!src/polyfills.ts'

207

],

208

coverageDirectory: 'coverage',

209

coverageReporters: ['html', 'text-summary', 'cobertura']

210

};

211

```

212

213

**Traditional vs Factory Function Approach:**

214

215

```javascript

216

// Traditional preset (uses default CJS configuration)

217

module.exports = {

218

preset: 'jest-preset-angular',

219

setupFilesAfterEnv: ['<rootDir>/setup-jest.ts']

220

};

221

222

// Factory function approach (more control)

223

const { createCjsPreset } = require('jest-preset-angular/presets');

224

225

module.exports = createCjsPreset({

226

tsconfig: '<rootDir>/tsconfig.spec.json',

227

diagnostics: {

228

warnOnly: true

229

}

230

});

231

```

232

233

**Benefits of Traditional Preset:**

234

- Simpler configuration for basic use cases

235

- Familiar Jest preset syntax

236

- Automatically applies default Angular testing configuration

237

- Compatible with standard Jest tooling and IDE integrations

238

239

**Benefits of Factory Functions:**

240

- More granular control over configuration

241

- Explicit ESM vs CJS module system selection

242

- Customizable TypeScript and diagnostic options

243

- Better for complex or non-standard setups

244

245

### Setup File Integration

246

247

Both traditional and factory function approaches require setup files for Angular TestBed initialization:

248

249

```typescript

250

// setup-jest.ts (for zone-based apps)

251

import 'jest-preset-angular/setup-env/zone';

252

253

// setup-jest.ts (for zoneless apps)

254

import 'jest-preset-angular/setup-env/zoneless';

255

```

256

257

**Configuration:**

258

259

```javascript

260

// Both approaches use setupFilesAfterEnv

261

module.exports = {

262

preset: 'jest-preset-angular',

263

setupFilesAfterEnv: ['<rootDir>/setup-jest.ts']

264

};

265

266

// Or with factory function

267

const config = createCjsPreset();

268

config.setupFilesAfterEnv = ['<rootDir>/setup-jest.ts'];

269

module.exports = config;

270

```