-
-
Notifications
You must be signed in to change notification settings - Fork 282
Expand file tree
/
Copy pathkarma.conf.ts
More file actions
130 lines (113 loc) · 5.18 KB
/
karma.conf.ts
File metadata and controls
130 lines (113 loc) · 5.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Karma configuration
// Generated on Tue Jul 02 2019 17:18:30 GMT+0200 (Central European Summer Time)
import * as path from 'path';
import type { TransformCallback, TransformContext } from 'karma-typescript';
import type { Config } from 'karma';
module.exports = (config: Config): void => {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine', 'karma-typescript'],
// list of files / patterns to load in the browser
files: ['./__karma__/jest.ts', './test-utils/*.ts', 'packages/*/src/**/*.ts'],
// list of files / patterns to exclude
exclude: [
'packages/cli/**',
'packages/formatters/src/pretty.ts',
'packages/formatters/src/github-actions.ts',
'packages/formatters/src/sarif.ts',
'packages/formatters/src/index.node.ts',
'packages/ruleset-bundler/src/plugins/commonjs.ts',
'**/*.jest.test.ts',
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'packages/*/src/**/*.ts': ['karma-typescript'],
'./__karma__/**/*.ts': ['karma-typescript'],
'./test-utils/*.ts': ['karma-typescript'],
},
// @ts-expect-error: non-standard - karmaTypeScriptConfig
karmaTypescriptConfig: {
...require('./tsconfig.json'),
include: ['**/*.ts'],
exclude: ['packages/cli', 'node_modules'],
bundlerOptions: {
resolve: {
alias: {
'@stoplight/spectral-test-utils': require.resolve('./test-utils/browser/index.js'),
'@stoplight/spectral-test-utils/matchers': path.join(__dirname, './test-utils/matchers.ts'),
nimma: require.resolve('./node_modules/nimma/dist/legacy/cjs/index.js'),
'nimma/fallbacks': require.resolve('./node_modules/nimma/dist/legacy/cjs/fallbacks/index.js'),
'nimma/legacy': require.resolve('./node_modules/nimma/dist/legacy/cjs/index.js'),
'node-fetch': require.resolve('./__karma__/fetch'),
'^rollup$': 'rollup/dist/rollup.browser.js',
fs: require.resolve('./__karma__/fs'),
process: require.resolve('./__mocks__/process'),
perf_hooks: require.resolve('./__karma__/perf_hooks'),
fsevents: require.resolve('./__karma__/fsevents'),
},
},
acornOptions: {
ecmaVersion: 13,
},
transforms: [
require('karma-typescript-es6-transform')({
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
],
}),
function (context: TransformContext, callback: TransformCallback) {
// you may ask why on earth do we need this...,
// so this is to make sure `cjs` extensions are treated as actual scripts and not text files
// https://github.com/monounity/karma-typescript/blob/master/packages/karma-typescript/src/bundler/bundle-item.ts#L18 does not have cjs extension listed, so our file is not treated as script, and eventually require-ing it leads to a typeerror, since we get a string instead
// luckily it's an OR with rhs being `this.transformedScript` expression, so all we need to do is to set it to true (which we do below)
const err: any = void 0; // needed because typings are incorrect and expect Error only
if (context.module.includes('@stoplight/ordered-object-literal')) {
// needed to set a flag transformedScript on BundledItem described above, https://github.com/monounity/karma-typescript/blob/master/packages/karma-typescript/src/bundler/transformer.ts#L94
return callback(err, { dirty: true, transformedScript: true });
}
return callback(err, false);
},
],
},
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'karma-typescript'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// // enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: ['--no-sandbox'],
},
},
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity,
});
};