Config
XBell provides some configuration options to help you test better. You can write configuration options through the xbell.config.ts
file in the root directory, and "xbell" will read it when it starts.
xbell.config.ts
import type { XBellConfig } from 'xbell';
const config: XBellConfig = {
browser: {
headless: false,
},
include: ['**/*.{test,spec}.{js,ts,jsx,tsx}'],
};
export default config;
setup
teardown
maxThreads
- Type: <number>
- Default: Number of CPU
include
- Type: <string[]>
- Default:
['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}']
exclude
- Type: <string[]>
- default
['**/node_modules/**', '**/dist/**']
browser
Browser Configuration
browser.headless
- Type: <boolean>
- Default:
true
Whether to use headless mode
browser.devtools
browser.viewport
browser.storageState
- Type: <{ width: number; height: number; }>
- Default:
{ width: 1280, height: 700 }
coverage
coverage.enable
- Type: <boolean>
- Default:
false
Whether to enable coverage
coverage.include
- Type: <string[]>
coverage.exclude
- Type: <string[]>
- Default:
[ '**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}', '**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**', '**/{xbell,playwright,karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress}.config.*' ]
projects
XBell supports running multiple test projects. You can use projects
for different testing purposes.
For example, different projects
correspond to different data environments, or different projects
correspond to different browser viewport, or even different projects
correspond to different test directories.
project.name
Project Name
xbell.config.ts
export default = {
projects: [
{ name: 'project1' },
],
};
import { test } from 'xbell';
test.browser('project1', ({ project, expect }) => {
expect(project.name).toBe('project1');
});
$ xbell --projects project1
project.data
project.config
Type: <XBellConfig>
Each project is allowed to have an independent test configuration, inheriting the root configuration by default.
export default {
projects: [
{
name: 'e2e-project',
config: {
include: ['**/*.e2e.ts']
}
}
]
}