forked from extern/egroupware
76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
/**
|
|
* This is the configuration file for automatic TypeScript testing
|
|
*
|
|
* It uses "web-test-runner" to run the tests, which are written using
|
|
* Mocha (https://mochajs.org/) & Chai Assertion Library (https://www.chaijs.com/api/assert/)
|
|
* Playwright (https://playwright.dev/docs/intro) runs the tests in actual browsers.
|
|
*
|
|
* Trouble getting tests to run? Try manually compiling TypeScript (source & tests), that seems to help.
|
|
*/
|
|
|
|
import fs from 'fs';
|
|
import {playwrightLauncher} from '@web/test-runner-playwright';
|
|
import {esbuildPlugin} from '@web/dev-server-esbuild';
|
|
|
|
// Get tests for web components (in their own directory)
|
|
const webComponents = fs.readdirSync('api/js/etemplate')
|
|
.filter(
|
|
dir => fs.statSync(`api/js/etemplate/${dir}`).isDirectory() && fs.existsSync(`api/js/etemplate/${dir}/test`),
|
|
)
|
|
.map(dir => `api/js/etemplate/${dir}/test`);
|
|
|
|
// Add any test files in app/js/test/
|
|
const appJS = fs.readdirSync('.')
|
|
.filter(
|
|
dir => fs.existsSync(`${dir}/js`) && fs.existsSync(`${dir}/js/test`) && fs.statSync(`${dir}/js/test`).isDirectory(),
|
|
)
|
|
|
|
|
|
export default {
|
|
nodeResolve: true,
|
|
coverageConfig: {
|
|
report: true,
|
|
reportDir: 'coverage',
|
|
threshold: {
|
|
statements: 90,
|
|
branches: 65,
|
|
functions: 80,
|
|
lines: 90,
|
|
},
|
|
},
|
|
testFramework: {
|
|
config: {
|
|
timeout: '3000',
|
|
},
|
|
},
|
|
browsers: [
|
|
playwrightLauncher({product: 'firefox', concurrency: 1}),
|
|
playwrightLauncher({product: 'chromium'}),
|
|
// Dependant on specific versions of shared libraries (libicuuc.so.66, latest is .67)
|
|
//playwrightLauncher({ product: 'webkit' }),
|
|
],
|
|
groups:
|
|
webComponents.map(pkg =>
|
|
{
|
|
return {
|
|
name: `${pkg}`,
|
|
files: `${pkg}/*.test.ts`
|
|
};
|
|
}).concat(
|
|
appJS.map(app =>
|
|
{
|
|
return {
|
|
name: app,
|
|
files: `${app}/js/**/*.test.ts`
|
|
}
|
|
}
|
|
)
|
|
)
|
|
,
|
|
|
|
plugins: [
|
|
// Handles typescript
|
|
esbuildPlugin({ts: true})
|
|
],
|
|
};
|