@thinkwise/testwise 0.2.7 → 0.2.16
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/artifact-builder/InterfaceGenerator.ts +2 -2
- package/artifact-builder/SchemaGenerator.ts +2 -2
- package/artifact-builder/SelectorBuilder.ts +6 -2
- package/artifact-builder/SubjectComponentGenerator.ts +35 -9
- package/artifact-builder/SubjectGenerator.ts +2 -2
- package/artifact-builder/SubjectRegistration.ts +14 -0
- package/artifact-builder/helpers/NamingHandler.ts +28 -48
- package/components/tab/BaseTabObjects.ts +1 -1
- package/controls/FormComboBox.ts +72 -0
- package/controls/LookupDropdown.ts +4 -2
- package/controls/index.ts +1 -0
- package/dist/artifact-builder/InterfaceGenerator.js +3 -3
- package/dist/artifact-builder/InterfaceGenerator.js.map +1 -1
- package/dist/artifact-builder/SchemaGenerator.js +2 -2
- package/dist/artifact-builder/SchemaGenerator.js.map +1 -1
- package/dist/artifact-builder/SelectorBuilder.d.ts +1 -0
- package/dist/artifact-builder/SelectorBuilder.js +4 -1
- package/dist/artifact-builder/SelectorBuilder.js.map +1 -1
- package/dist/artifact-builder/SubjectComponentGenerator.d.ts +2 -2
- package/dist/artifact-builder/SubjectComponentGenerator.js +27 -9
- package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectGenerator.js +2 -2
- package/dist/artifact-builder/SubjectGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectRegistration.d.ts +1 -0
- package/dist/artifact-builder/SubjectRegistration.js +11 -0
- package/dist/artifact-builder/SubjectRegistration.js.map +1 -1
- package/dist/artifact-builder/helpers/NamingHandler.d.ts +2 -4
- package/dist/artifact-builder/helpers/NamingHandler.js +26 -44
- package/dist/artifact-builder/helpers/NamingHandler.js.map +1 -1
- package/dist/components/tab/BaseTabObjects.js +1 -1
- package/dist/components/tab/BaseTabObjects.js.map +1 -1
- package/dist/controls/FormComboBox.d.ts +10 -0
- package/dist/controls/FormComboBox.js +43 -0
- package/dist/controls/FormComboBox.js.map +1 -0
- package/dist/controls/LookupDropdown.d.ts +2 -1
- package/dist/controls/LookupDropdown.js.map +1 -1
- package/dist/controls/index.d.ts +1 -0
- package/dist/controls/index.js +1 -0
- package/dist/controls/index.js.map +1 -1
- package/dist/enums/ElementTypes.d.ts +2 -1
- package/dist/enums/ElementTypes.js +1 -0
- package/dist/enums/ElementTypes.js.map +1 -1
- package/dist/helpers/UserSimulationHelper.js +1 -1
- package/dist/helpers/UserSimulationHelper.js.map +1 -1
- package/enums/ElementTypes.ts +2 -1
- package/helpers/UserSimulationHelper.ts +1 -1
- package/package.json +5 -5
- package/scripts/postinstall.js +3 -1
- package/scripts/sync.js +748 -756
|
@@ -77,7 +77,7 @@ export class InterfaceGenerator {
|
|
|
77
77
|
const baseFileName = file.slice(0, file.lastIndexOf('.'));
|
|
78
78
|
const correctInterfaceName = isInterface
|
|
79
79
|
? this._namingHandler.generateScreenInterfaceName(baseFileName)
|
|
80
|
-
: this._namingHandler.
|
|
80
|
+
: this._namingHandler.toPascalCase(baseFileName);
|
|
81
81
|
|
|
82
82
|
const schemaPath = path.join(schemasDirectory, file);
|
|
83
83
|
const schemaContent = fs.readFileSync(schemaPath, 'utf-8');
|
|
@@ -139,7 +139,7 @@ export class InterfaceGenerator {
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
if (schemaType === SchemaType.Screen) {
|
|
142
|
-
const fileNameSnakeCase = this._namingHandler.
|
|
142
|
+
const fileNameSnakeCase = this._namingHandler.toSnakeCase(fileName);
|
|
143
143
|
|
|
144
144
|
if (this._screensToBuild.length > 0 && !this._screensToBuild.includes(fileNameSnakeCase)) {
|
|
145
145
|
return Promise.resolve(true);
|
|
@@ -75,7 +75,7 @@ export class SchemaGenerator {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
private getScreenContent(screenTypeId: string): string {
|
|
78
|
-
const screenFileName = this._namingHandler.
|
|
78
|
+
const screenFileName = this._namingHandler.toPascalCase(screenTypeId);
|
|
79
79
|
const _filename = fileURLToPath(import.meta.url);
|
|
80
80
|
const _dirname = path.dirname(_filename);
|
|
81
81
|
const screenLocation = path.resolve(_dirname, '..', '..', 'test-artifacts/screens/');
|
|
@@ -86,7 +86,7 @@ export class SchemaGenerator {
|
|
|
86
86
|
private createComponentSchema(subject: ISubject, componentType: SubjectComponents): void {
|
|
87
87
|
const interfaceName = `${subject.subject}_${componentType.toLowerCase()}`;
|
|
88
88
|
const schemasDir = path.join(currentDirname, '..', '..', 'dist/test-artifacts/schemas');
|
|
89
|
-
const fileName = `${this._namingHandler.
|
|
89
|
+
const fileName = `${this._namingHandler.toPascalCase(interfaceName)}.json`;
|
|
90
90
|
|
|
91
91
|
if (fs.existsSync(path.join(schemasDir, fileName))) {
|
|
92
92
|
return;
|
|
@@ -52,12 +52,16 @@ export class SelectorBuilder {
|
|
|
52
52
|
return suffix;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
public
|
|
56
|
-
|
|
55
|
+
public getElementId(property: string, componentName: SubjectComponents): string {
|
|
56
|
+
return this._namingHandler.getIdFromElementName(
|
|
57
57
|
property,
|
|
58
58
|
componentName,
|
|
59
59
|
this._namingHandler.getElementTypeFromElementName(property)
|
|
60
60
|
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public getPageLocatorString(property: string, componentName: SubjectComponents): string {
|
|
64
|
+
let elementId = this.getElementId(property, componentName);
|
|
61
65
|
|
|
62
66
|
if (componentName === 'Grid') elementId = elementId.replace(/-/g, '_');
|
|
63
67
|
|
|
@@ -105,9 +105,13 @@ export class SubjectComponentGenerator {
|
|
|
105
105
|
gridGetters = this.generateGridGetters(propertyLines, componentName);
|
|
106
106
|
} else {
|
|
107
107
|
propertyDeclarations = this.generatePropertyDeclarations(propertyLines, componentName);
|
|
108
|
-
|
|
108
|
+
|
|
109
|
+
if (componentName === 'Form') {
|
|
110
|
+
this.transformInterfaceTypes(componentFile);
|
|
111
|
+
}
|
|
112
|
+
|
|
109
113
|
assignments = this.getPropertyInitializations(propertyLines, componentName);
|
|
110
|
-
this.
|
|
114
|
+
this.addImportsDynamically(componentFile);
|
|
111
115
|
}
|
|
112
116
|
}
|
|
113
117
|
|
|
@@ -125,7 +129,7 @@ export class SubjectComponentGenerator {
|
|
|
125
129
|
const subjectName: string | null = subjectMatch ? subjectMatch[1] : null;
|
|
126
130
|
|
|
127
131
|
if (subjectName) {
|
|
128
|
-
const formattedSubjectName = this._namingHandler.
|
|
132
|
+
const formattedSubjectName = this._namingHandler.toPascalCase(subjectName);
|
|
129
133
|
const subjectFolder = this.getSubjectFolderPath(formattedSubjectName);
|
|
130
134
|
const fileName = path.basename(componentDirPath);
|
|
131
135
|
|
|
@@ -180,18 +184,30 @@ export class SubjectComponentGenerator {
|
|
|
180
184
|
return ` this.${property} = createLookupDropdown(${pageLocatorString});`;
|
|
181
185
|
}
|
|
182
186
|
|
|
187
|
+
if (componentName === 'Form' && property.endsWith('ComboBox')) {
|
|
188
|
+
const elementId = this._selectorBuilder.getElementId(property, componentName);
|
|
189
|
+
return ` this.${property} = createFormComboBox(page, '${elementId}');`;
|
|
190
|
+
}
|
|
191
|
+
|
|
183
192
|
return ` this.${property} = ${pageLocatorString};`;
|
|
184
193
|
})
|
|
185
194
|
.join('\n');
|
|
186
195
|
}
|
|
187
196
|
|
|
188
|
-
private
|
|
197
|
+
private addImportsDynamically(componentFile: { content: string }): void {
|
|
189
198
|
const lookupType = 'ILookupDropdown';
|
|
199
|
+
const comboBoxType = 'IFormComboBox';
|
|
190
200
|
const lookupImport =
|
|
191
201
|
"import { createLookupDropdown, type ILookupDropdown } from '../../../../controls/LookupDropdown.js';";
|
|
202
|
+
const comboBoxImport =
|
|
203
|
+
"import { createFormComboBox, type IFormComboBox } from '../../../../controls/FormComboBox.js';";
|
|
192
204
|
|
|
193
205
|
if (componentFile.content.includes(lookupType) && !componentFile.content.includes(lookupImport)) {
|
|
194
206
|
componentFile.content = `${lookupImport}\n${componentFile.content}`;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (componentFile.content.includes(comboBoxType) && !componentFile.content.includes(comboBoxImport)) {
|
|
210
|
+
componentFile.content = `${comboBoxImport}\n${componentFile.content}`;
|
|
195
211
|
}
|
|
196
212
|
}
|
|
197
213
|
|
|
@@ -204,19 +220,29 @@ export class SubjectComponentGenerator {
|
|
|
204
220
|
return ` ${property}: ILookupDropdown;`;
|
|
205
221
|
}
|
|
206
222
|
|
|
223
|
+
if (componentName === 'Form' && property.endsWith('ComboBox')) {
|
|
224
|
+
return ` ${property}: IFormComboBox;`;
|
|
225
|
+
}
|
|
226
|
+
|
|
207
227
|
return ` ${property}: Locator;`;
|
|
208
228
|
})
|
|
209
229
|
.join('\n');
|
|
210
230
|
}
|
|
211
231
|
|
|
212
|
-
private
|
|
232
|
+
private transformInterfaceTypes(componentFile: { content: string }): void {
|
|
213
233
|
const interfaceRegex = /export interface \w+ extends Form \{([\s\S]*?)\}/g;
|
|
214
234
|
|
|
215
|
-
|
|
216
|
-
|
|
235
|
+
const typeMapping: Record<string, string> = {
|
|
236
|
+
'Lookup': 'ILookupDropdown',
|
|
237
|
+
'ComboBox': 'IFormComboBox'
|
|
238
|
+
};
|
|
217
239
|
|
|
218
|
-
|
|
219
|
-
|
|
240
|
+
componentFile.content = componentFile.content.replace(interfaceRegex, (match, interfaceBody) => {
|
|
241
|
+
const propertyRegex = /(\w+(Lookup|ComboBox))\s*:\s*Locator;/g;
|
|
242
|
+
|
|
243
|
+
const updatedBody = interfaceBody.replace(propertyRegex, (_match: string, propName: string, suffix: string) => {
|
|
244
|
+
const newType = typeMapping[suffix];
|
|
245
|
+
return `${propName}: ${newType};`;
|
|
220
246
|
});
|
|
221
247
|
|
|
222
248
|
return match.replace(interfaceBody, updatedBody);
|
|
@@ -78,7 +78,7 @@ export class SubjectGenerator {
|
|
|
78
78
|
const screenInterfaceName = this._namingHandler.generateScreenInterfaceName(subject.screentype_id);
|
|
79
79
|
const screenInterfacePath = this.getScreenInterfacePath(screenInterfaceName);
|
|
80
80
|
const screenFileContent = fs.readFileSync(screenInterfacePath, 'utf-8');
|
|
81
|
-
const subjectFolderName = this._namingHandler.
|
|
81
|
+
const subjectFolderName = this._namingHandler.toPascalCase(subject.subject);
|
|
82
82
|
const subjectFolderPath = this.getSubjectFolderRelativePath(subjectFolderName);
|
|
83
83
|
|
|
84
84
|
const subjectClass = {
|
|
@@ -294,7 +294,7 @@ export class SubjectGenerator {
|
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
private getComponentInitializer(component: { type: string; context: string }): string {
|
|
297
|
-
const componentNamePascal = this._namingHandler.
|
|
297
|
+
const componentNamePascal = this._namingHandler.toPascalCase(component.type);
|
|
298
298
|
|
|
299
299
|
switch (component.type) {
|
|
300
300
|
case 'Cardlist':
|
|
@@ -23,6 +23,20 @@ export class SubjectRegistration {
|
|
|
23
23
|
await this.registerGeneratedSubjectsAsSubjectTypes(subjectDetails);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
public resetSubjectRegistry(): void {
|
|
27
|
+
const root = path.resolve(this._currentDirname, '../../');
|
|
28
|
+
const registryPath = path.join(root, 'page-extensions', 'SubjectRegistry.ts');
|
|
29
|
+
const templatePath = path.join(root, 'templates', 'SubjectRegistry.template.ts');
|
|
30
|
+
|
|
31
|
+
if (fs.existsSync(registryPath)) {
|
|
32
|
+
fs.rmSync(registryPath, { force: true });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (fs.existsSync(templatePath)) {
|
|
36
|
+
fs.copyFileSync(templatePath, registryPath);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
26
40
|
private async registerGeneratedSubjectsAsSubjectTypes(subjectDetails: SubjectDetail[]): Promise<void> {
|
|
27
41
|
const subjectTypeImportsAndExports = this.buildSubjectTypeExport(subjectDetails);
|
|
28
42
|
const subject = { content: this.setSubjectTypeContent() };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as path from 'node:path';
|
|
2
|
+
import { pascalCase, snakeCase } from 'change-case';
|
|
2
3
|
import { KnownElementTypes } from '../../enums/ElementTypes.js';
|
|
3
4
|
import type { ScreenComponents, SubjectComponents } from '../../types/Components.js';
|
|
4
5
|
|
|
@@ -27,37 +28,48 @@ export class NamingHandler {
|
|
|
27
28
|
phone_number: formDefaultSuffix,
|
|
28
29
|
suggestion_starts_with: formDefaultSuffix,
|
|
29
30
|
lookup_dropdown: KnownElementTypes.Lookup,
|
|
31
|
+
dropdown : KnownElementTypes.Dropdown,
|
|
32
|
+
lookup: KnownElementTypes.Lookup,
|
|
30
33
|
checkbox: KnownElementTypes.Checkbox,
|
|
31
34
|
multiline: KnownElementTypes.Textarea,
|
|
32
|
-
combo: KnownElementTypes.
|
|
35
|
+
combo: KnownElementTypes.ComboBox,
|
|
36
|
+
combo_box: KnownElementTypes.ComboBox,
|
|
33
37
|
},
|
|
34
38
|
Grid: {
|
|
35
39
|
email: gridDefaultSuffix,
|
|
36
40
|
phone_number: gridDefaultSuffix,
|
|
37
41
|
suggestion_starts_with: gridDefaultSuffix,
|
|
38
42
|
lookup_dropdown: gridDefaultSuffix,
|
|
43
|
+
dropdown : gridDefaultSuffix,
|
|
44
|
+
lookup: gridDefaultSuffix,
|
|
39
45
|
checkbox: gridDefaultSuffix,
|
|
40
46
|
multiline: gridDefaultSuffix,
|
|
41
|
-
combo: gridDefaultSuffix
|
|
47
|
+
combo: gridDefaultSuffix,
|
|
48
|
+
combo_box: gridDefaultSuffix
|
|
42
49
|
}
|
|
43
50
|
};
|
|
44
51
|
|
|
45
52
|
const componentMapping = controlTypeMappingMatrix[componentType];
|
|
46
53
|
return (
|
|
47
|
-
componentMapping[controlType] || this.getDefaultElementSuffixFromComponentType(componentType)
|
|
54
|
+
componentMapping[controlType.toLowerCase()] || this.getDefaultElementSuffixFromComponentType(componentType)
|
|
48
55
|
).toLowerCase();
|
|
49
56
|
}
|
|
50
57
|
|
|
51
58
|
public getIdFromElementName(elementName: string, componentType: SubjectComponents, controlType: string): string {
|
|
52
59
|
const elementSuffixToRemove = this.getElementSuffixFromControlTypeAndComponentType(controlType, componentType);
|
|
53
|
-
const
|
|
60
|
+
const elementSuffixToRemoveFormatted = elementSuffixToRemove.replace(/_/g, '-').toLowerCase();
|
|
54
61
|
|
|
55
|
-
|
|
56
|
-
.replace(new RegExp(`${elementSuffixToRemove}$`, 'i'), '')
|
|
62
|
+
let id = this.toSnakeCase(elementName)
|
|
57
63
|
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
58
64
|
.toLowerCase()
|
|
59
|
-
.replace(/_/g, '-')
|
|
60
|
-
|
|
65
|
+
.replace(/_/g, '-');
|
|
66
|
+
|
|
67
|
+
if (elementSuffixToRemove) {
|
|
68
|
+
const suffixRegex = new RegExp(`-?${elementSuffixToRemoveFormatted}$`, 'i');
|
|
69
|
+
id = id.replace(suffixRegex, '');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return id.replace(/-+/g, '-').replace(/-+$/g, '');
|
|
61
73
|
}
|
|
62
74
|
|
|
63
75
|
public getComponentTypeFromFileName(fileName: string): SubjectComponents {
|
|
@@ -72,7 +84,7 @@ export class NamingHandler {
|
|
|
72
84
|
}
|
|
73
85
|
|
|
74
86
|
public getElementTypeFromElementName(elementName: string): string {
|
|
75
|
-
const snakeCaseElementName = this.
|
|
87
|
+
const snakeCaseElementName = this.toSnakeCase(elementName);
|
|
76
88
|
const parts = snakeCaseElementName.split('_');
|
|
77
89
|
|
|
78
90
|
for (let i = parts.length - 1; i > 0; i--) {
|
|
@@ -91,24 +103,11 @@ export class NamingHandler {
|
|
|
91
103
|
}
|
|
92
104
|
|
|
93
105
|
public getPascalSubjectComponentName(file: string): string {
|
|
94
|
-
return this.
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public formatPascalCaseName(name: string): string {
|
|
98
|
-
if (!name.includes('_')) {
|
|
99
|
-
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return name
|
|
103
|
-
.toLowerCase()
|
|
104
|
-
.split('_')
|
|
105
|
-
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
106
|
-
.join('');
|
|
106
|
+
return this.toPascalCase(path.basename(file, '.json'));
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
public
|
|
110
|
-
|
|
111
|
-
return subjectName.charAt(0).toUpperCase() + subjectName.slice(1);
|
|
109
|
+
public toPascalCase(name: string): string {
|
|
110
|
+
return pascalCase(name);
|
|
112
111
|
}
|
|
113
112
|
|
|
114
113
|
public formatPropertyName(name: string): string {
|
|
@@ -116,30 +115,11 @@ export class NamingHandler {
|
|
|
116
115
|
}
|
|
117
116
|
|
|
118
117
|
public generateScreenInterfaceName(screentypeId: string): string {
|
|
119
|
-
return `I${screentypeId
|
|
120
|
-
.toLowerCase()
|
|
121
|
-
.split('_')
|
|
122
|
-
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
123
|
-
.join('')}`;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
public snakeToPascalCase(value: string): string {
|
|
127
|
-
if (!value.includes('_')) {
|
|
128
|
-
return value.charAt(0).toUpperCase() + value.slice(1);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return value
|
|
132
|
-
.toLowerCase()
|
|
133
|
-
.split('_')
|
|
134
|
-
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
135
|
-
.join('');
|
|
118
|
+
return `I${this.toPascalCase(screentypeId)}`;
|
|
136
119
|
}
|
|
137
120
|
|
|
138
|
-
public
|
|
139
|
-
return value
|
|
140
|
-
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
|
|
141
|
-
.replace(/([a-z\d])([A-Z])/g, '$1_$2')
|
|
142
|
-
.toLowerCase();
|
|
121
|
+
public toSnakeCase(value: string): string {
|
|
122
|
+
return snakeCase(value);
|
|
143
123
|
}
|
|
144
124
|
|
|
145
125
|
public getComponentIdFromName(componentName: string, componentType: ScreenComponents): string {
|
|
@@ -181,6 +161,6 @@ export class NamingHandler {
|
|
|
181
161
|
public generateSubjectClassName(subject: { subject: string; screentype_context: string; variant: string }): string {
|
|
182
162
|
const uniqueSubjectIdentifier = subject.variant !== '' ? `${subject.subject}_${subject.variant}` : subject.subject;
|
|
183
163
|
const className = `${uniqueSubjectIdentifier}_${subject.screentype_context}`;
|
|
184
|
-
return this.
|
|
164
|
+
return this.toPascalCase(className);
|
|
185
165
|
}
|
|
186
166
|
}
|
|
@@ -12,7 +12,7 @@ export class BaseTabObjects extends BaseComponentObjects {
|
|
|
12
12
|
public tabList = (): Locator => this.context.getByRole('tablist');
|
|
13
13
|
|
|
14
14
|
public tabByTestId = (name: string): Locator =>
|
|
15
|
-
this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}"]`);
|
|
15
|
+
this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}__"]`);
|
|
16
16
|
|
|
17
17
|
// use role for generic index-based selection
|
|
18
18
|
public tabByIndex = (index: number): Locator => this.tabList().getByRole('tab').nth(index);
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: Reason42 */
|
|
3
|
+
import type { Locator, Page } from '@playwright/test';
|
|
4
|
+
|
|
5
|
+
export type IFormComboBox = Locator & IFormComboBoxCore;
|
|
6
|
+
|
|
7
|
+
export type IFormComboBoxCore = {
|
|
8
|
+
lookupSelect(optionToSelect: string): Promise<void>;
|
|
9
|
+
selectOption(optionText: string): Promise<void>;
|
|
10
|
+
getValidationMessage(): Promise<string>;
|
|
11
|
+
clearByClick(): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
class FormComboBox implements IFormComboBoxCore {
|
|
15
|
+
private _formFieldLocator: Locator;
|
|
16
|
+
private _autoCompleteMenu: Locator;
|
|
17
|
+
private _id: string;
|
|
18
|
+
|
|
19
|
+
constructor(page: Page, id: string) {
|
|
20
|
+
this._id = id;
|
|
21
|
+
this._formFieldLocator = page.getByTestId(`form-field__${id}`);
|
|
22
|
+
this._autoCompleteMenu = page.getByTestId(`form-field__${id}__select__options-list`);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async selectOption(optionText: string): Promise<void> {
|
|
26
|
+
await this._formFieldLocator.locator('input').click();
|
|
27
|
+
|
|
28
|
+
await this._autoCompleteMenu.waitFor({ state: 'visible' });
|
|
29
|
+
|
|
30
|
+
const optionTextLowercase = optionText.toLowerCase();
|
|
31
|
+
|
|
32
|
+
await this._autoCompleteMenu.getByTestId(`form-field__${this._id}__select__${optionTextLowercase}__text`).click();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async getValidationMessage(): Promise<string> {
|
|
36
|
+
await this._formFieldLocator.locator('.TooltipContainer p').waitFor({ state: 'visible' });
|
|
37
|
+
return await this._formFieldLocator.locator('.TooltipContainer p').innerText();
|
|
38
|
+
}
|
|
39
|
+
async clearByClick(): Promise<void> {
|
|
40
|
+
await this._formFieldLocator.locator('Button[aria-label="Clear"]').click();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async lookupSelect(optionToSelect: string): Promise<void> {
|
|
44
|
+
await this._formFieldLocator.locator('input').fill(optionToSelect);
|
|
45
|
+
|
|
46
|
+
await this._autoCompleteMenu.waitFor({ state: 'visible' });
|
|
47
|
+
|
|
48
|
+
const optionToSelectLowercase = optionToSelect.toLowerCase();
|
|
49
|
+
|
|
50
|
+
await this._autoCompleteMenu.getByTestId(`form-field__${this._id}__select__${optionToSelectLowercase}__text`).click();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function createFormComboBox(page: Page, id: string): IFormComboBox {
|
|
55
|
+
const comboBox = new FormComboBox(page, id);
|
|
56
|
+
const locator = page.getByTestId(`form-field__${id}`);
|
|
57
|
+
|
|
58
|
+
return new Proxy(comboBox, {
|
|
59
|
+
get(target, prop, receiver) {
|
|
60
|
+
if (prop in target) {
|
|
61
|
+
return Reflect.get(target, prop, receiver);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const value = (locator as any)[prop];
|
|
65
|
+
|
|
66
|
+
if (typeof value === 'function') {
|
|
67
|
+
return value.bind(locator);
|
|
68
|
+
}
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
}) as unknown as IFormComboBox;
|
|
72
|
+
}
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
import type { Locator } from '@playwright/test';
|
|
4
4
|
import { escapeRegex } from '../helpers/RegexHelper.js';
|
|
5
5
|
|
|
6
|
-
export type ILookupDropdown = Locator &
|
|
6
|
+
export type ILookupDropdown = Locator & ILookupDropdownCore;
|
|
7
|
+
|
|
8
|
+
export type ILookupDropdownCore = {
|
|
7
9
|
lookupSelect(optionToSelect: string): Promise<void>;
|
|
8
10
|
selectOption(optionText: string): Promise<void>;
|
|
9
11
|
};
|
|
10
12
|
|
|
11
|
-
class LookupDropdown {
|
|
13
|
+
class LookupDropdown implements ILookupDropdownCore {
|
|
12
14
|
private _locator: Locator;
|
|
13
15
|
|
|
14
16
|
constructor(locator: Locator) {
|
package/controls/index.ts
CHANGED
|
@@ -52,7 +52,7 @@ export class InterfaceGenerator {
|
|
|
52
52
|
const baseFileName = file.slice(0, file.lastIndexOf('.'));
|
|
53
53
|
const correctInterfaceName = isInterface
|
|
54
54
|
? this._namingHandler.generateScreenInterfaceName(baseFileName)
|
|
55
|
-
: this._namingHandler.
|
|
55
|
+
: this._namingHandler.toPascalCase(baseFileName);
|
|
56
56
|
const schemaPath = path.join(schemasDirectory, file);
|
|
57
57
|
const schemaContent = fs.readFileSync(schemaPath, 'utf-8');
|
|
58
58
|
const schemaInput = new JSONSchemaInput(new FetchingJSONSchemaStore());
|
|
@@ -91,7 +91,7 @@ export class InterfaceGenerator {
|
|
|
91
91
|
async generateInterfacesFromSchemaFiles(schemasDirectory, schemaType, outputPath) {
|
|
92
92
|
const schemaFiles = this.getGeneratedSubjectSchemas(schemasDirectory);
|
|
93
93
|
const tasks = schemaFiles.map(async (file) => {
|
|
94
|
-
const fileName = this._namingHandler.getPascalSubjectComponentName(file);
|
|
94
|
+
const fileName = this._namingHandler.getPascalSubjectComponentName(file);
|
|
95
95
|
if (schemaType === SchemaType.Subject) {
|
|
96
96
|
const subject = this._namingHandler.getSubjectFromFileName(fileName);
|
|
97
97
|
const componentsDirectory = this.verifySubjectComponentsDirectory(outputPath, subject);
|
|
@@ -99,7 +99,7 @@ export class InterfaceGenerator {
|
|
|
99
99
|
return this.createInterfaceFromSchema(schemasDirectory, perFileOutputPath, file);
|
|
100
100
|
}
|
|
101
101
|
if (schemaType === SchemaType.Screen) {
|
|
102
|
-
const fileNameSnakeCase = this._namingHandler.
|
|
102
|
+
const fileNameSnakeCase = this._namingHandler.toSnakeCase(fileName);
|
|
103
103
|
if (this._screensToBuild.length > 0 && !this._screensToBuild.includes(fileNameSnakeCase)) {
|
|
104
104
|
return Promise.resolve(true);
|
|
105
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ export class SchemaGenerator {
|
|
|
56
56
|
return componentsToProcess;
|
|
57
57
|
}
|
|
58
58
|
getScreenContent(screenTypeId) {
|
|
59
|
-
const screenFileName = this._namingHandler.
|
|
59
|
+
const screenFileName = this._namingHandler.toPascalCase(screenTypeId);
|
|
60
60
|
const _filename = fileURLToPath(import.meta.url);
|
|
61
61
|
const _dirname = path.dirname(_filename);
|
|
62
62
|
const screenLocation = path.resolve(_dirname, '..', '..', 'test-artifacts/screens/');
|
|
@@ -65,7 +65,7 @@ export class SchemaGenerator {
|
|
|
65
65
|
createComponentSchema(subject, componentType) {
|
|
66
66
|
const interfaceName = `${subject.subject}_${componentType.toLowerCase()}`;
|
|
67
67
|
const schemasDir = path.join(currentDirname, '..', '..', 'dist/test-artifacts/schemas');
|
|
68
|
-
const fileName = `${this._namingHandler.
|
|
68
|
+
const fileName = `${this._namingHandler.toPascalCase(interfaceName)}.json`;
|
|
69
69
|
if (fs.existsSync(path.join(schemasDir, fileName))) {
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SchemaGenerator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SchemaGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export declare class SelectorBuilder {
|
|
|
6
6
|
private determineSelectorSuffix;
|
|
7
7
|
private getDefaultPrefix;
|
|
8
8
|
private getDefaultSuffix;
|
|
9
|
+
getElementId(property: string, componentName: SubjectComponents): string;
|
|
9
10
|
getPageLocatorString(property: string, componentName: SubjectComponents): string;
|
|
10
11
|
private getLocatorType;
|
|
11
12
|
getPageContext(subject: ISubject): string;
|
|
@@ -42,8 +42,11 @@ export class SelectorBuilder {
|
|
|
42
42
|
}
|
|
43
43
|
return suffix;
|
|
44
44
|
}
|
|
45
|
+
getElementId(property, componentName) {
|
|
46
|
+
return this._namingHandler.getIdFromElementName(property, componentName, this._namingHandler.getElementTypeFromElementName(property));
|
|
47
|
+
}
|
|
45
48
|
getPageLocatorString(property, componentName) {
|
|
46
|
-
let elementId = this.
|
|
49
|
+
let elementId = this.getElementId(property, componentName);
|
|
47
50
|
if (componentName === 'Grid')
|
|
48
51
|
elementId = elementId.replace(/-/g, '_');
|
|
49
52
|
const selectorPrefix = this.getDefaultPrefix(componentName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectorBuilder.js","sourceRoot":"","sources":["../../artifact-builder/SelectorBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,eAAe;IAG1B;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;IAC5C,CAAC;IAEO,uBAAuB,CAAC,QAAgB,EAAE,aAAgC;QAChF,IAAI,cAAc,GAAG,IAAI,CAAC;QAE1B,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,QAAQ,CAAC,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC7F,cAAc,GAAG,kBAAkB,CAAC;YACtC,CAAC;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,QAAQ,CAAC,KAAK,iBAAiB,CAAC,QAAQ,EAAE,CAAC;gBACtG,cAAc,GAAG,iBAAiB,CAAC;YACrC,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,gBAAgB,CAAC,aAAgC;QACvD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,GAAG,WAAW,CAAC;QACvB,CAAC;aAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,GAAG,cAAc,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,aAAgC;QACvD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"SelectorBuilder.js","sourceRoot":"","sources":["../../artifact-builder/SelectorBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,9 @@ export declare class SubjectComponentGenerator {
|
|
|
16
16
|
private getSubjectFolderPath;
|
|
17
17
|
private verifyDirectoryExists;
|
|
18
18
|
private getPropertyInitializations;
|
|
19
|
-
private
|
|
19
|
+
private addImportsDynamically;
|
|
20
20
|
private generatePropertyDeclarations;
|
|
21
|
-
private
|
|
21
|
+
private transformInterfaceTypes;
|
|
22
22
|
private convertStringsToArray;
|
|
23
23
|
private getPropertyNamesFromInterface;
|
|
24
24
|
private setSubjectExtendsComponent;
|