diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..c1e73de --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,26 @@ +// eslint-disable-next-line @typescript-eslint/no-require-imports +const webpackConfig = require("./webpack.config"); + +module.exports = function(config) { + config.set({ + + basePath: "", + frameworks: ["mocha", "chai"], + files: ["test/unit/*.ts"], + exclude: [], + preprocessors: { + "test/**/*.ts": ["webpack"] + }, + webpack: { + mode: "production", + node: webpackConfig.node, + module: webpackConfig.module, + resolve: webpackConfig.resolve + }, + reporters: ["spec"], + + browsers: ["ChromeHeadless"], + + singleRun: true + }); +}; \ No newline at end of file diff --git a/package.json b/package.json index c923038..0cafb2d 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,9 @@ "lint:fix": "yarn run lint --fix", "pretest": "yarn check-types", "prepublishOnly": "yarn build", - "test:unit": "nyc --cache-dir .nyc_output/.cache -r lcov -e .ts mocha --colors -r ts-node/register 'test/unit/**/*.test.ts' && nyc report", + "test:web:unit": "karma start", + "test:node:unit": "nyc --cache-dir .nyc_output/.cache -r lcov -e .ts mocha --colors -r ts-node/register 'test/unit/**/*.test.ts' && nyc report", + "test:unit": "yarn run test:node:unit && yarn run test:web:unit", "test": "yarn test:unit", "coverage": "codecov -F bls", "benchmark": "node -r ./.babel-register test/benchmarks" @@ -45,6 +47,14 @@ "@chainsafe/benchmark-utils": "^0.1.0", "js-sha256": "^0.9.0", "js-yaml": "^3.13.1", + "karma": "^4.4.1", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^3.1.0", + "karma-cli": "^2.0.0", + "karma-mocha": "^1.3.0", + "karma-spec-reporter": "^0.0.32", + "karma-webpack": "^4.0.2", + "ts-loader": "^6.2.1", "webpack": "^4.30.0", "webpack-cli": "^3.3.2" } diff --git a/webpack.config.js b/webpack.config.js index 28f9f3c..3953a1f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,6 +1,18 @@ module.exports = { - mode: "production", - node: { - fs: "empty" - } + entry: "./src/index.ts", + mode: "production", + node: { + fs: "empty" + }, + output: { + filename: "dist/bundle.js" + }, + resolve: { + extensions: [".ts", ".js"] + }, + module: { + rules: [ + {test: /\.ts$/, use: {loader: "ts-loader", options: {transpileOnly: true}}} + ] + } }; \ No newline at end of file