@o3r/testing 14.0.0-next.2 → 14.0.0-next.3
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/mocks/mock-component-generator.d.ts +2 -2
- package/mocks/mock-component-generator.js +2 -2
- package/mocks/mock-component-generator.js.map +1 -1
- package/package.json +57 -48
- package/schematics/fixture-to-component/index.d.ts.map +1 -1
- package/schematics/fixture-to-component/index.js +6 -5
- package/schematics/fixture-to-component/index.js.map +1 -1
- package/schematics/ng-add/fixture/index.js +1 -1
- package/schematics/ng-add/fixture/index.js.map +1 -1
- package/schematics/ng-add/index.d.ts.map +1 -1
- package/schematics/ng-add/index.js +16 -56
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/jest/index.d.ts +13 -0
- package/schematics/ng-add/jest/index.d.ts.map +1 -0
- package/schematics/ng-add/jest/index.js +76 -0
- package/schematics/ng-add/jest/index.js.map +1 -0
- package/schematics/ng-add/{templates → jest/templates}/workspace/jest.config.ut.js.template +7 -14
- package/schematics/ng-add/playwright/index.d.ts +4 -0
- package/schematics/ng-add/playwright/index.d.ts.map +1 -1
- package/schematics/ng-add/playwright/index.js +9 -0
- package/schematics/ng-add/playwright/index.js.map +1 -1
- /package/schematics/fixture-to-component/templates/{__name__.fixture.ts.template → __name__-fixture.ts.template} +0 -0
- /package/schematics/ng-add/{templates → jest/templates}/project/jest.config.js.template +0 -0
- /package/schematics/ng-add/{templates → jest/templates}/project/testing/setup-jest.ts.template +0 -0
- /package/schematics/ng-add/{templates → jest/templates}/workspace/jest.config.js.template +0 -0
- /package/schematics/ng-add/{templates → jest/templates}/workspace/tsconfig.jest.json.template +0 -0
|
@@ -9,7 +9,7 @@ import { Type } from '@angular/core';
|
|
|
9
9
|
* @param config.isControlValueAccessor
|
|
10
10
|
* @example
|
|
11
11
|
* ```typescript
|
|
12
|
-
* // hero.
|
|
12
|
+
* // hero.ts
|
|
13
13
|
* \@Component({selector: 'hero'})
|
|
14
14
|
* class HeroComponent {
|
|
15
15
|
* \@Input() name: string;
|
|
@@ -17,7 +17,7 @@ import { Type } from '@angular/core';
|
|
|
17
17
|
* }
|
|
18
18
|
*
|
|
19
19
|
* // mock generation
|
|
20
|
-
* class MockComponent extends generateMockComponent('hero.
|
|
20
|
+
* class MockComponent extends generateMockComponent('hero.ts') {}
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
export declare function generateMockComponent<T = Record<string, unknown>>(componentPath: string, config?: {
|
|
@@ -113,7 +113,7 @@ function getSelector(parentNode, source, isInDecorator = false, isInComponentCon
|
|
|
113
113
|
* @param config.isControlValueAccessor
|
|
114
114
|
* @example
|
|
115
115
|
* ```typescript
|
|
116
|
-
* // hero.
|
|
116
|
+
* // hero.ts
|
|
117
117
|
* \@Component({selector: 'hero'})
|
|
118
118
|
* class HeroComponent {
|
|
119
119
|
* \@Input() name: string;
|
|
@@ -121,7 +121,7 @@ function getSelector(parentNode, source, isInDecorator = false, isInComponentCon
|
|
|
121
121
|
* }
|
|
122
122
|
*
|
|
123
123
|
* // mock generation
|
|
124
|
-
* class MockComponent extends generateMockComponent('hero.
|
|
124
|
+
* class MockComponent extends generateMockComponent('hero.ts') {}
|
|
125
125
|
* ```
|
|
126
126
|
*/
|
|
127
127
|
function generateMockComponent(componentPath, config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-component-generator.js","sourceRoot":"","sources":["../../src/mocks/mock-component-generator.ts"],"names":[],"mappings":";;AAmIA,sDAyCC;AA5KD,wCAKuB;AACvB,0CAEwB;AACxB,iCAAiC;AAEjC;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAa,EAAE,MAAqB;IACvD,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,IAAa,EAAE,MAAqB;IACxD,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,WAAoB,EAAE,SAAuB,EAAE,MAAqB;IACrF,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACvG,IAAI,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,IAAI,IAAwB,CAAC;QAC7B,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,UAAmB,EAAE,MAAqB;IACzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,UAAmB,EAAE,MAAqB,EAAE,aAAa,GAAG,KAAK,EAAE,mBAAmB,GAAG,KAAK;IACjH,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,GAAuB,CAAC;IAC5B,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,IAAI,aAAa,IAAI,mBAAmB,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YACzG,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,aAAa,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,aAAa,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;YAC1F,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,aAAa,IAAI,cAAc,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjF,GAAG,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACrG,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,qBAAqB,CAA8B,aAAqB,EAAE,MAAgE;IACxJ,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG;QAKX;YACE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBACjB,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAE,IAAY,CAAC,UAAU,CAAC,GAAG,IAAI,mBAAY,EAAO,CAAC,CAAC;YAChF,IAAI,MAAM,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;gBACjC,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,IAAA,gBAAS,EAAC;QACf,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE;QAChC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;QAC3C,MAAM;QACN,OAAO;QACP,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,sBAAsB,CAAC;YAC1C,CAAC,CAAC;gBACA,SAAS,EAAE;oBACT;wBACE,OAAO,EAAE,yBAAiB;wBAC1B,WAAW,EAAE,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;wBACnC,KAAK,EAAE,IAAI;qBACZ;iBACF;aACF;YACD,CAAC,CAAC,EAAE;KACP,CAAC,CAAC,IAAI,CAAY,CAAC;AACtB,CAAC","sourcesContent":["import {\n Component,\n EventEmitter,\n forwardRef,\n Type,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport * as ts from 'typescript';\n\n/**\n * Determine if the node in an input field\n * @param node Typescript AST Node\n * @param source Typescript source file\n */\nfunction isInputNode(node: ts.Node, source: ts.SourceFile): node is ts.Decorator {\n return ts.isDecorator(node) && node.getText(source).startsWith('@Input');\n}\n\n/**\n * Determine if the node in an output field\n * @param node Typescript AST Node\n * @param source Typescript source file\n */\nfunction isOutputNode(node: ts.Node, source: ts.SourceFile): node is ts.Decorator {\n return ts.isDecorator(node) && node.getText(source).startsWith('@Output');\n}\n\n/**\n * Get the name of the input / output\n * @param currentNode Typescript AST Node\n * @param decorator Current Input/Output decorator node\n * @param source Typescript source file\n */\nfunction getIOName(currentNode: ts.Node, decorator: ts.Decorator, source: ts.SourceFile): string | undefined {\n const nameInDecorator = decorator.getText(source).match(/@(input|output) *\\( *([\"'](.*)[\"'])? *\\) */i);\n if (nameInDecorator && nameInDecorator[3]) {\n return nameInDecorator[3];\n } else {\n let name: string | undefined;\n currentNode.forEachChild((node) => {\n if (ts.isIdentifier(node)) {\n name = node.getText(source);\n }\n });\n return name;\n }\n}\n\n/**\n * Get the list of Input and Output of a component\n * @param parentNode Typescript AST Node\n * @param source Typescript source file\n */\nfunction parseIO(parentNode: ts.Node, source: ts.SourceFile): { outputs: string[]; inputs: string[] } {\n const outputs: string[] = [];\n const inputs: string[] = [];\n\n parentNode.forEachChild((node) => {\n if (isInputNode(node, source)) {\n const name = getIOName(parentNode, node, source);\n if (name) {\n inputs.push(name);\n }\n } else if (isOutputNode(node, source)) {\n const name = getIOName(parentNode, node, source);\n if (name) {\n outputs.push(name);\n }\n } else {\n const childrenResult = parseIO(node, source);\n inputs.push(...childrenResult.inputs);\n outputs.push(...childrenResult.outputs);\n }\n });\n\n return {\n outputs,\n inputs\n };\n}\n\n/**\n * Get the selector of an angular class\n * @param parentNode Typescript AST Node\n * @param source Typescript source file\n * @param isInDecorator true if the recursive execution is in a decorator\n * @param isInComponentConfig true if the recursive execution is in a component decorator configuration\n */\nfunction getSelector(parentNode: ts.Node, source: ts.SourceFile, isInDecorator = false, isInComponentConfig = false) {\n let foundDecorator = false;\n let foundSelector = false;\n let ret: string | undefined;\n parentNode.forEachChild((node) => {\n if (isInDecorator && isInComponentConfig && ts.isIdentifier(node) && node.getText(source) === 'selector') {\n foundSelector = true;\n } else if (foundSelector && ts.isStringLiteral(node)) {\n ret = node.getText(source).replace(/[\"']/gi, '');\n } else if (isInDecorator && ts.isIdentifier(node) && node.getText(source) === 'Component') {\n foundDecorator = true;\n } else if (isInDecorator && foundDecorator && ts.isObjectLiteralExpression(node)) {\n ret = ret || getSelector(node, source, isInDecorator, true);\n } else {\n ret = ret || getSelector(node, source, isInDecorator || ts.isDecorator(node), isInComponentConfig);\n }\n });\n return ret;\n}\n\n/**\n * Generate a mock class base on a component file\n * @param componentPath Path to the component file to mock\n * @param config Object containing the following configurations:\n * template: should be provided if the template contain `<ng-content></ng-content>`\n * isControlValueAccessor: should be provided if the component extends ControlValueAccessor\n * @param config.template\n * @param config.isControlValueAccessor\n * @example\n * ```typescript\n * // hero.
|
|
1
|
+
{"version":3,"file":"mock-component-generator.js","sourceRoot":"","sources":["../../src/mocks/mock-component-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n EventEmitter,\n forwardRef,\n Type,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport * as ts from 'typescript';\n\n/**\n * Determine if the node in an input field\n * @param node Typescript AST Node\n * @param source Typescript source file\n */\nfunction isInputNode(node: ts.Node, source: ts.SourceFile): node is ts.Decorator {\n return ts.isDecorator(node) && node.getText(source).startsWith('@Input');\n}\n\n/**\n * Determine if the node in an output field\n * @param node Typescript AST Node\n * @param source Typescript source file\n */\nfunction isOutputNode(node: ts.Node, source: ts.SourceFile): node is ts.Decorator {\n return ts.isDecorator(node) && node.getText(source).startsWith('@Output');\n}\n\n/**\n * Get the name of the input / output\n * @param currentNode Typescript AST Node\n * @param decorator Current Input/Output decorator node\n * @param source Typescript source file\n */\nfunction getIOName(currentNode: ts.Node, decorator: ts.Decorator, source: ts.SourceFile): string | undefined {\n const nameInDecorator = decorator.getText(source).match(/@(input|output) *\\( *([\"'](.*)[\"'])? *\\) */i);\n if (nameInDecorator && nameInDecorator[3]) {\n return nameInDecorator[3];\n } else {\n let name: string | undefined;\n currentNode.forEachChild((node) => {\n if (ts.isIdentifier(node)) {\n name = node.getText(source);\n }\n });\n return name;\n }\n}\n\n/**\n * Get the list of Input and Output of a component\n * @param parentNode Typescript AST Node\n * @param source Typescript source file\n */\nfunction parseIO(parentNode: ts.Node, source: ts.SourceFile): { outputs: string[]; inputs: string[] } {\n const outputs: string[] = [];\n const inputs: string[] = [];\n\n parentNode.forEachChild((node) => {\n if (isInputNode(node, source)) {\n const name = getIOName(parentNode, node, source);\n if (name) {\n inputs.push(name);\n }\n } else if (isOutputNode(node, source)) {\n const name = getIOName(parentNode, node, source);\n if (name) {\n outputs.push(name);\n }\n } else {\n const childrenResult = parseIO(node, source);\n inputs.push(...childrenResult.inputs);\n outputs.push(...childrenResult.outputs);\n }\n });\n\n return {\n outputs,\n inputs\n };\n}\n\n/**\n * Get the selector of an angular class\n * @param parentNode Typescript AST Node\n * @param source Typescript source file\n * @param isInDecorator true if the recursive execution is in a decorator\n * @param isInComponentConfig true if the recursive execution is in a component decorator configuration\n */\nfunction getSelector(parentNode: ts.Node, source: ts.SourceFile, isInDecorator = false, isInComponentConfig = false) {\n let foundDecorator = false;\n let foundSelector = false;\n let ret: string | undefined;\n parentNode.forEachChild((node) => {\n if (isInDecorator && isInComponentConfig && ts.isIdentifier(node) && node.getText(source) === 'selector') {\n foundSelector = true;\n } else if (foundSelector && ts.isStringLiteral(node)) {\n ret = node.getText(source).replace(/[\"']/gi, '');\n } else if (isInDecorator && ts.isIdentifier(node) && node.getText(source) === 'Component') {\n foundDecorator = true;\n } else if (isInDecorator && foundDecorator && ts.isObjectLiteralExpression(node)) {\n ret = ret || getSelector(node, source, isInDecorator, true);\n } else {\n ret = ret || getSelector(node, source, isInDecorator || ts.isDecorator(node), isInComponentConfig);\n }\n });\n return ret;\n}\n\n/**\n * Generate a mock class base on a component file\n * @param componentPath Path to the component file to mock\n * @param config Object containing the following configurations:\n * template: should be provided if the template contain `<ng-content></ng-content>`\n * isControlValueAccessor: should be provided if the component extends ControlValueAccessor\n * @param config.template\n * @param config.isControlValueAccessor\n * @example\n * ```typescript\n * // hero.ts\n * \\@Component({selector: 'hero'})\n * class HeroComponent {\n * \\@Input() name: string;\n * \\@Output() doSomething: EventEmitter<void>\n * }\n *\n * // mock generation\n * class MockComponent extends generateMockComponent('hero.ts') {}\n * ```\n */\nexport function generateMockComponent<T = Record<string, unknown>>(componentPath: string, config?: { template?: string; isControlValueAccessor?: boolean }): Type<T> {\n const program = ts.createProgram([componentPath], {});\n const source = program.getSourceFile(componentPath);\n if (!source) {\n throw new Error('No Source found');\n }\n\n const { outputs, inputs } = parseIO(source, source);\n const mock = class {\n public writeValue: any;\n public registerOnChange: any;\n public registerOnTouched: any;\n\n constructor() {\n Object.keys(outputs)\n .forEach((outputName) => (this as any)[outputName] = new EventEmitter<any>());\n if (config && config.isControlValueAccessor) {\n this.writeValue = () => {};\n this.registerOnChange = () => {};\n this.registerOnTouched = () => {};\n }\n }\n };\n\n return Component({\n template: config?.template || '',\n selector: getSelector(source, source) || '',\n inputs,\n outputs,\n ...(config && config.isControlValueAccessor)\n ? {\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => mock),\n multi: true\n }\n ]\n }\n : {}\n })(mock) as Type<T>;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o3r/testing",
|
|
3
|
-
"version": "14.0.0-next.
|
|
3
|
+
"version": "14.0.0-next.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
"otter-module"
|
|
12
12
|
],
|
|
13
13
|
"main": "public_api.js",
|
|
14
|
-
"typings": "public_api.d.ts",
|
|
15
14
|
"types": "public_api.d.ts",
|
|
16
15
|
"sideEffects": false,
|
|
17
16
|
"scripts": {
|
|
@@ -100,16 +99,17 @@
|
|
|
100
99
|
"@material/slider": "^14.0.0",
|
|
101
100
|
"@ngrx/store": "^20.0.0",
|
|
102
101
|
"@ngx-translate/core": "^15.0.0 || ~16.0.4",
|
|
103
|
-
"@o3r/core": "
|
|
104
|
-
"@o3r/
|
|
105
|
-
"@o3r/
|
|
102
|
+
"@o3r/core": "~14.0.0-next.3",
|
|
103
|
+
"@o3r/eslint-config": "~14.0.0-next.3",
|
|
104
|
+
"@o3r/localization": "~14.0.0-next.3",
|
|
105
|
+
"@o3r/schematics": "~14.0.0-next.3",
|
|
106
106
|
"@playwright/test": "^1.49.0",
|
|
107
107
|
"@schematics/angular": "^20.0.0",
|
|
108
|
+
"eslint": "~9.39.0",
|
|
108
109
|
"pixelmatch": "^7.0.0",
|
|
109
110
|
"pngjs": "^7.0.0",
|
|
110
111
|
"rxjs": "^7.8.1",
|
|
111
112
|
"temporal-polyfill": "^0.3.0",
|
|
112
|
-
"ts-node": "~10.9.2",
|
|
113
113
|
"type-fest": "^4.30.1",
|
|
114
114
|
"typescript": "^5.9.0"
|
|
115
115
|
},
|
|
@@ -141,6 +141,9 @@
|
|
|
141
141
|
"@o3r/core": {
|
|
142
142
|
"optional": true
|
|
143
143
|
},
|
|
144
|
+
"@o3r/eslint-config": {
|
|
145
|
+
"optional": true
|
|
146
|
+
},
|
|
144
147
|
"@o3r/localization": {
|
|
145
148
|
"optional": true
|
|
146
149
|
},
|
|
@@ -167,84 +170,90 @@
|
|
|
167
170
|
}
|
|
168
171
|
},
|
|
169
172
|
"dependencies": {
|
|
170
|
-
"@o3r/schematics": "
|
|
173
|
+
"@o3r/schematics": "~14.0.0-next.3",
|
|
171
174
|
"esbuild": "~0.25.1",
|
|
172
175
|
"module-from-string": "^3.2.0",
|
|
173
176
|
"tslib": "^2.6.2"
|
|
174
177
|
},
|
|
175
178
|
"devDependencies": {
|
|
176
179
|
"@amadeus-it-group/kassette": "^1.7.0",
|
|
177
|
-
"@angular-devkit/build-angular": "~20.
|
|
178
|
-
"@angular-devkit/core": "~20.
|
|
179
|
-
"@angular-devkit/schematics": "~20.
|
|
180
|
-
"@angular/cli": "~20.
|
|
181
|
-
"@angular/common": "~20.
|
|
182
|
-
"@angular/compiler": "~20.
|
|
183
|
-
"@angular/compiler-cli": "~20.
|
|
184
|
-
"@angular/core": "~20.
|
|
185
|
-
"@angular/forms": "~20.
|
|
186
|
-
"@angular/platform-browser": "~20.
|
|
187
|
-
"@angular/platform-browser-dynamic": "~20.
|
|
180
|
+
"@angular-devkit/build-angular": "~20.3.11",
|
|
181
|
+
"@angular-devkit/core": "~20.3.11",
|
|
182
|
+
"@angular-devkit/schematics": "~20.3.11",
|
|
183
|
+
"@angular/cli": "~20.3.11",
|
|
184
|
+
"@angular/common": "~20.3.13",
|
|
185
|
+
"@angular/compiler": "~20.3.13",
|
|
186
|
+
"@angular/compiler-cli": "~20.3.13",
|
|
187
|
+
"@angular/core": "~20.3.13",
|
|
188
|
+
"@angular/forms": "~20.3.13",
|
|
189
|
+
"@angular/platform-browser": "~20.3.13",
|
|
190
|
+
"@angular/platform-browser-dynamic": "~20.3.13",
|
|
188
191
|
"@babel/core": "~7.28.0",
|
|
189
|
-
"@babel/preset-typescript": "~7.
|
|
190
|
-
"@compodoc/compodoc": "^1.1.
|
|
192
|
+
"@babel/preset-typescript": "~7.28.0",
|
|
193
|
+
"@compodoc/compodoc": "^1.1.32",
|
|
191
194
|
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
|
|
192
195
|
"@material/slider": "^14.0.0",
|
|
193
|
-
"@ngrx/store": "~20.
|
|
196
|
+
"@ngrx/store": "~20.1.0",
|
|
194
197
|
"@ngx-translate/core": "~16.0.4",
|
|
195
|
-
"@nx/eslint-plugin": "~21.
|
|
196
|
-
"@nx/jest": "~21.
|
|
197
|
-
"@o3r/build-helpers": "
|
|
198
|
-
"@o3r/core": "
|
|
199
|
-
"@o3r/eslint-plugin": "
|
|
200
|
-
"@o3r/localization": "
|
|
201
|
-
"@o3r/test-helpers": "
|
|
202
|
-
"@playwright/test": "~1.
|
|
203
|
-
"@schematics/angular": "~20.
|
|
204
|
-
"@stylistic/eslint-plugin": "~5.
|
|
205
|
-
"@swc/helpers": "~0.5.
|
|
206
|
-
"@types/jest": "~
|
|
207
|
-
"@types/node": "~22.
|
|
198
|
+
"@nx/eslint-plugin": "~21.6.0",
|
|
199
|
+
"@nx/jest": "~21.6.0",
|
|
200
|
+
"@o3r/build-helpers": "~14.0.0-next.3",
|
|
201
|
+
"@o3r/core": "~14.0.0-next.3",
|
|
202
|
+
"@o3r/eslint-plugin": "~14.0.0-next.3",
|
|
203
|
+
"@o3r/localization": "~14.0.0-next.3",
|
|
204
|
+
"@o3r/test-helpers": "~14.0.0-next.3",
|
|
205
|
+
"@playwright/test": "~1.57.0",
|
|
206
|
+
"@schematics/angular": "~20.3.11",
|
|
207
|
+
"@stylistic/eslint-plugin": "~5.6.0",
|
|
208
|
+
"@swc/helpers": "~0.5.17",
|
|
209
|
+
"@types/jest": "~30.0.0",
|
|
210
|
+
"@types/node": "~22.18.0",
|
|
208
211
|
"@types/pixelmatch": "^5.2.3",
|
|
209
212
|
"@types/pngjs": "^6.0.0",
|
|
210
|
-
"@typescript-eslint/parser": "~8.
|
|
211
|
-
"angular-eslint": "~20.
|
|
213
|
+
"@typescript-eslint/parser": "~8.47.0",
|
|
214
|
+
"angular-eslint": "~20.6.0",
|
|
212
215
|
"concurrently": "^9.1.0",
|
|
213
216
|
"cpy-cli": "^6.0.0",
|
|
214
|
-
"eslint": "~9.
|
|
217
|
+
"eslint": "~9.39.0",
|
|
215
218
|
"eslint-import-resolver-node": "~0.3.9",
|
|
216
219
|
"eslint-import-resolver-typescript": "~4.4.0",
|
|
217
220
|
"eslint-plugin-import": "~2.32.0",
|
|
218
221
|
"eslint-plugin-import-newlines": "~1.4.0",
|
|
219
|
-
"eslint-plugin-jest": "~29.
|
|
222
|
+
"eslint-plugin-jest": "~29.1.0",
|
|
220
223
|
"eslint-plugin-jsdoc": "~54.7.0",
|
|
221
224
|
"eslint-plugin-prefer-arrow": "~1.2.3",
|
|
222
225
|
"eslint-plugin-unicorn": "~60.0.0",
|
|
223
|
-
"eslint-plugin-unused-imports": "~4.
|
|
226
|
+
"eslint-plugin-unused-imports": "~4.3.0",
|
|
224
227
|
"globals": "^16.0.0",
|
|
225
228
|
"isomorphic-fetch": "~3.0.0",
|
|
226
|
-
"jest": "~
|
|
227
|
-
"jest-environment-jsdom": "~
|
|
229
|
+
"jest": "~30.2.0",
|
|
230
|
+
"jest-environment-jsdom": "~30.2.0",
|
|
228
231
|
"jest-junit": "~16.0.0",
|
|
229
|
-
"jest-preset-angular": "~
|
|
230
|
-
"jest-util": "~
|
|
232
|
+
"jest-preset-angular": "~16.0.0",
|
|
233
|
+
"jest-util": "~30.2.0",
|
|
234
|
+
"jsdom": "^26.1.0",
|
|
231
235
|
"jsonc-eslint-parser": "~2.4.0",
|
|
232
|
-
"nx": "~21.
|
|
233
|
-
"pid-from-port": "^1.1.3",
|
|
236
|
+
"nx": "~21.6.0",
|
|
234
237
|
"pixelmatch": "^7.0.0",
|
|
235
238
|
"pngjs": "^7.0.0",
|
|
236
239
|
"rxjs": "^7.8.1",
|
|
237
240
|
"semver": "^7.5.2",
|
|
238
241
|
"temporal-polyfill": "^0.3.0",
|
|
239
242
|
"ts-jest": "~29.4.0",
|
|
240
|
-
"ts-node": "~10.9.2",
|
|
241
243
|
"type-fest": "^4.30.1",
|
|
242
244
|
"typescript": "~5.9.2",
|
|
243
|
-
"typescript-eslint": "~8.
|
|
245
|
+
"typescript-eslint": "~8.47.0",
|
|
244
246
|
"zone.js": "~0.15.0"
|
|
245
247
|
},
|
|
246
248
|
"generatorDependencies": {
|
|
247
|
-
"@angular-builders/jest": "~20.0.0"
|
|
249
|
+
"@angular-builders/jest": "~20.0.0",
|
|
250
|
+
"@types/jest": "~30.0.0",
|
|
251
|
+
"jest": "~30.2.0",
|
|
252
|
+
"jest-environment-jsdom": "~30.2.0",
|
|
253
|
+
"jest-preset-angular": "~16.0.0",
|
|
254
|
+
"jest-util": "~30.2.0",
|
|
255
|
+
"rimraf": "^6.0.1",
|
|
256
|
+
"ts-jest": "~29.4.0"
|
|
248
257
|
},
|
|
249
258
|
"schematics": "./collection.json",
|
|
250
259
|
"ng-update": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/fixture-to-component/index.ts"],"names":[],"mappings":"AAKA,OAAO,EASL,IAAI,EAKL,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/fixture-to-component/index.ts"],"names":[],"mappings":"AAKA,OAAO,EASL,IAAI,EAKL,MAAM,4BAA4B,CAAC;AAiBpC,OAAO,KAAK,EACV,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAWlB;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAmG1E;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,wBAAuC,CAAC"}
|
|
@@ -9,7 +9,7 @@ const change_1 = require("@schematics/angular/utility/change");
|
|
|
9
9
|
const ts = require("typescript");
|
|
10
10
|
const checkFixture = (componentPath, tree, baseFileName) => {
|
|
11
11
|
const files = [
|
|
12
|
-
node_path_1.posix.join((0, node_path_1.dirname)(componentPath), `${baseFileName}
|
|
12
|
+
node_path_1.posix.join((0, node_path_1.dirname)(componentPath), `${baseFileName}-fixture.ts`)
|
|
13
13
|
];
|
|
14
14
|
if (files.some((file) => tree.exists(file))) {
|
|
15
15
|
throw new schematics_2.O3rCliError(`Unable to add fixture to this component because it already has at least one of these files: ${files.join(', ')}.`);
|
|
@@ -22,12 +22,13 @@ const checkFixture = (componentPath, tree, baseFileName) => {
|
|
|
22
22
|
function ngAddFixtureFn(options) {
|
|
23
23
|
return async (tree, context) => {
|
|
24
24
|
try {
|
|
25
|
-
const baseFileName = (0,
|
|
25
|
+
const baseFileName = (0, schematics_2.getComponentBaseFileName)(options.path);
|
|
26
26
|
const { name } = (0, schematics_2.getO3rComponentInfoOrThrowIfNotFound)(tree, options.path);
|
|
27
27
|
checkFixture(options.path, tree, baseFileName);
|
|
28
28
|
const properties = {
|
|
29
29
|
...options,
|
|
30
|
-
componentFixture:
|
|
30
|
+
componentFixture: (0, schematics_2.getComponentFixtureName)(baseFileName),
|
|
31
|
+
componentName: name,
|
|
31
32
|
name: baseFileName
|
|
32
33
|
};
|
|
33
34
|
const createFixtureFilesRule = (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./templates'), [
|
|
@@ -35,7 +36,7 @@ function ngAddFixtureFn(options) {
|
|
|
35
36
|
(0, schematics_1.renameTemplateFiles)(),
|
|
36
37
|
(0, schematics_1.move)((0, node_path_1.dirname)(options.path))
|
|
37
38
|
]), schematics_1.MergeStrategy.Overwrite);
|
|
38
|
-
const specFilePath = options.specFilePath || node_path_1.posix.join((0, node_path_1.dirname)(options.path), `${
|
|
39
|
+
const specFilePath = options.specFilePath || node_path_1.posix.join((0, node_path_1.dirname)(options.path), `${(0, node_path_1.basename)(options.path, '.ts')}.spec.ts`);
|
|
39
40
|
const updateSpecRule = (0, schematics_1.chain)([
|
|
40
41
|
(0, schematics_2.addImportsRule)(specFilePath, [
|
|
41
42
|
{
|
|
@@ -43,7 +44,7 @@ function ngAddFixtureFn(options) {
|
|
|
43
44
|
importNames: ['O3rElement']
|
|
44
45
|
},
|
|
45
46
|
{
|
|
46
|
-
from: `./${baseFileName}
|
|
47
|
+
from: `./${baseFileName}-fixture`,
|
|
47
48
|
importNames: [`${properties.componentFixture}Component`]
|
|
48
49
|
}
|
|
49
50
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/fixture-to-component/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/fixture-to-component/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ function updateFixtureConfig(options) {
|
|
|
49
49
|
tsconfigCompilerOptions.esModuleInterop = true;
|
|
50
50
|
tsconfigCompilerOptions.outDir = 'test';
|
|
51
51
|
tsconfigFile.include ||= [];
|
|
52
|
-
tsconfigFile.include.concat(['**/fixture/', '**/*.fixture.ts', '**/fixtures.ts']);
|
|
52
|
+
tsconfigFile.include.concat(['**/fixture/', '**/*.fixture.ts', '**/*-fixture.ts', '**/fixtures.ts']);
|
|
53
53
|
tree.overwrite(tsconfigPath, JSON.stringify(tsconfigFile, null, 2));
|
|
54
54
|
}
|
|
55
55
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/ng-add/fixture/index.ts"],"names":[],"mappings":";;AAqBA,kDAuFC;AA5GD,2DAKoC;AACpC,gDAGyB;AAIzB,iCAAiC;AAEjC;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,OAAkG;IACpI,MAAM,QAAQ,GAAG,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;IAClE;;;;OAIG;IACH,MAAM,kBAAkB,GAAS,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QACzE,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnH,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC;QACjF,MAAM,YAAY,GAAuB,UAAU,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEzG,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAiB,CAAC;YACjE,YAAY,CAAC,eAAe,KAAK,EAAE,CAAC;YAEpC,MAAM,uBAAuB,GAAG,YAAY,CAAC,eAAe,CAAC;YAE7D,uBAAuB,CAAC,GAAG,GAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,IAAI,EAAE,CAAC;gBACpE,KAAK;gBACL,QAAQ;gBACR,YAAY;aACH,CAAC,MAAM,CAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAA,6BAAgB,EAAC,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACtG,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;gBAC7B,uBAAuB,CAAC,KAAK,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACpD,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7C,CAAC;gBACD,uBAAuB,CAAC,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACjH,CAAC;YACD,uBAAuB,CAAC,eAAe,GAAG,IAAI,CAAC;YAC/C,uBAAuB,CAAC,MAAM,GAAG,MAAM,CAAC;YACxC,YAAY,CAAC,OAAO,KAAK,EAAE,CAAC;YAC5B,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/ng-add/fixture/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,IAAI,EAGL,MAAM,4BAA4B,CAAC;AAyIpC;;;GAGG;AACH,eAAO,MAAM,KAAK,wBAAgC,CAAC"}
|
|
@@ -7,6 +7,7 @@ const prompt_1 = require("@angular/cli/src/utilities/prompt");
|
|
|
7
7
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
8
8
|
const schematics_2 = require("@o3r/schematics");
|
|
9
9
|
const fixture_1 = require("./fixture");
|
|
10
|
+
const jest_1 = require("./jest");
|
|
10
11
|
const playwright_1 = require("./playwright");
|
|
11
12
|
/**
|
|
12
13
|
* List of external dependencies to be added to the project as peer dependencies
|
|
@@ -32,9 +33,16 @@ function ngAddFn(options) {
|
|
|
32
33
|
const testPackageJsonPath = path.resolve(__dirname, '..', '..', 'package.json');
|
|
33
34
|
const packageJson = JSON.parse(fs.readFileSync(testPackageJsonPath, { encoding: 'utf8' }));
|
|
34
35
|
const workspaceProject = options.projectName ? (0, schematics_2.getWorkspaceConfig)(tree)?.projects[options.projectName] : undefined;
|
|
35
|
-
const workingDirectory = workspaceProject?.root || '.';
|
|
36
36
|
const projectType = workspaceProject?.projectType || 'application';
|
|
37
37
|
let installJest;
|
|
38
|
+
let isEslintInstalled;
|
|
39
|
+
try {
|
|
40
|
+
require.resolve('@o3r/eslint-config');
|
|
41
|
+
isEslintInstalled = true;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
isEslintInstalled = false;
|
|
45
|
+
}
|
|
38
46
|
const testFramework = options.testingFramework || (0, schematics_2.getTestFramework)((0, schematics_2.getWorkspaceConfig)(tree), context);
|
|
39
47
|
switch (testFramework) {
|
|
40
48
|
case 'jest': {
|
|
@@ -67,7 +75,12 @@ function ngAddFn(options) {
|
|
|
67
75
|
(0, fixture_1.updateFixtureConfig)(options),
|
|
68
76
|
(0, schematics_2.removePackages)(['@otter/testing']),
|
|
69
77
|
(0, schematics_2.addVsCodeRecommendations)(['Orta.vscode-jest']),
|
|
70
|
-
installPlaywright
|
|
78
|
+
...installPlaywright
|
|
79
|
+
? [
|
|
80
|
+
(0, playwright_1.updatePlaywright)(options)
|
|
81
|
+
]
|
|
82
|
+
: [],
|
|
83
|
+
...installJest ? [(0, jest_1.setupJest)(options)] : [],
|
|
71
84
|
(0, schematics_2.registerPackageCollectionSchematics)(packageJson),
|
|
72
85
|
(0, schematics_2.setupSchematicsParamsForProject)({
|
|
73
86
|
'@o3r/core:component': schematicsDefaultOptions,
|
|
@@ -76,63 +89,10 @@ function ngAddFn(options) {
|
|
|
76
89
|
}, options.projectName),
|
|
77
90
|
(0, schematics_2.ngAddDependenciesRule)(options, testPackageJsonPath, {
|
|
78
91
|
dependenciesToInstall,
|
|
79
|
-
devDependenciesToInstall: devDependenciesToInstall.concat(installJest
|
|
80
|
-
? [
|
|
81
|
-
'@angular-builders/jest',
|
|
82
|
-
'@types/jest',
|
|
83
|
-
'jest',
|
|
84
|
-
'jest-environment-jsdom',
|
|
85
|
-
'jest-preset-angular',
|
|
86
|
-
'jest-util',
|
|
87
|
-
'ts-jest'
|
|
88
|
-
]
|
|
89
|
-
: [], installPlaywright
|
|
90
|
-
? [
|
|
91
|
-
'@playwright/test',
|
|
92
|
-
'rimraf'
|
|
93
|
-
]
|
|
94
|
-
: [])
|
|
92
|
+
devDependenciesToInstall: devDependenciesToInstall.concat(installJest ? (0, jest_1.jestDependencies)(isEslintInstalled) : [], installPlaywright ? playwright_1.playwrightDependencies : [])
|
|
95
93
|
}),
|
|
96
94
|
options.skipLinter ? (0, schematics_1.noop)() : (0, schematics_2.applyEditorConfig)()
|
|
97
95
|
];
|
|
98
|
-
if (installJest) {
|
|
99
|
-
if (workingDirectory === undefined) {
|
|
100
|
-
throw new schematics_2.O3rCliError(`Could not find working directory for project ${options.projectName || ''}`);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
if (workspaceProject) {
|
|
104
|
-
const packageJsonFile = tree.readJson(`${workingDirectory}/package.json`);
|
|
105
|
-
packageJsonFile.scripts ||= {};
|
|
106
|
-
packageJsonFile.scripts.test = 'jest';
|
|
107
|
-
tree.overwrite(`${workingDirectory}/package.json`, JSON.stringify(packageJsonFile, null, 2));
|
|
108
|
-
const rootRelativePath = path.posix.relative(workingDirectory, tree.root.path.replace(/^\//, './'));
|
|
109
|
-
const jestConfigFilesForProject = () => (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./templates/project'), [
|
|
110
|
-
(0, schematics_1.template)({
|
|
111
|
-
...options,
|
|
112
|
-
rootRelativePath,
|
|
113
|
-
isAngularSetup: tree.exists('/angular.json')
|
|
114
|
-
}),
|
|
115
|
-
(0, schematics_1.move)(workingDirectory),
|
|
116
|
-
(0, schematics_1.renameTemplateFiles)()
|
|
117
|
-
]), schematics_1.MergeStrategy.Overwrite);
|
|
118
|
-
rules.push(jestConfigFilesForProject);
|
|
119
|
-
}
|
|
120
|
-
if (tree.exists('/jest.config.js')) {
|
|
121
|
-
context.logger.info('Jest configuration files already exist at the root of the project.');
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
const jestConfigFilesForWorkspace = () => (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./templates/workspace'), [
|
|
125
|
-
(0, schematics_1.template)({
|
|
126
|
-
...options,
|
|
127
|
-
tsconfigPath: `./${['tsconfig.base.json', 'tsconfig.json'].find((tsconfigBase) => tree.exists(`./${tsconfigBase}`))}`
|
|
128
|
-
}),
|
|
129
|
-
(0, schematics_1.move)(tree.root.path),
|
|
130
|
-
(0, schematics_1.renameTemplateFiles)()
|
|
131
|
-
]), schematics_1.MergeStrategy.Default);
|
|
132
|
-
rules.push(jestConfigFilesForWorkspace);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
96
|
return () => (0, schematics_1.chain)(rules)(tree, context);
|
|
137
97
|
}
|
|
138
98
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,kCAAkC;AAClC,8DAE2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Rule } from '@angular-devkit/schematics';
|
|
2
|
+
import type { NgAddSchematicsSchema } from '../../../schematics/ng-add/schema';
|
|
3
|
+
/**
|
|
4
|
+
* List of dependencies needed to run jest
|
|
5
|
+
* @param eslintDependencies
|
|
6
|
+
*/
|
|
7
|
+
export declare const jestDependencies: (eslintDependencies: boolean) => string[];
|
|
8
|
+
/**
|
|
9
|
+
* Setup jest as recommended
|
|
10
|
+
* @param options
|
|
11
|
+
*/
|
|
12
|
+
export declare function setupJest(options: NgAddSchematicsSchema): Rule;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../schematics/ng-add/jest/index.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,IAAI,EAKL,MAAM,4BAA4B,CAAC;AAQpC,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,oBAAoB,OAAO,aAS3D,CAAC;AAeF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAqC9D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jestDependencies = void 0;
|
|
4
|
+
exports.setupJest = setupJest;
|
|
5
|
+
const path = require("node:path");
|
|
6
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
7
|
+
const schematics_2 = require("@o3r/schematics");
|
|
8
|
+
/**
|
|
9
|
+
* List of dependencies needed to run jest
|
|
10
|
+
* @param eslintDependencies
|
|
11
|
+
*/
|
|
12
|
+
const jestDependencies = (eslintDependencies) => [
|
|
13
|
+
'@angular-builders/jest',
|
|
14
|
+
'@types/jest',
|
|
15
|
+
'jest',
|
|
16
|
+
'jest-environment-jsdom',
|
|
17
|
+
'jest-preset-angular',
|
|
18
|
+
'jest-util',
|
|
19
|
+
'ts-jest',
|
|
20
|
+
...eslintDependencies ? ['eslint-plugin-jest'] : []
|
|
21
|
+
];
|
|
22
|
+
exports.jestDependencies = jestDependencies;
|
|
23
|
+
/**
|
|
24
|
+
* Run jest on 'npm/yarn run test'
|
|
25
|
+
* @param workingDirectory
|
|
26
|
+
*/
|
|
27
|
+
function setupJestScript(workingDirectory) {
|
|
28
|
+
return (tree) => {
|
|
29
|
+
const packageJsonFile = tree.readJson(`${workingDirectory}/package.json`);
|
|
30
|
+
packageJsonFile.scripts ||= {};
|
|
31
|
+
packageJsonFile.scripts.test = 'jest';
|
|
32
|
+
tree.overwrite(`${workingDirectory}/package.json`, JSON.stringify(packageJsonFile, null, 2));
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Setup jest as recommended
|
|
37
|
+
* @param options
|
|
38
|
+
*/
|
|
39
|
+
function setupJest(options) {
|
|
40
|
+
return (tree, context) => {
|
|
41
|
+
const workspaceProject = options.projectName ? (0, schematics_2.getWorkspaceConfig)(tree)?.projects[options.projectName] : undefined;
|
|
42
|
+
const workingDirectory = workspaceProject?.root || '.';
|
|
43
|
+
if (workingDirectory === undefined) {
|
|
44
|
+
throw new schematics_2.O3rCliError(`Could not find working directory for project ${options.projectName || ''}`);
|
|
45
|
+
}
|
|
46
|
+
const rootRelativePath = path.posix.relative(workingDirectory, tree.root.path.replace(/^\//, './'));
|
|
47
|
+
const setupJestInProject = (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./jest/templates/project'), [
|
|
48
|
+
(0, schematics_1.template)({
|
|
49
|
+
...options,
|
|
50
|
+
rootRelativePath,
|
|
51
|
+
isAngularSetup: tree.exists('/angular.json')
|
|
52
|
+
}),
|
|
53
|
+
(0, schematics_1.move)(workingDirectory),
|
|
54
|
+
(0, schematics_1.renameTemplateFiles)()
|
|
55
|
+
]), schematics_1.MergeStrategy.Overwrite);
|
|
56
|
+
const rules = [
|
|
57
|
+
setupJestScript(workingDirectory),
|
|
58
|
+
setupJestInProject
|
|
59
|
+
];
|
|
60
|
+
if (tree.exists('/jest.config.js')) {
|
|
61
|
+
context.logger.info('Jest configuration files already exist at the root of the project.');
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
rules.push((0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./jest/templates/workspace'), [
|
|
65
|
+
(0, schematics_1.template)({
|
|
66
|
+
...options,
|
|
67
|
+
tsconfigPath: `./${['tsconfig.base.json', 'tsconfig.json'].find((tsconfigBase) => tree.exists(`./${tsconfigBase}`))}`
|
|
68
|
+
}),
|
|
69
|
+
(0, schematics_1.move)(tree.root.path),
|
|
70
|
+
(0, schematics_1.renameTemplateFiles)()
|
|
71
|
+
]), schematics_1.MergeStrategy.Default));
|
|
72
|
+
}
|
|
73
|
+
return (0, schematics_1.chain)(rules)(tree, context);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/ng-add/jest/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,12 @@ module.exports.getJestProjectConfig = (rootDir, isAngularSetup) => {
|
|
|
25
25
|
);
|
|
26
26
|
moduleNameMapper['^@o3r/testing/core$'] = [require.resolve('@o3r/testing/core/angular')];
|
|
27
27
|
moduleNameMapper['^@o3r/testing/core/(.*)'] = [join(require.resolve('@o3r/testing/core/angular'), '$1')];
|
|
28
|
+
let angularConfig = {};
|
|
29
|
+
if (isAngularSetup) {
|
|
30
|
+
const { createCjsPreset } = require('jest-preset-angular/presets');
|
|
31
|
+
angularConfig = createCjsPreset();
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
return {
|
|
29
35
|
preset: 'ts-jest',
|
|
30
36
|
setupFilesAfterEnv: ['<rootDir>/testing/setup-jest.ts'],
|
|
@@ -56,20 +62,7 @@ module.exports.getJestProjectConfig = (rootDir, isAngularSetup) => {
|
|
|
56
62
|
customExportConditions: ['require', 'node']
|
|
57
63
|
},
|
|
58
64
|
workerIdleMemoryLimit: '700MB',
|
|
59
|
-
...
|
|
60
|
-
preset: 'jest-preset-angular',
|
|
61
|
-
transform: {
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
63
|
-
'^.+\\.tsx?$': [
|
|
64
|
-
'jest-preset-angular',
|
|
65
|
-
{
|
|
66
|
-
tsconfig: '<rootDir>/tsconfig.spec.json',
|
|
67
|
-
stringifyContentPathRegex: '\\.html$'
|
|
68
|
-
}
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
globalSetup: 'jest-preset-angular/global-setup',
|
|
72
|
-
} : {}
|
|
65
|
+
...angularConfig
|
|
73
66
|
};
|
|
74
67
|
};
|
|
75
68
|
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { Rule } from '@angular-devkit/schematics';
|
|
2
2
|
import { NgAddPackageOptions } from '@o3r/schematics';
|
|
3
|
+
/**
|
|
4
|
+
* List of dependencies required by playwright
|
|
5
|
+
*/
|
|
6
|
+
export declare const playwrightDependencies: string[];
|
|
3
7
|
/**
|
|
4
8
|
* Add Playwright to Otter application
|
|
5
9
|
* @param options @see RuleFactory.options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../schematics/ng-add/playwright/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,IAAI,EAKL,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAKzB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAkDnE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../schematics/ng-add/playwright/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,IAAI,EAKL,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,eAAO,MAAM,sBAAsB,UAIlC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAkDnE"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.playwrightDependencies = void 0;
|
|
3
4
|
exports.updatePlaywright = updatePlaywright;
|
|
4
5
|
const path = require("node:path");
|
|
5
6
|
const core_1 = require("@angular-devkit/core");
|
|
6
7
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
7
8
|
const schematics_2 = require("@o3r/schematics");
|
|
9
|
+
/**
|
|
10
|
+
* List of dependencies required by playwright
|
|
11
|
+
*/
|
|
12
|
+
exports.playwrightDependencies = [
|
|
13
|
+
'@playwright/test',
|
|
14
|
+
'@types/node',
|
|
15
|
+
'rimraf'
|
|
16
|
+
];
|
|
8
17
|
/**
|
|
9
18
|
* Add Playwright to Otter application
|
|
10
19
|
* @param options @see RuleFactory.options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/ng-add/playwright/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/ng-add/playwright/index.ts"],"names":[],"mappings":";;;AAsCA,4CAkDC;AAxFD,kCAAkC;AAClC,+CAE8B;AAC9B,2DAWoC;AACpC,gDAIyB;AAKzB;;GAEG;AACU,QAAA,sBAAsB,GAAG;IACpC,kBAAkB;IAClB,aAAa;IACb,QAAQ;CACT,CAAC;AAEF;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,OAA4B;IAC3D,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,WAAW,IAAI,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;QAExH,mBAAmB;QACnB,MAAM,aAAa,GAAG,YAAY,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC5H,SAAS;uBACJ;;;;;CAKZ,CAAC;gBACM,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAgB,CAAC;YAClE,WAAW,CAAC,OAAO,KAAK,EAAE,CAAC;YAC3B,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,8DAA8D,CAAC;YAC1G,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,YAAY,GAAG,GAAG,IAAA,8BAAiB,GAAE,YAAY,CAAC;YACxD,MAAM,OAAO,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3G,MAAM,UAAU,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC;YAEtE,MAAM,cAAc,GAAG,IAAA,kBAAK,EAAC,IAAA,gBAAG,EAAC,wBAAwB,CAAC,EAAE;gBAC1D,IAAA,qBAAQ,EAAC;oBACP,GAAG,cAAO;oBACV,UAAU;oBACV,YAAY;iBACb,CAAC;gBACF,IAAA,gCAAmB,GAAE;gBACrB,IAAA,iBAAI,EAAC,gBAAgB,CAAC;aACvB,CAAC,CAAC;YAEH,OAAO,IAAA,sBAAS,EAAC,cAAc,EAAE,0BAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
|
|
File without changes
|
|
File without changes
|
/package/schematics/ng-add/{templates → jest/templates}/project/testing/setup-jest.ts.template
RENAMED
|
File without changes
|
|
File without changes
|
/package/schematics/ng-add/{templates → jest/templates}/workspace/tsconfig.jest.json.template
RENAMED
|
File without changes
|