@eui/cli 21.0.0-next.36 → 21.0.0-next.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/eui-cli.js CHANGED
@@ -11,9 +11,6 @@ const scriptIndex = args.findIndex(
11
11
  x === 'build-app' ||
12
12
  x === 'serve-app' ||
13
13
  x === 'lint-app' ||
14
- x === 'generate-sprite' ||
15
- x === 'generate-app-metadata' ||
16
- x === 'help' ||
17
14
  x === 'inject-config-app'
18
15
  );
19
16
  const script = scriptIndex === -1 ? args[0] : args[scriptIndex];
@@ -26,10 +23,6 @@ switch (script) {
26
23
  case 'build-app':
27
24
  case 'serve-app':
28
25
  case 'lint-app':
29
- case 'generate-translations':
30
- case 'generate-sprite':
31
- case 'generate-app-metadata':
32
- case 'help':
33
26
  case 'inject-config-app': {
34
27
  let genScript = script;
35
28
  if (script === '' || script === undefined) {
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ const build = require('../../lib/app-utils/build');
4
+
5
+ Promise.resolve()
6
+ .then(() => {
7
+ return build.injectAppConfig();
8
+ })
9
+ .catch((e) => {
10
+ console.error(e);
11
+ process.exit(1);
12
+ });
@@ -6,16 +6,6 @@ const execSync = childProcess.execSync;
6
6
 
7
7
  const utils = require('../utils');
8
8
 
9
- // const execa = require('execa');
10
-
11
- // const tools = require('../../tools');
12
- // const mavenUtils = require('../../maven-utils');
13
- // const configUtils = require('../../../csdr/config/config-utils');
14
- // const versionUtils = require('../../../csdr/version/version-utils');
15
-
16
- // const preBuildUtils = require('../../pre-build/pre-build-utils');
17
-
18
-
19
9
  module.exports.run = () => {
20
10
  let {
21
11
  skipLint,
@@ -28,7 +18,6 @@ module.exports.run = () => {
28
18
  dryRun,
29
19
  maxSpaceSize,
30
20
  statsJson,
31
- extraWebpackConfig,
32
21
  ci,
33
22
  deployUrl,
34
23
  sourceMap,
@@ -42,14 +31,16 @@ module.exports.run = () => {
42
31
  const ng = path.resolve(process.cwd(), 'node_modules', '@angular', 'cli', 'bin', 'ng');
43
32
 
44
33
  return Promise.resolve()
45
- // .then(() => {
46
- // return preBuildUtils.projects.preBuild(currentProject, envTarget, true, configEnvTarget);
47
- // })
34
+ .then(() => {
35
+ if (configEnvTarget) {
36
+ return injectAppConfig();
37
+ }
38
+ })
48
39
 
49
40
  .then(() => {
50
41
  if (!skipLint) {
51
42
  utils.logInfo(`running ng lint ${prjName}`);
52
- execSync(`ng lint ${prjName}`);
43
+ execSync(`ng lint ${prjName}`, { cwd: process.cwd(), stdio: 'inherit' });
53
44
  }
54
45
  })
55
46
 
@@ -141,30 +132,8 @@ module.exports.run = () => {
141
132
  }
142
133
  })
143
134
 
144
- // .then(() => {
145
- // const projectVersion = parseInt(configUtils.projects.getProjectEuiVersion(currentProject));
146
-
147
- // if (currentProject.build && currentProject.build.skipBrowserOutputPath) {
148
- // if (currentProject.build.esbuild || projectVersion >= 18) {
149
- // utils.copydir(path.join(currentProject.paths.rootPath, 'dist', 'browser'), path.join(currentProject.paths.rootPath, 'dist'));
150
- // utils.remove(path.join(currentProject.paths.rootPath, 'dist', 'browser'));
151
- // }
152
- // }
153
- // })
154
-
155
- // .then(() => {
156
- // const desti18ncompiledPath = path.join(currentProject.paths.rootPath, 'dist', 'assets', 'i18n-compiled');
157
- // if (utils.isDirExists(desti18ncompiledPath)) {
158
- // utils.logTitle('Post-build assets i18n-compiled folder content:');
159
- // const i18nfiles = utils.getFiles(desti18ncompiledPath);
160
- // console.log(i18nfiles);
161
- // }
162
-
163
- // const mediaAssetsPath = path.join(currentProject.paths.rootPath, 'dist', 'assets', 'media');
164
- // if (utils.isDirExists(mediaAssetsPath)) {
165
- // utils.copydirFiles(mediaAssetsPath, path.join(currentProject.paths.rootPath, 'dist', 'media'));
166
- // }
167
- // })
135
+
136
+
168
137
 
169
138
  .catch((e) => {
170
139
  throw e;
@@ -172,3 +141,43 @@ module.exports.run = () => {
172
141
  };
173
142
 
174
143
 
144
+ const injectAppConfig = module.exports.injectAppConfig = () => {
145
+ return Promise.resolve()
146
+ .then(() => {
147
+ let { configEnvTarget } = utils.getArgs();
148
+
149
+ if (!configEnvTarget) {
150
+ throw new Error('configEnvTarget not provided as argument');
151
+ }
152
+
153
+ // set default if not envTarget provided
154
+ let envFilePath = path.join(process.cwd(), 'src/assets/config', `env-json-config.json`);
155
+
156
+ utils.logInfo(`Executing configuration replacement for : ${configEnvTarget} environment`);
157
+
158
+ let envOpenidPrefix = 'env-json-config-';
159
+ let openidConfigAssetsFolder = 'assets/config';
160
+
161
+ envFilePath = path.join(process.cwd(), `src/${openidConfigAssetsFolder}`, `${envOpenidPrefix}${configEnvTarget}.json`);
162
+
163
+ if (!utils.isFileExists(envFilePath)) {
164
+ utils.logError(`Cannot find environment config to inject : `);
165
+ utils.logError(`${envFilePath} missing...`);
166
+ return;
167
+ }
168
+
169
+ let rootTargetFolder = 'src';
170
+ let replacedFile;
171
+
172
+ replacedFile = `${rootTargetFolder}/assets/env-json-config.json`;
173
+
174
+ utils.logInfo(`Replacing default ${replacedFile} file by ${envFilePath} content`);
175
+ utils.copy(envFilePath, path.join(process.cwd(), `${replacedFile}`));
176
+
177
+ utils.logSuccess();
178
+ })
179
+
180
+ .catch((e) => {
181
+ throw e;
182
+ });
183
+ }
@@ -0,0 +1,121 @@
1
+ {
2
+ "root": true,
3
+ "ignorePatterns": [
4
+ "**/node_modules/**",
5
+ "**/dist/**",
6
+ "**/coverage/**",
7
+ "**/e2e/**",
8
+ "**/test/**",
9
+ "**/testing/**"
10
+ ],
11
+ "overrides": [
12
+ {
13
+ "files": [
14
+ "*.ts"
15
+ ],
16
+ "parserOptions": {
17
+ "project": [
18
+ "tsconfig.json",
19
+ "e2e/tsconfig.json"
20
+ ],
21
+ "createDefaultProgram": true
22
+ },
23
+ "extends": [
24
+ "eslint:recommended",
25
+ "plugin:@typescript-eslint/recommended",
26
+ "plugin:@angular-eslint/recommended",
27
+ "plugin:@angular-eslint/template/process-inline-templates"
28
+ ],
29
+ "rules": {
30
+ "@angular-eslint/component-selector": [
31
+ "error",
32
+ {
33
+ "type": "element",
34
+ "prefix": ["app"],
35
+ "style": "kebab-case"
36
+ }
37
+ ],
38
+ "@angular-eslint/directive-selector": [
39
+ "error",
40
+ {
41
+ "type": "attribute",
42
+ "prefix": ["app"],
43
+ "style": "camelCase"
44
+ }
45
+ ],
46
+ "@typescript-eslint/ban-ts-comment": "off",
47
+ "@typescript-eslint/no-empty-object-type": "error",
48
+ "@typescript-eslint/no-unsafe-function-type": "error",
49
+ "@typescript-eslint/consistent-type-definitions": "off",
50
+ "@typescript-eslint/dot-notation": "off",
51
+ "@typescript-eslint/explicit-member-accessibility": [
52
+ "off",
53
+ {
54
+ "accessibility": "explicit"
55
+ }
56
+ ],
57
+ "@typescript-eslint/no-require-imports": "error",
58
+ "@typescript-eslint/no-unused-vars": "off",
59
+ "@typescript-eslint/no-var-requires": "error",
60
+ "@typescript-eslint/require-await": "error",
61
+ "brace-style": [
62
+ "error",
63
+ "1tbs"
64
+ ],
65
+ "id-blacklist": "off",
66
+ "id-match": "off",
67
+ "no-duplicate-case": "error",
68
+ "no-duplicate-imports": "off",
69
+ "no-invalid-this": "error",
70
+ "no-multiple-empty-lines": [
71
+ "error",
72
+ {
73
+ "max": 1
74
+ }
75
+ ],
76
+ "no-new-func": "error",
77
+ "no-redeclare": "off",
78
+ "@typescript-eslint/no-redeclare": [
79
+ "error"
80
+ ],
81
+ "no-template-curly-in-string": "error",
82
+ "no-underscore-dangle": "off",
83
+ "@typescript-eslint/naming-convention": [
84
+ "error",
85
+ {
86
+ "selector": "enum",
87
+ "format": [
88
+ "PascalCase",
89
+ "UPPER_CASE"
90
+ ]
91
+ }
92
+ ],
93
+ "@typescript-eslint/member-ordering": [
94
+ "error",
95
+ {
96
+ "default": [
97
+ "public-static-field",
98
+ "public-instance-field",
99
+ "private-static-field",
100
+ "private-instance-field",
101
+ "public-constructor",
102
+ "private-constructor",
103
+ "public-instance-method",
104
+ "protected-instance-method",
105
+ "private-instance-method"
106
+ ]
107
+ }
108
+ ]
109
+ }
110
+ },
111
+ {
112
+ "files": [
113
+ "*.html"
114
+ ],
115
+ "extends": [
116
+ "plugin:@angular-eslint/template/recommended"
117
+ ],
118
+ "rules": {}
119
+ }
120
+ ]
121
+ }
@@ -132,11 +132,8 @@
132
132
  "lint": {
133
133
  "builder": "@angular-eslint/builder:lint",
134
134
  "options": {
135
- "lintFilePatterns": [
136
- "src/**/*.ts",
137
- "src/**/*.html"
138
- ],
139
- "eslintConfig": "eslint.config.js"
135
+ "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"],
136
+ "eslintConfig": ".eslintrc.json"
140
137
  }
141
138
  }
142
139
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eui-angular-app",
3
- "version": "21.0.0-next.36",
3
+ "version": "21.0.0-next.38",
4
4
  "license": "EUPL-1.1",
5
5
  "scripts": {
6
6
  "ng": "ng",
@@ -15,13 +15,11 @@
15
15
  "build-prod-skip-test": "eui-cli build-app --configuration=production-optimized --configEnvTarget=prod --skipTest",
16
16
  "build-prod-stats": "eui-cli build-app --configuration=production-optimized --configEnvTarget=prod --statsJson",
17
17
  "app:build": "eui-cli build-app",
18
- "app:inject-config": "eui-cli inject-config-app",
19
- "generate-changelog": "eui-cli generate-changelog",
20
- "generate-sprite": "eui-cli generate-sprite"
18
+ "app:inject-config": "eui-cli inject-config-app"
21
19
  },
22
20
  "private": true,
23
21
  "dependencies": {
24
- "@eui/deps-base": "21.0.0-next.36"
22
+ "@eui/deps-base": "21.0.0-next.38"
25
23
  },
26
24
  "devDependencies": {
27
25
  "npm-run-all": "4.1.5",
@@ -29,12 +27,7 @@
29
27
  "nodemon": "3.1.11",
30
28
  "lowdb": "1.0.0",
31
29
  "body-parser": "1.20.3",
32
- "express": "4.21.2",
33
- "typescript-eslint": "8.46.3",
34
- "angular-eslint": "20.6.0",
35
- "eslint": "^9.39.0",
36
- "vitest": "^4.0.0",
37
- "jsdom": "^27.2.0"
30
+ "express": "4.21.2"
38
31
  },
39
32
  "resolutions": {
40
33
  "semver": ">=7.5.2",
@@ -8,6 +8,7 @@ import { EuiServiceStatus } from '@eui/base';
8
8
  import { provideHttpClient, withInterceptorsFromDi } from "@angular/common/http";
9
9
  import { describe, it, beforeEach, expect, vi } from 'vitest';
10
10
 
11
+ // eslint-disable-next-line
11
12
  type SpyObj<T> = { [K in keyof T]: T[K] extends (...args: any[]) => any ? ReturnType<typeof vi.fn> : T[K] };
12
13
 
13
14
  describe('AppStarterService', () => {
@@ -12,6 +12,7 @@ import { Observable, of } from 'rxjs';
12
12
  import { TranslateModule } from '@ngx-translate/core';
13
13
  import { describe, it, beforeEach, expect, vi } from 'vitest';
14
14
 
15
+ // eslint-disable-next-line
15
16
  type SpyObj<T> = { [K in keyof T]: T[K] extends (...args: any[]) => any ? ReturnType<typeof vi.fn> : T[K] };
16
17
 
17
18
  describe('AppComponent', () => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eui-angular-app",
3
- "version": "21.0.0-next.36",
3
+ "version": "21.0.0-next.38",
4
4
  "license": "EUPL-1.1",
5
5
  "scripts": {
6
6
  "ng": "ng",
@@ -141,38 +141,13 @@
141
141
  "builder": "@angular-eslint/builder:lint",
142
142
  "options": {
143
143
  "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"],
144
- "eslintConfig": "src/.eslintrc.json"
144
+ "eslintConfig": ".eslintrc.json"
145
145
  }
146
146
  },
147
147
  "test": {
148
- "builder": "@angular-devkit/build-angular:karma",
148
+ "builder": "@angular/build:unit-test",
149
149
  "options": {
150
- "polyfills": ["zone.js", "zone.js/testing"],
151
- "tsConfig": "src/tsconfig.spec.json",
152
- "karmaConfig": "src/karma.conf.js",
153
- "inlineStyleLanguage": "scss",
154
- "assets": [
155
- {
156
- "glob": "**/*",
157
- "input": "node_modules/@eui/core/assets/",
158
- "output": "./assets"
159
- },
160
- {
161
- "glob": "**/*",
162
- "input": "node_modules/@eui/styles/dist/assets/ecl",
163
- "output": "./assets/images/ecl"
164
- },
165
- {
166
- "glob": "**/*",
167
- "input": "node_modules/@eui/styles/dist/assets",
168
- "output": "./assets"
169
- },
170
- {
171
- "glob": "**/*",
172
- "input": "node_modules/@eui/ecl/assets/",
173
- "output": "./assets"
174
- }
175
- ]
150
+ "tsConfig": "src/tsconfig.spec.json"
176
151
  }
177
152
  }
178
153
  }
@@ -141,38 +141,13 @@
141
141
  "builder": "@angular-eslint/builder:lint",
142
142
  "options": {
143
143
  "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"],
144
- "eslintConfig": "src/.eslintrc.json"
144
+ "eslintConfig": ".eslintrc.json"
145
145
  }
146
146
  },
147
147
  "test": {
148
- "builder": "@angular-devkit/build-angular:karma",
148
+ "builder": "@angular/build:unit-test",
149
149
  "options": {
150
- "polyfills": ["zone.js", "zone.js/testing"],
151
- "tsConfig": "src/tsconfig.spec.json",
152
- "karmaConfig": "src/karma.conf.js",
153
- "inlineStyleLanguage": "scss",
154
- "assets": [
155
- {
156
- "glob": "**/*",
157
- "input": "node_modules/@eui/core/assets/",
158
- "output": "./assets"
159
- },
160
- {
161
- "glob": "**/*",
162
- "input": "node_modules/@eui/styles/dist/assets/ecl",
163
- "output": "./assets/images/ecl"
164
- },
165
- {
166
- "glob": "**/*",
167
- "input": "node_modules/@eui/styles/dist/assets",
168
- "output": "./assets"
169
- },
170
- {
171
- "glob": "**/*",
172
- "input": "node_modules/@eui/ecl/assets/",
173
- "output": "./assets"
174
- }
175
- ]
150
+ "tsConfig": "src/tsconfig.spec.json"
176
151
  }
177
152
  }
178
153
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eui-angular-app",
3
- "version": "21.0.0-next.36",
3
+ "version": "21.0.0-next.38",
4
4
  "license": "EUPL-1.1",
5
5
  "scripts": {
6
6
  "ng": "ng",
@@ -12,27 +12,25 @@
12
12
  "build": "eui-cli build-app",
13
13
  "build-dev": "eui-cli build-app --configuration=development --configEnvTarget=dev",
14
14
  "build-prod": "eui-cli build-app --configuration=production-optimized --configEnvTarget=prod --skipLint --skipTest",
15
- "app:inject-config": "eui-cli inject-config-app",
16
- "generate-changelog": "eui-cli generate-changelog",
17
- "generate-sprite": "eui-cli generate-sprite"
15
+ "app:inject-config": "eui-cli inject-config-app"
18
16
  },
19
17
  "private": true,
20
18
  "dependencies": {
21
- "@angular/animations": "21.0.0",
22
- "@angular/common": "21.0.0",
23
- "@angular/compiler": "21.0.0",
24
- "@angular/core": "21.0.0",
25
- "@angular/forms": "21.0.0",
26
- "@angular/platform-browser": "21.0.0",
27
- "@angular/platform-browser-dynamic": "21.0.0",
28
- "@angular/router": "21.0.0",
29
- "@angular/elements": "21.0.0",
30
- "@angular/language-service": "21.0.0",
31
- "@angular/service-worker": "21.0.0",
32
- "@angular/cdk": "21.0.0",
33
- "@angular/material": "21.0.0",
34
- "@angular/material-moment-adapter": "21.0.0",
35
- "@angular-devkit/build-angular": "21.0.0",
19
+ "@angular/animations": "21.0.1",
20
+ "@angular/common": "21.0.1",
21
+ "@angular/compiler": "21.0.1",
22
+ "@angular/core": "21.0.1",
23
+ "@angular/forms": "21.0.1",
24
+ "@angular/platform-browser": "21.0.1",
25
+ "@angular/platform-browser-dynamic": "21.0.1",
26
+ "@angular/router": "21.0.1",
27
+ "@angular/elements": "21.0.1",
28
+ "@angular/language-service": "21.0.1",
29
+ "@angular/service-worker": "21.0.1",
30
+ "@angular/cdk": "21.0.1",
31
+ "@angular/material": "21.0.1",
32
+ "@angular/material-moment-adapter": "21.0.1",
33
+ "@angular-devkit/build-angular": "21.0.1",
36
34
  "rxjs": "7.8.2",
37
35
  "tslib": "2.8.1",
38
36
  "zone.js": "0.15.1",
@@ -48,17 +46,17 @@
48
46
  "pikaday": "1.8.2",
49
47
  "lodash-es": "4.17.21",
50
48
  "localforage": "1.10.0",
51
- "@eui/base": "21.0.0-next.36",
52
- "@eui/core": "21.0.0-next.36",
53
- "@eui/styles": "21.0.0-next.36",
54
- "@eui/components": "21.0.0-next.36",
55
- "@eui/ecl": "21.0.0-next.36"
49
+ "@eui/base": "21.0.0-next.38",
50
+ "@eui/core": "21.0.0-next.38",
51
+ "@eui/styles": "21.0.0-next.38",
52
+ "@eui/components": "21.0.0-next.38",
53
+ "@eui/ecl": "21.0.0-next.38"
56
54
  },
57
55
  "devDependencies": {
58
- "@angular/build": "21.0.0",
59
- "@angular/compiler-cli": "21.0.0",
60
- "@angular/cli": "21.0.0",
61
- "@eui/cli": "21.0.0-next.36",
56
+ "@angular/build": "21.0.1",
57
+ "@angular/compiler-cli": "21.0.1",
58
+ "@angular/cli": "21.0.1",
59
+ "@eui/cli": "21.0.0-next.38",
62
60
  "ng-packagr": "21.0.0",
63
61
  "typescript": "5.9.2",
64
62
  "npm-run-all": "4.1.5",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eui/cli",
3
- "version": "21.0.0-next.36",
3
+ "version": "21.0.0-next.38",
4
4
  "tag": "next",
5
5
  "license": "EUPL-1.1",
6
6
  "description": "eUI CLI app generator & tools",
@@ -1,41 +0,0 @@
1
- // TODO v21 - for openid config injection extracted from eUI tools
2
-
3
- // 'use strict';
4
-
5
- // const path = require('path');
6
-
7
- // const tools = require('../tools');
8
-
9
- // const injectionUtils = require('./injection/injection-utils');
10
- // const translationUtils = require('./translations/translation-utils');
11
-
12
- // module.exports.preBuild = (project, envTarget, build, configEnvTarget) => {
13
- // return Promise.resolve()
14
- // .then(() => {
15
- // tools.logTitle('PRE-BUILD : preparing the project...');
16
- // })
17
-
18
- // // openId files replacement and app config injection
19
- // .then(() => {
20
- // return injectionUtils.openid.injectConfig(project, configEnvTarget);
21
- // })
22
-
23
- // .catch((e) => {
24
- // throw e;
25
- // })
26
- // };
27
-
28
- // module.exports.processSvgAssets = (project) => {
29
- // return Promise.resolve()
30
- // .then(() => {
31
- // const svgsInPath = path.join(project.paths.rootPath, 'src', 'assets', 'svg');
32
- // const svgsSpritePath = path.join(svgsInPath, sprites);
33
- // const svgsSpriteFile = 'sprite.svg';
34
-
35
- // return svgUtils.generateSvgsSprite(svgsInPath, svgsSpritePath, svgsSpriteFile);
36
- // })
37
-
38
- // .catch((e) => {
39
- // throw e;
40
- // });
41
- // };
@@ -1,43 +0,0 @@
1
- // @ts-check
2
- const eslint = require("@eslint/js");
3
- const tseslint = require("typescript-eslint");
4
- const angular = require("angular-eslint");
5
-
6
- module.exports = tseslint.config(
7
- {
8
- files: ["**/*.ts"],
9
- extends: [
10
- eslint.configs.recommended,
11
- ...tseslint.configs.recommended,
12
- ...tseslint.configs.stylistic,
13
- ...angular.configs.tsRecommended,
14
- ],
15
- processor: angular.processInlineTemplates,
16
- rules: {
17
- "@angular-eslint/directive-selector": [
18
- "error",
19
- {
20
- type: "attribute",
21
- prefix: "app",
22
- style: "camelCase",
23
- },
24
- ],
25
- "@angular-eslint/component-selector": [
26
- "error",
27
- {
28
- type: "element",
29
- prefix: "app",
30
- style: "kebab-case",
31
- },
32
- ],
33
- },
34
- },
35
- {
36
- files: ["**/*.html"],
37
- extends: [
38
- ...angular.configs.templateRecommended,
39
- ...angular.configs.templateAccessibility,
40
- ],
41
- rules: {},
42
- },
43
- );
@@ -1,47 +0,0 @@
1
- function get(config) {
2
-
3
- return {
4
- basePath: '',
5
- frameworks: ['jasmine', '@angular-devkit/build-angular'],
6
- plugins: [
7
- require('karma-jasmine'),
8
- require('karma-chrome-launcher'),
9
- require('karma-jasmine-html-reporter'),
10
- require('karma-coverage-istanbul-reporter'),
11
- require('karma-coverage'),
12
- require('karma-sourcemap-loader'),
13
- require('@angular-devkit/build-angular/plugins/karma')
14
- ],
15
- client:{
16
- clearContext: false // leave Jasmine Spec Runner output visible in browser
17
- },
18
- coverageIstanbulReporter: {
19
- reports: [ 'html', 'lcovonly' ],
20
- fixWebpackSourcePaths: true
21
- },
22
- angularCli: {
23
- environment: 'dev'
24
- },
25
- reporters: ['progress', 'kjhtml'],
26
- port: 9876,
27
- colors: true,
28
- logLevel: config.LOG_INFO,
29
- autoWatch: true,
30
- browsers: ['ChromeHeadlessCustom'],
31
- customLaunchers: {
32
- ChromeHeadlessCustom: {
33
- base: 'ChromeHeadless',
34
- flags: [
35
- '--no-sandbox',
36
- ],
37
- },
38
- },
39
- singleRun: false
40
- }
41
- }
42
-
43
- module.exports = function (config) {
44
- config.set(
45
- get(config)
46
- );
47
- }