Warning: This tool is under development. Breaking changes make occur anytime and some functionality might not be well tested. Do not rely on it for anything other than experiments.
Supports only Webpack 4 not 5
(if using the chrome
runner) A recent Google Chrome browser should be installed
Version 12 or greater of NodeJS should be installed
The Kakoune Editor should be installed
Python and Virtualenv should be installed (only needed for review app)
# A new webpack app
mkdir app1
cd app1
mkdir src
npm init
# Install the plugin and related dependencies
npm i kiwi-webpack-plugin webpack@4 webpack-cli webpack-dev-server chai
create webpack.config.js
const KiwiPlugin = require('kiwi-webpack-plugin');
module.exports = {
entry: './src/index.js',
// target: 'node', // use this if using the 'node' runner
// Enable source maps
devtool: 'source-map',
plugins: [
new KiwiPlugin({
testEntry: './src/tests.js',
// Run the chrome browser instance in headless mode (in background without window)
headless: true,
// when building once (not watching) do process.exit(1)
// if any tests failed
stopBuildOnFail: true,
runner: 'chrome', // can also be 'node'
}),
],
}
create src/index.js
export function someFunction() {
return 1234;
};
create src/tests.js
import { expect } from 'chai';
import { someFunction } from './index';
describe('Test Module', () => {
it('test addition', () => {
expect(1233 + 1).to.equal(someFunction());
});
});
add to package.json
"scripts": {
"start": "webpack-dev-server -w"
},
finally, run
npm start
and in another shell tab open src/tests.js
in Kakoune
kak src/tests.js
Install types - only the "describe" and "it" jasmine-like globals are supported
npm i @types/jasmine @types/chai
add to tsconfig.json
{
"compilerOptions": {
"sourceMap": true
...
Add excludeChunks: ['kiwi-tests']
like so:
{
plugins: [
new HtmlWebpackPlugin({
title: 'App',
excludeChunks: ['kiwi-tests'],
}),
new KiwiPlugin({ testEntry: './src/tests.js', headless: true }),
],
}
Run npm start
.
Run an example in the examples
dir.
or for console.log
debugging:
add console.log(1)
in a source file
Replace kakoune_interface_tests
with the test file of choice if needed.
npm i; npm start
# In another shell session
npm i -g nodemon
nodemon dist/kakoune_interface_tests.js
# or
nodemon dist/unit_tests.js
Using Kakoune Interface Tests:
edit src/kakoune_interface_tests.ts
The test file itself is used to display interface items
# Build the minimal example with source maps
(cd examples/minimal && npm i && npm run build)
npm i
npm test