2022-06-28 19:30:50 +00:00
|
|
|
const coverage = process.env.COVERAGE;
|
|
|
|
const path = require('path');
|
2024-04-15 18:39:39 +00:00
|
|
|
const { DefinePlugin, NormalModuleReplacementPlugin } = require('webpack');
|
|
|
|
|
2022-06-28 19:30:50 +00:00
|
|
|
const basePath = '.';
|
|
|
|
const absoluteBasePath = path.resolve(path.join(__dirname, basePath));
|
|
|
|
|
2024-04-15 18:39:39 +00:00
|
|
|
module.exports = function (karma) {
|
2022-06-08 20:31:17 +00:00
|
|
|
karma.set({
|
2024-04-15 18:39:39 +00:00
|
|
|
frameworks: ['webpack', 'mocha', 'sinon-chai'],
|
2022-06-08 20:31:17 +00:00
|
|
|
|
2024-04-15 18:39:39 +00:00
|
|
|
files: ['test/spec/**/*Spec.js'],
|
2022-06-08 20:31:17 +00:00
|
|
|
|
2024-04-15 18:39:39 +00:00
|
|
|
reporters: ['dots'],
|
2022-06-08 20:31:17 +00:00
|
|
|
|
|
|
|
preprocessors: {
|
2024-04-15 18:39:39 +00:00
|
|
|
'test/spec/**/*Spec.js': ['webpack', 'env'],
|
2022-06-08 20:31:17 +00:00
|
|
|
},
|
|
|
|
|
2024-04-15 18:39:39 +00:00
|
|
|
browsers: ['ChromeHeadless'],
|
2022-06-08 20:31:17 +00:00
|
|
|
|
|
|
|
browserNoActivityTimeout: 30000,
|
|
|
|
|
|
|
|
singleRun: true,
|
|
|
|
autoWatch: false,
|
|
|
|
|
2022-06-28 19:30:50 +00:00
|
|
|
webpack: {
|
|
|
|
mode: 'development',
|
|
|
|
module: {
|
|
|
|
rules: [
|
|
|
|
{
|
|
|
|
test: /\.(css|bpmn)$/,
|
2024-04-15 18:39:39 +00:00
|
|
|
use: 'raw-loader',
|
2022-06-28 19:30:50 +00:00
|
|
|
},
|
|
|
|
{
|
2024-04-15 18:39:39 +00:00
|
|
|
test: /\.m?jsx?$/,
|
2022-06-28 19:30:50 +00:00
|
|
|
exclude: /node_modules/,
|
|
|
|
use: {
|
|
|
|
loader: 'babel-loader',
|
|
|
|
options: {
|
|
|
|
plugins: [
|
2024-04-15 18:39:39 +00:00
|
|
|
[
|
|
|
|
'@babel/plugin-transform-react-jsx',
|
|
|
|
{
|
|
|
|
importSource: '@bpmn-io/properties-panel/preact',
|
|
|
|
runtime: 'automatic',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
2022-06-28 19:30:50 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
test: /\.svg$/,
|
2024-04-15 18:39:39 +00:00
|
|
|
use: ['react-svg-loader'],
|
|
|
|
},
|
|
|
|
].concat(
|
|
|
|
coverage
|
|
|
|
? {
|
|
|
|
test: /\.js$/,
|
|
|
|
use: {
|
|
|
|
loader: 'istanbul-instrumenter-loader',
|
|
|
|
options: { esModules: true },
|
|
|
|
},
|
|
|
|
enforce: 'post',
|
|
|
|
include: /src\.*/,
|
|
|
|
exclude: /node_modules/,
|
|
|
|
}
|
|
|
|
: []
|
|
|
|
),
|
2022-06-28 19:30:50 +00:00
|
|
|
},
|
|
|
|
plugins: [
|
|
|
|
new DefinePlugin({
|
|
|
|
// @barmac: process.env has to be defined to make @testing-library/preact work
|
2024-04-15 18:39:39 +00:00
|
|
|
'process.env': {},
|
2022-06-28 19:30:50 +00:00
|
|
|
}),
|
2024-04-15 18:39:39 +00:00
|
|
|
new NormalModuleReplacementPlugin(/^preact(\/[^/]+)?$/, function (
|
|
|
|
resource
|
|
|
|
) {
|
|
|
|
const replMap = {
|
|
|
|
'preact/hooks': path.resolve(
|
|
|
|
'node_modules/@bpmn-io/properties-panel/preact/hooks/dist/hooks.module.js'
|
|
|
|
),
|
|
|
|
'preact/jsx-runtime': path.resolve(
|
|
|
|
'node_modules/@bpmn-io/properties-panel/preact/jsx-runtime/dist/jsxRuntime.module.js'
|
|
|
|
),
|
|
|
|
preact: path.resolve(
|
|
|
|
'node_modules/@bpmn-io/properties-panel/preact/dist/preact.module.js'
|
|
|
|
),
|
|
|
|
};
|
2022-06-28 19:30:50 +00:00
|
|
|
|
2024-04-15 18:39:39 +00:00
|
|
|
const replacement = replMap[resource.request];
|
2022-06-28 19:30:50 +00:00
|
|
|
|
2024-04-15 18:39:39 +00:00
|
|
|
if (!replacement) {
|
|
|
|
return;
|
2022-06-28 19:30:50 +00:00
|
|
|
}
|
2024-04-15 18:39:39 +00:00
|
|
|
|
|
|
|
resource.request = replacement;
|
|
|
|
}),
|
2022-06-28 19:30:50 +00:00
|
|
|
new NormalModuleReplacementPlugin(
|
|
|
|
/^preact\/hooks/,
|
2024-04-15 18:39:39 +00:00
|
|
|
path.resolve(
|
|
|
|
'node_modules/@bpmn-io/properties-panel/preact/hooks/dist/hooks.module.js'
|
|
|
|
)
|
|
|
|
),
|
2022-06-28 19:30:50 +00:00
|
|
|
],
|
|
|
|
resolve: {
|
2024-04-15 18:39:39 +00:00
|
|
|
extensions: ['', '.js', '.jsx', '.tsx'],
|
|
|
|
mainFields: ['browser', 'module', 'main'],
|
2022-06-28 19:30:50 +00:00
|
|
|
alias: {
|
2024-04-15 18:39:39 +00:00
|
|
|
preact: '@bpmn-io/properties-panel/preact',
|
|
|
|
react: '@bpmn-io/properties-panel/preact/compat',
|
|
|
|
'react-dom': '@bpmn-io/properties-panel/preact/compat',
|
2022-06-28 19:30:50 +00:00
|
|
|
},
|
2024-04-15 18:39:39 +00:00
|
|
|
modules: ['node_modules', absoluteBasePath],
|
2022-06-28 19:30:50 +00:00
|
|
|
},
|
2024-04-15 18:39:39 +00:00
|
|
|
devtool: 'eval-source-map',
|
|
|
|
},
|
2022-06-08 20:31:17 +00:00
|
|
|
});
|
|
|
|
};
|