web: Adjust Wdio MaxInstances, add Knip (#11089)
- Adjust the WebdriverIO configuration so that `maxInstances` can be set by the environment - `MAX_INSTANCES=1 CI=true npm run test` will run the headless tests from your command line. - `MAX_INSTANCES=1 npm run test-watch` if you want to watch the test run in-browser. - Adds `knip` import tracing facility for linting. - Knip can be accessed by `npm run lint:imports`. Running `MAX_INSTANCES=10` (the default) would sometimes create conflicts and overwhelm the test runner, leaving you with 11 open instances of Chrome and no way to know which one is the one you *don't* want to close. A better choice is `MAX_INSTANCES=1 npm run test-watch`, which would allow the developer to watch the test run serially. Knip adds a new linting feature: tracking down which imports are not used, are not exported correctly, or shouldn't have been exported at all. Despite the "zero-config" promise, it still required significant configuration to handle the wide variety of "strengths" of ESlint configurations, as well as pointers to our entries and reminders that web components may export their classes but their actual use is as part of the component registry. Knip's analyzer produces a lot of false positives. It is not intended to be used as part of the CI/CD pipeline; it is there to help developers figure out what can and should be cleaned up manually. Co-authored-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
48
web/scripts/knip.config.ts
Normal file
48
web/scripts/knip.config.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import { type KnipConfig } from "knip";
|
||||
|
||||
const config: KnipConfig = {
|
||||
"entry": [
|
||||
"./src/admin/AdminInterface/AdminInterface.ts",
|
||||
"./src/user/UserInterface.ts",
|
||||
"./src/flow/FlowInterface.ts",
|
||||
"./src/standalone/api-browser/index.ts",
|
||||
"./src/enterprise/rac/index.ts",
|
||||
"./src/standalone/loading/index.ts",
|
||||
"./src/polyfill/poly.ts",
|
||||
],
|
||||
"project": ["src/**/*.ts", "src/**/*.js", "./scripts/*.mjs", ".storybook/*.ts"],
|
||||
// "ignore": ["src/**/*.test.ts", "src/**/*.stories.ts"],
|
||||
// Prevent Knip from complaining about web components, which export their classes but also
|
||||
// export their registration, and we don't always use both.
|
||||
"ignoreExportsUsedInFile": true,
|
||||
"typescript": {
|
||||
config: ["tsconfig.json"],
|
||||
},
|
||||
"wireit": {
|
||||
config: ["package.json"],
|
||||
},
|
||||
"storybook": {
|
||||
config: [".storybook/{main,test-runner}.{js,ts}"],
|
||||
entry: [
|
||||
".storybook/{manager,preview}.{js,jsx,ts,tsx}",
|
||||
"**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))",
|
||||
],
|
||||
project: [".storybook/**/*.{js,jsx,ts,tsx}"],
|
||||
},
|
||||
"eslint": {
|
||||
entry: [
|
||||
"eslint.config.mjs",
|
||||
"scripts/eslint.precommit.mjs",
|
||||
"scripts/eslint.nightmare.mjs",
|
||||
"scripts/eslint-precommit.mjs",
|
||||
"scripts/eslint-nightmare.mjs",
|
||||
"scripts/eslint.mjs",
|
||||
],
|
||||
config: ["package.json"],
|
||||
},
|
||||
"webdriver-io": {
|
||||
config: ["wdio.conf.js"],
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
Reference in New Issue
Block a user