@umbraco/playwright-testhelpers 17.1.0-beta.5 → 17.1.0-beta.7

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.
Files changed (147) hide show
  1. package/dist/lib/helpers/BaseApiHelper.d.ts +19 -0
  2. package/dist/lib/helpers/BaseApiHelper.js +87 -0
  3. package/dist/lib/helpers/BaseApiHelper.js.map +1 -0
  4. package/dist/lib/helpers/ConstantHelper.d.ts +0 -17
  5. package/dist/lib/helpers/ConstantHelper.js +0 -17
  6. package/dist/lib/helpers/ConstantHelper.js.map +1 -1
  7. package/dist/lib/helpers/ContentRenderUiHelper.js +3 -3
  8. package/dist/lib/helpers/ContentRenderUiHelper.js.map +1 -1
  9. package/dist/lib/helpers/ContentUiHelper.js +487 -353
  10. package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
  11. package/dist/lib/helpers/CurrentUserProfileUiHelper.js +10 -4
  12. package/dist/lib/helpers/CurrentUserProfileUiHelper.js.map +1 -1
  13. package/dist/lib/helpers/DataTypeApiHelper.d.ts +9 -21
  14. package/dist/lib/helpers/DataTypeApiHelper.js +32 -125
  15. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  16. package/dist/lib/helpers/DataTypeUiHelper.js +332 -193
  17. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
  18. package/dist/lib/helpers/DictionaryApiHelper.d.ts +8 -15
  19. package/dist/lib/helpers/DictionaryApiHelper.js +49 -77
  20. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  21. package/dist/lib/helpers/DictionaryUiHelper.js +23 -17
  22. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -1
  23. package/dist/lib/helpers/DocumentBlueprintApiHelper.d.ts +7 -13
  24. package/dist/lib/helpers/DocumentBlueprintApiHelper.js +44 -69
  25. package/dist/lib/helpers/DocumentBlueprintApiHelper.js.map +1 -1
  26. package/dist/lib/helpers/DocumentBlueprintUiHelper.js +10 -8
  27. package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -1
  28. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +4 -18
  29. package/dist/lib/helpers/DocumentTypeApiHelper.js +4 -134
  30. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -1
  31. package/dist/lib/helpers/DocumentTypeUiHelper.js +34 -22
  32. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -1
  33. package/dist/lib/helpers/ExamineManagementUiHelper.js +6 -5
  34. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -1
  35. package/dist/lib/helpers/FormsUiHelper.js +159 -119
  36. package/dist/lib/helpers/FormsUiHelper.js.map +1 -1
  37. package/dist/lib/helpers/HealthCheckUiHelper.js +7 -7
  38. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -1
  39. package/dist/lib/helpers/LanguageApiHelper.d.ts +10 -12
  40. package/dist/lib/helpers/LanguageApiHelper.js +34 -35
  41. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  42. package/dist/lib/helpers/LanguageUiHelper.js +19 -16
  43. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -1
  44. package/dist/lib/helpers/LogViewerUiHelper.js +31 -22
  45. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -1
  46. package/dist/lib/helpers/LoginUiHelper.js +7 -4
  47. package/dist/lib/helpers/LoginUiHelper.js.map +1 -1
  48. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +4 -18
  49. package/dist/lib/helpers/MediaTypeApiHelper.js +4 -134
  50. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -1
  51. package/dist/lib/helpers/MediaTypeUiHelper.js +17 -11
  52. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -1
  53. package/dist/lib/helpers/MediaUiHelper.js +45 -36
  54. package/dist/lib/helpers/MediaUiHelper.js.map +1 -1
  55. package/dist/lib/helpers/MemberApiHelper.d.ts +4 -12
  56. package/dist/lib/helpers/MemberApiHelper.js +6 -54
  57. package/dist/lib/helpers/MemberApiHelper.js.map +1 -1
  58. package/dist/lib/helpers/MemberGroupApiHelper.d.ts +6 -11
  59. package/dist/lib/helpers/MemberGroupApiHelper.js +20 -35
  60. package/dist/lib/helpers/MemberGroupApiHelper.js.map +1 -1
  61. package/dist/lib/helpers/MemberGroupUiHelper.js +16 -13
  62. package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -1
  63. package/dist/lib/helpers/MemberTypeApiHelper.d.ts +5 -12
  64. package/dist/lib/helpers/MemberTypeApiHelper.js +16 -49
  65. package/dist/lib/helpers/MemberTypeApiHelper.js.map +1 -1
  66. package/dist/lib/helpers/MemberTypeUiHelper.js +3 -2
  67. package/dist/lib/helpers/MemberTypeUiHelper.js.map +1 -1
  68. package/dist/lib/helpers/MemberUiHelper.js +43 -25
  69. package/dist/lib/helpers/MemberUiHelper.js.map +1 -1
  70. package/dist/lib/helpers/ModelsBuilderUiHelper.js +3 -2
  71. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -1
  72. package/dist/lib/helpers/PackageApiHelper.d.ts +5 -4
  73. package/dist/lib/helpers/PackageApiHelper.js +47 -75
  74. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  75. package/dist/lib/helpers/PackageUiHelper.js +36 -30
  76. package/dist/lib/helpers/PackageUiHelper.js.map +1 -1
  77. package/dist/lib/helpers/PartialViewApiHelper.d.ts +5 -20
  78. package/dist/lib/helpers/PartialViewApiHelper.js +12 -146
  79. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  80. package/dist/lib/helpers/PartialViewUiHelper.js +17 -14
  81. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -1
  82. package/dist/lib/helpers/PathBasedTreeApiHelper.d.ts +32 -0
  83. package/dist/lib/helpers/PathBasedTreeApiHelper.js +164 -0
  84. package/dist/lib/helpers/PathBasedTreeApiHelper.js.map +1 -0
  85. package/dist/lib/helpers/ProfilingUiHelper.js +5 -3
  86. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -1
  87. package/dist/lib/helpers/PublishedStatusUiHelper.js +8 -7
  88. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -1
  89. package/dist/lib/helpers/RedirectManagementUiHelper.js +12 -7
  90. package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -1
  91. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +7 -12
  92. package/dist/lib/helpers/RelationTypeApiHelper.js +28 -49
  93. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -1
  94. package/dist/lib/helpers/RelationTypeUiHelper.js +16 -13
  95. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -1
  96. package/dist/lib/helpers/ScriptApiHelper.d.ts +6 -22
  97. package/dist/lib/helpers/ScriptApiHelper.js +12 -165
  98. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  99. package/dist/lib/helpers/ScriptUiHelper.js +13 -9
  100. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -1
  101. package/dist/lib/helpers/StylesheetApiHelper.d.ts +5 -20
  102. package/dist/lib/helpers/StylesheetApiHelper.js +13 -154
  103. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  104. package/dist/lib/helpers/StylesheetUiHelper.js +14 -9
  105. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  106. package/dist/lib/helpers/TelemetryDataUiHelper.js +3 -2
  107. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -1
  108. package/dist/lib/helpers/TemplateApiHelper.d.ts +8 -15
  109. package/dist/lib/helpers/TemplateApiHelper.js +51 -83
  110. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  111. package/dist/lib/helpers/TemplateUiHelper.js +25 -19
  112. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
  113. package/dist/lib/helpers/TreeApiHelper.d.ts +15 -0
  114. package/dist/lib/helpers/TreeApiHelper.js +116 -0
  115. package/dist/lib/helpers/TreeApiHelper.js.map +1 -0
  116. package/dist/lib/helpers/UiBaseLocators.d.ts +228 -230
  117. package/dist/lib/helpers/UiBaseLocators.js +871 -832
  118. package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
  119. package/dist/lib/helpers/UserGroupApiHelper.d.ts +3 -13
  120. package/dist/lib/helpers/UserGroupApiHelper.js +3 -69
  121. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  122. package/dist/lib/helpers/UserGroupUiHelper.js +49 -32
  123. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
  124. package/dist/lib/helpers/UserUiHelper.js +46 -43
  125. package/dist/lib/helpers/UserUiHelper.js.map +1 -1
  126. package/dist/lib/helpers/VariantBasedApiHelper.d.ts +23 -0
  127. package/dist/lib/helpers/VariantBasedApiHelper.js +81 -0
  128. package/dist/lib/helpers/VariantBasedApiHelper.js.map +1 -0
  129. package/dist/lib/helpers/WebhookApiHelper.d.ts +1 -0
  130. package/dist/lib/helpers/WebhookApiHelper.js +10 -11
  131. package/dist/lib/helpers/WebhookApiHelper.js.map +1 -1
  132. package/dist/lib/helpers/WebhookUiHelper.js +27 -11
  133. package/dist/lib/helpers/WebhookUiHelper.js.map +1 -1
  134. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +1 -1
  135. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -1
  136. package/dist/lib/helpers/differentAppSettingsHelpers/ExternalLoginUiHelpers.js +9 -4
  137. package/dist/lib/helpers/differentAppSettingsHelpers/ExternalLoginUiHelpers.js.map +1 -1
  138. package/dist/lib/helpers/differentAppSettingsHelpers/InstallUiHelper.js +10 -5
  139. package/dist/lib/helpers/differentAppSettingsHelpers/InstallUiHelper.js.map +1 -1
  140. package/dist/lib/helpers/index.d.ts +4 -1
  141. package/dist/lib/helpers/index.js +9 -3
  142. package/dist/lib/helpers/index.js.map +1 -1
  143. package/dist/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +1 -1
  145. package/dist/lib/helpers/BasePage.d.ts +0 -449
  146. package/dist/lib/helpers/BasePage.js +0 -547
  147. package/dist/lib/helpers/BasePage.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PathBasedTreeApiHelper = void 0;
4
+ /**
5
+ * Base class for path-based tree resources like Script, Stylesheet, PartialView.
6
+ * These resources use `path` as their key instead of `id`.
7
+ */
8
+ class PathBasedTreeApiHelper {
9
+ api;
10
+ constructor(api) {
11
+ this.api = api;
12
+ }
13
+ // === URL Builder ===
14
+ buildUrl(path = '') {
15
+ return `${this.api.baseUrl}/umbraco/management/api/v1/${this.resourcePath}${path}`;
16
+ }
17
+ buildTreeUrl(path = '') {
18
+ return `${this.api.baseUrl}/umbraco/management/api/v1/${this.treePath}${path}`;
19
+ }
20
+ extractPathFromLocation(response) {
21
+ const path = response.headers().location.split(`/v1/${this.resourcePath}/`).pop();
22
+ return decodeURIComponent(path);
23
+ }
24
+ extractFolderPathFromLocation(response) {
25
+ const path = response.headers().location.split(`/v1/${this.resourcePath}/folder/`).pop();
26
+ return decodeURIComponent(path);
27
+ }
28
+ // === CRUD Operations ===
29
+ async get(path) {
30
+ const response = await this.api.get(this.buildUrl('/' + encodeURIComponent(path)));
31
+ return await response.json();
32
+ }
33
+ async doesExist(path) {
34
+ const response = await this.api.get(this.buildUrl('/' + encodeURIComponent(path)));
35
+ return response.status() === 200;
36
+ }
37
+ async delete(path) {
38
+ return await this.api.delete(this.buildUrl('/' + encodeURIComponent(path)));
39
+ }
40
+ async updateContent(path, newContent) {
41
+ const data = { "content": newContent };
42
+ return await this.api.put(this.buildUrl('/' + encodeURIComponent(path)), data);
43
+ }
44
+ async updateName(path, newName) {
45
+ const data = { "name": newName };
46
+ const response = await this.api.put(this.buildUrl('/' + encodeURIComponent(path) + '/rename'), data);
47
+ const newPath = response.headers().location.split(`/v1/${this.resourcePath}/`).pop();
48
+ if (newPath !== undefined) {
49
+ return decodeURIComponent(newPath);
50
+ }
51
+ return undefined;
52
+ }
53
+ // === Tree Operations ===
54
+ async getAllAtRoot() {
55
+ return await this.api.get(this.buildTreeUrl('/root?skip=0&take=10000'));
56
+ }
57
+ async getChildren(path) {
58
+ const response = await this.api.get(this.buildTreeUrl(`/children?parentPath=${encodeURIComponent(path)}&skip=0&take=10000`));
59
+ const items = await response.json();
60
+ return items.items;
61
+ }
62
+ async getItems(paths) {
63
+ let pathArray = 'path=' + encodeURIComponent(paths[0]);
64
+ for (let i = 1; i < paths.length; ++i) {
65
+ pathArray += '&path=' + encodeURIComponent(paths[i]);
66
+ }
67
+ const response = await this.api.get(this.buildTreeUrl('/item?' + pathArray));
68
+ const json = await response.json();
69
+ return json !== null ? json : null;
70
+ }
71
+ // === Search ===
72
+ async doesNameExist(name) {
73
+ return await this.getByName(name);
74
+ }
75
+ async getByName(name) {
76
+ const rootItems = await this.getAllAtRoot();
77
+ const jsonItems = await rootItems.json();
78
+ for (const item of jsonItems.items) {
79
+ if (item.name === name) {
80
+ return item.isFolder ? this.getFolder(item.path) : this.get(item.path);
81
+ }
82
+ else if (item.isFolder && item.hasChildren) {
83
+ const result = await this.recurseChildren(name, item.path, false);
84
+ if (result) {
85
+ return result;
86
+ }
87
+ }
88
+ }
89
+ return false;
90
+ }
91
+ async ensureNameNotExists(name) {
92
+ const rootItems = await this.getAllAtRoot();
93
+ const jsonItems = await rootItems.json();
94
+ for (const item of jsonItems.items) {
95
+ if (item.name === name) {
96
+ return item.isFolder
97
+ ? await this.recurseDeleteChildren(item)
98
+ : await this.delete(item.path);
99
+ }
100
+ else if (item.hasChildren) {
101
+ await this.recurseChildren(name, item.path, true);
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ // === Recursive Methods ===
107
+ async recurseChildren(name, path, toDelete) {
108
+ const items = await this.getChildren(path);
109
+ for (const child of items) {
110
+ if (child.name === name) {
111
+ if (!toDelete) {
112
+ return child.isFolder ? await this.getFolder(child.path) : await this.get(child.path);
113
+ }
114
+ return child.isFolder
115
+ ? await this.recurseDeleteChildren(child)
116
+ : await this.delete(child.path);
117
+ }
118
+ else if (child.hasChildren) {
119
+ const result = await this.recurseChildren(name, child.path, toDelete);
120
+ if (result)
121
+ return result;
122
+ }
123
+ }
124
+ return false;
125
+ }
126
+ async recurseDeleteChildren(folder) {
127
+ if (!folder.hasChildren) {
128
+ return await this.deleteFolder(folder.path);
129
+ }
130
+ const items = await this.getChildren(folder.path);
131
+ for (const child of items) {
132
+ if (child.hasChildren) {
133
+ await this.recurseDeleteChildren(child);
134
+ }
135
+ else if (child.isFolder) {
136
+ await this.deleteFolder(child.path);
137
+ }
138
+ else {
139
+ await this.delete(child.path);
140
+ }
141
+ }
142
+ return await this.deleteFolder(folder.path);
143
+ }
144
+ // === Folder Operations ===
145
+ async getFolder(path) {
146
+ const response = await this.api.get(this.buildUrl('/folder/' + encodeURIComponent(path)));
147
+ return await response.json();
148
+ }
149
+ async doesFolderExist(path) {
150
+ const response = await this.api.get(this.buildUrl('/folder/' + encodeURIComponent(path)));
151
+ return response.status() === 200;
152
+ }
153
+ async createFolder(name, parentPath) {
154
+ const parentValue = parentPath ? { 'path': parentPath } : null;
155
+ const folderData = { "name": name, "parent": parentValue };
156
+ const response = await this.api.post(this.buildUrl('/folder'), folderData);
157
+ return this.extractFolderPathFromLocation(response);
158
+ }
159
+ async deleteFolder(path) {
160
+ return await this.api.delete(this.buildUrl('/folder/' + encodeURIComponent(path)));
161
+ }
162
+ }
163
+ exports.PathBasedTreeApiHelper = PathBasedTreeApiHelper;
164
+ //# sourceMappingURL=PathBasedTreeApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathBasedTreeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PathBasedTreeApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\n/**\n * Base class for path-based tree resources like Script, Stylesheet, PartialView.\n * These resources use `path` as their key instead of `id`.\n */\nexport abstract class PathBasedTreeApiHelper {\n api: ApiHelpers;\n protected abstract resourcePath: string;\n protected abstract treePath: string;\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n // === URL Builder ===\n protected buildUrl(path: string = ''): string {\n return `${this.api.baseUrl}/umbraco/management/api/v1/${this.resourcePath}${path}`;\n }\n\n protected buildTreeUrl(path: string = ''): string {\n return `${this.api.baseUrl}/umbraco/management/api/v1/${this.treePath}${path}`;\n }\n\n protected extractPathFromLocation(response: any): string {\n const path = response.headers().location.split(`/v1/${this.resourcePath}/`).pop() as string;\n return decodeURIComponent(path);\n }\n\n protected extractFolderPathFromLocation(response: any): string {\n const path = response.headers().location.split(`/v1/${this.resourcePath}/folder/`).pop() as string;\n return decodeURIComponent(path);\n }\n\n // === CRUD Operations ===\n async get(path: string): Promise<any> {\n const response = await this.api.get(this.buildUrl('/' + encodeURIComponent(path)));\n return await response.json();\n }\n\n async doesExist(path: string): Promise<boolean> {\n const response = await this.api.get(this.buildUrl('/' + encodeURIComponent(path)));\n return response.status() === 200;\n }\n\n async delete(path: string): Promise<any> {\n return await this.api.delete(this.buildUrl('/' + encodeURIComponent(path)));\n }\n\n async updateContent(path: string, newContent: string): Promise<any> {\n const data = { \"content\": newContent };\n return await this.api.put(this.buildUrl('/' + encodeURIComponent(path)), data);\n }\n\n async updateName(path: string, newName: string): Promise<string | undefined> {\n const data = { \"name\": newName };\n const response = await this.api.put(this.buildUrl('/' + encodeURIComponent(path) + '/rename'), data);\n const newPath = response.headers().location.split(`/v1/${this.resourcePath}/`).pop();\n if (newPath !== undefined) {\n return decodeURIComponent(newPath);\n }\n return undefined;\n }\n\n // === Tree Operations ===\n async getAllAtRoot(): Promise<any> {\n return await this.api.get(this.buildTreeUrl('/root?skip=0&take=10000'));\n }\n\n async getChildren(path: string): Promise<any[]> {\n const response = await this.api.get(this.buildTreeUrl(`/children?parentPath=${encodeURIComponent(path)}&skip=0&take=10000`));\n const items = await response.json();\n return items.items;\n }\n\n async getItems(paths: string[]): Promise<any> {\n let pathArray = 'path=' + encodeURIComponent(paths[0]);\n for (let i = 1; i < paths.length; ++i) {\n pathArray += '&path=' + encodeURIComponent(paths[i]);\n }\n const response = await this.api.get(this.buildTreeUrl('/item?' + pathArray));\n const json = await response.json();\n return json !== null ? json : null;\n }\n\n // === Search ===\n async doesNameExist(name: string): Promise<any> {\n return await this.getByName(name);\n }\n\n async getByName(name: string): Promise<any> {\n const rootItems = await this.getAllAtRoot();\n const jsonItems = await rootItems.json();\n\n for (const item of jsonItems.items) {\n if (item.name === name) {\n return item.isFolder ? this.getFolder(item.path) : this.get(item.path);\n } else if (item.isFolder && item.hasChildren) {\n const result = await this.recurseChildren(name, item.path, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string): Promise<any> {\n const rootItems = await this.getAllAtRoot();\n const jsonItems = await rootItems.json();\n\n for (const item of jsonItems.items) {\n if (item.name === name) {\n return item.isFolder\n ? await this.recurseDeleteChildren(item)\n : await this.delete(item.path);\n } else if (item.hasChildren) {\n await this.recurseChildren(name, item.path, true);\n }\n }\n return null;\n }\n\n // === Recursive Methods ===\n protected async recurseChildren(name: string, path: string, toDelete: boolean): Promise<any> {\n const items = await this.getChildren(path);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n return child.isFolder ? await this.getFolder(child.path) : await this.get(child.path);\n }\n return child.isFolder\n ? await this.recurseDeleteChildren(child)\n : await this.delete(child.path);\n } else if (child.hasChildren) {\n const result = await this.recurseChildren(name, child.path, toDelete);\n if (result) return result;\n }\n }\n return false;\n }\n\n protected async recurseDeleteChildren(folder: any): Promise<any> {\n if (!folder.hasChildren) {\n return await this.deleteFolder(folder.path);\n }\n const items = await this.getChildren(folder.path);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child);\n } else if (child.isFolder) {\n await this.deleteFolder(child.path);\n } else {\n await this.delete(child.path);\n }\n }\n return await this.deleteFolder(folder.path);\n }\n\n // === Folder Operations ===\n async getFolder(path: string): Promise<any> {\n const response = await this.api.get(this.buildUrl('/folder/' + encodeURIComponent(path)));\n return await response.json();\n }\n\n async doesFolderExist(path: string): Promise<boolean> {\n const response = await this.api.get(this.buildUrl('/folder/' + encodeURIComponent(path)));\n return response.status() === 200;\n }\n\n async createFolder(name: string, parentPath?: string): Promise<string | undefined> {\n const parentValue = parentPath ? { 'path': parentPath } : null;\n const folderData = { \"name\": name, \"parent\": parentValue };\n const response = await this.api.post(this.buildUrl('/folder'), folderData);\n return this.extractFolderPathFromLocation(response);\n }\n\n async deleteFolder(path: string): Promise<any> {\n return await this.api.delete(this.buildUrl('/folder/' + encodeURIComponent(path)));\n }\n}\n"]}
@@ -11,13 +11,15 @@ class ProfilingUiHelper extends UiBaseLocators_1.UiBaseLocators {
11
11
  super(page);
12
12
  this.profilingTab = page.getByRole('tab', { name: 'Profiling' });
13
13
  this.activateProfilerByDefaultToggle = page.locator("[label='Activate the profiler by default'] #toggle");
14
- this.activateProfilerByDefaultCheckbox = page.locator("[label='Activate the profiler by default'] input[type='checkbox']");
14
+ this.activateProfilerByDefaultCheckbox = page.getByLabel('Activate the profiler by default');
15
15
  }
16
16
  async clickProfilingTab() {
17
- await this.click(this.profilingTab);
17
+ await (0, test_1.expect)(this.profilingTab).toBeVisible();
18
+ await this.profilingTab.click();
18
19
  }
19
20
  async clickActivateProfilerByDefaultToggle() {
20
- await this.click(this.activateProfilerByDefaultToggle);
21
+ await (0, test_1.expect)(this.activateProfilerByDefaultToggle).toBeVisible();
22
+ await this.activateProfilerByDefaultToggle.click();
21
23
  }
22
24
  async isActivateProfilerByDefaultToggleChecked(isChecked) {
23
25
  return (0, test_1.expect)(this.activateProfilerByDefaultCheckbox).toBeChecked({ checked: isChecked });
@@ -1 +1 @@
1
- {"version":3,"file":"ProfilingUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ProfilingUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,iBAAkB,SAAQ,+BAAc;IAClC,YAAY,CAAU;IACtB,+BAA+B,CAAU;IACzC,iCAAiC,CAAU;IAE5D,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;QAC1G,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC;IAC7H,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,oCAAoC;QACxC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,wCAAwC,CAAC,SAAkB;QAC/D,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;IAC1F,CAAC;CACF;AAvBD,8CAuBC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class ProfilingUiHelper extends UiBaseLocators {\n private readonly profilingTab: Locator;\n private readonly activateProfilerByDefaultToggle: Locator;\n private readonly activateProfilerByDefaultCheckbox: Locator;\n\n constructor(page: Page) {\n super(page);\n this.profilingTab = page.getByRole('tab', {name: 'Profiling'});\n this.activateProfilerByDefaultToggle = page.locator(\"[label='Activate the profiler by default'] #toggle\");\n this.activateProfilerByDefaultCheckbox = page.locator(\"[label='Activate the profiler by default'] input[type='checkbox']\");\n }\n\n async clickProfilingTab() {\n await this.click(this.profilingTab);\n }\n\n async clickActivateProfilerByDefaultToggle() {\n await this.click(this.activateProfilerByDefaultToggle);\n }\n\n async isActivateProfilerByDefaultToggleChecked(isChecked: boolean) {\n return expect(this.activateProfilerByDefaultCheckbox).toBeChecked({checked: isChecked});\n }\n}\n"]}
1
+ {"version":3,"file":"ProfilingUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ProfilingUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,iBAAkB,SAAQ,+BAAc;IAClC,YAAY,CAAU;IACtB,+BAA+B,CAAU;IACzC,iCAAiC,CAAU;IAE5D,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;QAC1G,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,oCAAoC;QACxC,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,WAAW,EAAE,CAAC;QACjE,MAAM,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,wCAAwC,CAAC,SAAkB;QAC/D,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;IAC1F,CAAC;CACF;AAzBD,8CAyBC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class ProfilingUiHelper extends UiBaseLocators {\n private readonly profilingTab: Locator;\n private readonly activateProfilerByDefaultToggle: Locator;\n private readonly activateProfilerByDefaultCheckbox: Locator;\n\n constructor(page: Page) {\n super(page);\n this.profilingTab = page.getByRole('tab', {name: 'Profiling'});\n this.activateProfilerByDefaultToggle = page.locator(\"[label='Activate the profiler by default'] #toggle\");\n this.activateProfilerByDefaultCheckbox = page.getByLabel('Activate the profiler by default');\n }\n\n async clickProfilingTab() {\n await expect(this.profilingTab).toBeVisible();\n await this.profilingTab.click();\n }\n\n async clickActivateProfilerByDefaultToggle() {\n await expect(this.activateProfilerByDefaultToggle).toBeVisible();\n await this.activateProfilerByDefaultToggle.click();\n }\n\n async isActivateProfilerByDefaultToggleChecked(isChecked: boolean) {\n return expect(this.activateProfilerByDefaultCheckbox).toBeChecked({checked: isChecked});\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PublishedStatusUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
4
5
  const UiBaseLocators_1 = require("./UiBaseLocators");
5
6
  class PublishedStatusUiHelper extends UiBaseLocators_1.UiBaseLocators {
6
7
  publishedStatusTab;
@@ -21,25 +22,25 @@ class PublishedStatusUiHelper extends UiBaseLocators_1.UiBaseLocators {
21
22
  this.publishedCacheBox = page.locator('[headline="Published Cache Status"]');
22
23
  }
23
24
  async clickPublishedStatusTab() {
24
- await this.click(this.publishedStatusTab);
25
+ await this.publishedStatusTab.click();
25
26
  }
26
27
  async clickRefreshStatusButton() {
27
- await this.click(this.refreshStatusBtn);
28
+ await this.refreshStatusBtn.click();
28
29
  }
29
30
  async clickReloadMemoryCacheButton() {
30
- await this.click(this.reloadMemoryCacheBtn);
31
+ await this.reloadMemoryCacheBtn.click();
31
32
  }
32
33
  async clickRebuildDatabaseCacheButton() {
33
- await this.click(this.rebuildDatabaseCacheBtn);
34
+ await this.rebuildDatabaseCacheBtn.click();
34
35
  }
35
36
  async clickSnapshotInternalCacheButton() {
36
- await this.click(this.snapshotInternalCacheBtn);
37
+ await this.snapshotInternalCacheBtn.click();
37
38
  }
38
39
  async clickContinueButton() {
39
- await this.click(this.continueBtn);
40
+ await this.continueBtn.click();
40
41
  }
41
42
  async isPublishedCacheStatusVisible(status) {
42
- return await this.isVisible(this.publishedCacheBox.getByText(status));
43
+ return (0, test_1.expect)(this.publishedCacheBox.getByText(status)).toBeVisible();
43
44
  }
44
45
  }
45
46
  exports.PublishedStatusUiHelper = PublishedStatusUiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"PublishedStatusUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PublishedStatusUiHelper.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD,MAAa,uBAAwB,SAAQ,+BAAc;IACxC,kBAAkB,CAAU;IAC5B,gBAAgB,CAAU;IAC1B,oBAAoB,CAAU;IAC9B,uBAAuB,CAAU;IACjC,wBAAwB,CAAU;IAClC,WAAW,CAAU;IACrB,iBAAiB,CAAU;IAE5C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACzE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,+BAA+B;QACnC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,gCAAgC;QACpC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,MAAc;QAChD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;CACF;AA/CD,0DA+CC","sourcesContent":["import {Page, Locator} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class PublishedStatusUiHelper extends UiBaseLocators {\n private readonly publishedStatusTab: Locator;\n private readonly refreshStatusBtn: Locator;\n private readonly reloadMemoryCacheBtn: Locator;\n private readonly rebuildDatabaseCacheBtn: Locator;\n private readonly snapshotInternalCacheBtn: Locator;\n private readonly continueBtn: Locator;\n private readonly publishedCacheBox: Locator;\n\n constructor(page: Page) {\n super(page);\n this.publishedStatusTab = page.getByRole('tab', {name: 'Published Status'});\n this.refreshStatusBtn = page.getByLabel('Refresh Status');\n this.reloadMemoryCacheBtn = page.getByLabel('Reload Memory Cache');\n this.rebuildDatabaseCacheBtn = page.getByLabel('Rebuild Database Cache');\n this.snapshotInternalCacheBtn = page.getByLabel('Snapshot Internal Cache');\n this.continueBtn = page.locator('#confirm').getByLabel('Continue');\n this.publishedCacheBox = page.locator('[headline=\"Published Cache Status\"]')\n }\n\n async clickPublishedStatusTab() {\n await this.click(this.publishedStatusTab);\n }\n\n async clickRefreshStatusButton() {\n await this.click(this.refreshStatusBtn);\n }\n\n async clickReloadMemoryCacheButton() {\n await this.click(this.reloadMemoryCacheBtn);\n }\n\n async clickRebuildDatabaseCacheButton() {\n await this.click(this.rebuildDatabaseCacheBtn);\n }\n\n async clickSnapshotInternalCacheButton() {\n await this.click(this.snapshotInternalCacheBtn);\n }\n\n async clickContinueButton() {\n await this.click(this.continueBtn);\n }\n\n async isPublishedCacheStatusVisible(status: string) {\n return await this.isVisible(this.publishedCacheBox.getByText(status));\n }\n}\n"]}
1
+ {"version":3,"file":"PublishedStatusUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PublishedStatusUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,uBAAwB,SAAQ,+BAAc;IACxC,kBAAkB,CAAU;IAC5B,gBAAgB,CAAU;IAC1B,oBAAoB,CAAU;IAC9B,uBAAuB,CAAU;IACjC,wBAAwB,CAAU;IAClC,WAAW,CAAU;IACrB,iBAAiB,CAAU;IAE5C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACzE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,+BAA+B;QACnC,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,gCAAgC;QACpC,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,MAAc;QAChD,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,CAAC;CACF;AA/CD,0DA+CC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class PublishedStatusUiHelper extends UiBaseLocators {\n private readonly publishedStatusTab: Locator;\n private readonly refreshStatusBtn: Locator;\n private readonly reloadMemoryCacheBtn: Locator;\n private readonly rebuildDatabaseCacheBtn: Locator;\n private readonly snapshotInternalCacheBtn: Locator;\n private readonly continueBtn: Locator;\n private readonly publishedCacheBox: Locator;\n\n constructor(page: Page) {\n super(page);\n this.publishedStatusTab = page.getByRole('tab', {name: 'Published Status'});\n this.refreshStatusBtn = page.getByLabel('Refresh Status');\n this.reloadMemoryCacheBtn = page.getByLabel('Reload Memory Cache');\n this.rebuildDatabaseCacheBtn = page.getByLabel('Rebuild Database Cache');\n this.snapshotInternalCacheBtn = page.getByLabel('Snapshot Internal Cache');\n this.continueBtn = page.locator('#confirm').getByLabel('Continue');\n this.publishedCacheBox = page.locator('[headline=\"Published Cache Status\"]')\n }\n\n async clickPublishedStatusTab() {\n await this.publishedStatusTab.click();\n }\n\n async clickRefreshStatusButton() {\n await this.refreshStatusBtn.click();\n }\n\n async clickReloadMemoryCacheButton() {\n await this.reloadMemoryCacheBtn.click();\n }\n\n async clickRebuildDatabaseCacheButton() {\n await this.rebuildDatabaseCacheBtn.click();\n }\n\n async clickSnapshotInternalCacheButton() {\n await this.snapshotInternalCacheBtn.click();\n }\n\n async clickContinueButton() {\n await this.continueBtn.click();\n }\n\n async isPublishedCacheStatusVisible(status: string) {\n return expect(this.publishedCacheBox.getByText(status)).toBeVisible();\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RedirectManagementUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
4
5
  const UiBaseLocators_1 = require("./UiBaseLocators");
5
6
  class RedirectManagementUiHelper extends UiBaseLocators_1.UiBaseLocators {
6
7
  redirectManagementTab;
@@ -21,26 +22,30 @@ class RedirectManagementUiHelper extends UiBaseLocators_1.UiBaseLocators {
21
22
  this.redirectManagementRows = page.locator('umb-dashboard-redirect-management uui-table-row');
22
23
  }
23
24
  async clickRedirectManagementTab() {
24
- await this.click(this.redirectManagementTab);
25
+ await (0, test_1.expect)(this.redirectManagementTab).toBeVisible();
26
+ await this.redirectManagementTab.click();
25
27
  }
26
28
  async clickEnableURLTrackerButton() {
27
- await this.click(this.enableURLTrackerBtn);
29
+ await this.enableURLTrackerBtn.click();
28
30
  }
29
31
  async clickDisableURLTrackerButton() {
30
- await this.click(this.disableURLTrackerBtn);
32
+ await this.disableURLTrackerBtn.click();
31
33
  }
32
34
  async enterOriginalUrl(url) {
33
- await this.enterText(this.originalUrlTxt, url);
35
+ await this.originalUrlTxt.clear();
36
+ await this.originalUrlTxt.fill(url);
34
37
  }
35
38
  async clickSearchButton() {
36
- await this.click(this.searchBtn);
39
+ await (0, test_1.expect)(this.searchBtn).toBeVisible();
40
+ await this.searchBtn.click();
37
41
  }
38
42
  async deleteFirstRedirectURL() {
39
- await this.click(this.firstDeleteButton);
43
+ await (0, test_1.expect)(this.firstDeleteButton).toBeVisible();
44
+ await this.firstDeleteButton.click();
40
45
  await this.clickConfirmToDeleteButton();
41
46
  }
42
47
  async doesRedirectManagementRowsHaveCount(itemCount) {
43
- await this.hasCount(this.redirectManagementRows, itemCount);
48
+ await (0, test_1.expect)(this.redirectManagementRows).toHaveCount(itemCount);
44
49
  }
45
50
  }
46
51
  exports.RedirectManagementUiHelper = RedirectManagementUiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectManagementUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/RedirectManagementUiHelper.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD,MAAa,0BAA2B,SAAQ,+BAAc;IAC3C,qBAAqB,CAAU;IAC/B,mBAAmB,CAAU;IAC7B,oBAAoB,CAAU;IAC9B,cAAc,CAAU;IACxB,SAAS,CAAU;IACnB,iBAAiB,CAAU;IAC3B,sBAAsB,CAAU;IAEjD,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,yBAAyB,EAAC,CAAC,CAAC;QACtF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QACjE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,2BAA2B;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,mCAAmC,CAAC,SAAiB;QACzD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAhDD,gEAgDC","sourcesContent":["import {Page, Locator} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class RedirectManagementUiHelper extends UiBaseLocators {\n private readonly redirectManagementTab: Locator;\n private readonly enableURLTrackerBtn: Locator;\n private readonly disableURLTrackerBtn: Locator;\n private readonly originalUrlTxt: Locator;\n private readonly searchBtn: Locator;\n private readonly firstDeleteButton: Locator;\n private readonly redirectManagementRows: Locator;\n\n constructor(page: Page) {\n super(page);\n this.redirectManagementTab = page.getByRole('tab', {name: 'Redirect URL Management'});\n this.enableURLTrackerBtn = page.getByLabel('Enable URL tracker');\n this.disableURLTrackerBtn = page.getByLabel('Disable URL tracker');\n this.originalUrlTxt = page.getByLabel('Original URL');\n this.searchBtn = page.getByLabel('Search', { exact: true });\n this.firstDeleteButton = page.locator('uui-button[label=\"Delete\"]').first().locator('svg');\n this.redirectManagementRows = page.locator('umb-dashboard-redirect-management uui-table-row');\n }\n\n async clickRedirectManagementTab() {\n await this.click(this.redirectManagementTab);\n }\n\n async clickEnableURLTrackerButton() {\n await this.click(this.enableURLTrackerBtn);\n }\n\n async clickDisableURLTrackerButton() {\n await this.click(this.disableURLTrackerBtn);\n }\n\n async enterOriginalUrl(url: string) {\n await this.enterText(this.originalUrlTxt, url);\n }\n\n async clickSearchButton() {\n await this.click(this.searchBtn);\n }\n\n async deleteFirstRedirectURL() {\n await this.click(this.firstDeleteButton);\n await this.clickConfirmToDeleteButton();\n }\n\n async doesRedirectManagementRowsHaveCount(itemCount: number) {\n await this.hasCount(this.redirectManagementRows, itemCount);\n }\n}\n"]}
1
+ {"version":3,"file":"RedirectManagementUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/RedirectManagementUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,0BAA2B,SAAQ,+BAAc;IAC3C,qBAAqB,CAAU;IAC/B,mBAAmB,CAAU;IAC7B,oBAAoB,CAAU;IAC9B,cAAc,CAAU;IACxB,SAAS,CAAU;IACnB,iBAAiB,CAAU;IAC3B,sBAAsB,CAAU;IAEjD,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,yBAAyB,EAAC,CAAC,CAAC;QACtF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QACjE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,2BAA2B;QAC/B,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,mCAAmC,CAAC,SAAiB;QACzD,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AApDD,gEAoDC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class RedirectManagementUiHelper extends UiBaseLocators {\n private readonly redirectManagementTab: Locator;\n private readonly enableURLTrackerBtn: Locator;\n private readonly disableURLTrackerBtn: Locator;\n private readonly originalUrlTxt: Locator;\n private readonly searchBtn: Locator;\n private readonly firstDeleteButton: Locator;\n private readonly redirectManagementRows: Locator;\n\n constructor(page: Page) {\n super(page);\n this.redirectManagementTab = page.getByRole('tab', {name: 'Redirect URL Management'});\n this.enableURLTrackerBtn = page.getByLabel('Enable URL tracker');\n this.disableURLTrackerBtn = page.getByLabel('Disable URL tracker');\n this.originalUrlTxt = page.getByLabel('Original URL');\n this.searchBtn = page.getByLabel('Search', { exact: true });\n this.firstDeleteButton = page.locator('uui-button[label=\"Delete\"]').first().locator('svg');\n this.redirectManagementRows = page.locator('umb-dashboard-redirect-management uui-table-row');\n }\n\n async clickRedirectManagementTab() {\n await expect(this.redirectManagementTab).toBeVisible();\n await this.redirectManagementTab.click();\n }\n\n async clickEnableURLTrackerButton() {\n await this.enableURLTrackerBtn.click();\n }\n\n async clickDisableURLTrackerButton() {\n await this.disableURLTrackerBtn.click();\n }\n\n async enterOriginalUrl(url: string) {\n await this.originalUrlTxt.clear();\n await this.originalUrlTxt.fill(url);\n }\n\n async clickSearchButton() {\n await expect(this.searchBtn).toBeVisible();\n await this.searchBtn.click();\n }\n\n async deleteFirstRedirectURL() {\n await expect(this.firstDeleteButton).toBeVisible();\n await this.firstDeleteButton.click();\n await this.clickConfirmToDeleteButton();\n }\n\n async doesRedirectManagementRowsHaveCount(itemCount: number) {\n await expect(this.redirectManagementRows).toHaveCount(itemCount);\n }\n}\n"]}
@@ -1,15 +1,10 @@
1
- import { ApiHelpers } from "./ApiHelpers";
2
- export declare class RelationTypeApiHelper {
3
- api: ApiHelpers;
4
- constructor(api: ApiHelpers);
5
- get(id: string): Promise<any>;
6
- doesExist(id: string): Promise<boolean>;
7
- create(name: string, isBidirectional: boolean, isDependency: boolean, parentObjectTypeId?: string, childObjectTypeId?: string, id?: string): Promise<string | undefined>;
8
- update(id: string, relationType: any): Promise<import("playwright-core").APIResponse>;
9
- delete(id: string): Promise<import("playwright-core").APIResponse>;
10
- getAllAtRoot(): Promise<import("playwright-core").APIResponse>;
11
- getItems(ids: any): Promise<any>;
12
- ensureNameNotExists(name: string): Promise<import("playwright-core").APIResponse | null>;
1
+ import { TreeApiHelper } from "./TreeApiHelper";
2
+ export declare class RelationTypeApiHelper extends TreeApiHelper {
3
+ protected resourcePath: string;
4
+ protected treePath: string;
5
+ createRelationType(name: string, isBidirectional: boolean, isDependency: boolean, parentObjectTypeId?: string, childObjectTypeId?: string, id?: string): Promise<string | undefined>;
6
+ getItems(ids: string[]): Promise<any>;
13
7
  getByName(name: string): Promise<any>;
8
+ ensureNameNotExists(name: string): Promise<any>;
14
9
  doesNameExist(name: string): Promise<boolean>;
15
10
  }
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RelationTypeApiHelper = void 0;
4
- class RelationTypeApiHelper {
5
- api;
6
- constructor(api) {
7
- this.api = api;
8
- }
9
- async get(id) {
10
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id);
11
- return await response.json();
12
- }
13
- async doesExist(id) {
14
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id);
15
- return response.status() === 200;
16
- }
17
- async create(name, isBidirectional, isDependency, parentObjectTypeId, childObjectTypeId, id) {
4
+ const TreeApiHelper_1 = require("./TreeApiHelper");
5
+ class RelationTypeApiHelper extends TreeApiHelper_1.TreeApiHelper {
6
+ resourcePath = 'relation-type';
7
+ treePath = 'tree/relation-type';
8
+ // RelationType-specific create with different signature
9
+ async createRelationType(name, isBidirectional, isDependency, parentObjectTypeId, childObjectTypeId, id) {
18
10
  const relationTypeData = {
19
11
  "name": name,
20
12
  "isBidirectional": isBidirectional,
@@ -23,59 +15,46 @@ class RelationTypeApiHelper {
23
15
  "isDependency": isDependency,
24
16
  "id": id
25
17
  };
26
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/relation-type', relationTypeData);
27
- // Returns the id of the created relationType
18
+ const response = await this.api.post(this.buildUrl(), relationTypeData);
28
19
  return response.headers().location.split("/").pop();
29
20
  }
30
- async update(id, relationType) {
31
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id, relationType);
32
- }
33
- async delete(id) {
34
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id);
35
- }
36
- async getAllAtRoot() {
37
- return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/relation-type/root?skip=0&take=10000');
38
- }
39
21
  async getItems(ids) {
40
22
  let idArray = 'id=' + ids[0];
41
- let i;
42
- for (i = 1; i < ids.length; ++i) {
23
+ for (let i = 1; i < ids.length; ++i) {
43
24
  idArray += '&id=' + ids[i];
44
25
  }
45
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/item?' + idArray);
26
+ const response = await this.api.get(this.buildUrl('/item?' + idArray));
46
27
  const json = await response.json();
47
- if (json !== null) {
48
- return json;
49
- }
50
- return null;
28
+ return json !== null ? json : null;
51
29
  }
52
- async ensureNameNotExists(name) {
53
- const rootRelationType = await this.getAllAtRoot();
54
- const jsonRelationType = await rootRelationType.json();
55
- for (const relationType of jsonRelationType.items) {
56
- if (relationType.name === name && relationType.id !== null) {
57
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + relationType.id);
30
+ // Override - RelationType has no folders
31
+ async getByName(name) {
32
+ const rootItems = await this.getAllAtRoot();
33
+ const jsonItems = await rootItems.json();
34
+ for (const item of jsonItems.items) {
35
+ if (item.name === name && item.id !== null) {
36
+ return await this.get(item.id);
58
37
  }
59
38
  }
60
39
  return null;
61
40
  }
62
- async getByName(name) {
63
- const rootRelationType = await this.getAllAtRoot();
64
- const jsonRelationType = await rootRelationType.json();
65
- for (const relationType of jsonRelationType.items) {
66
- if (relationType.name === name && relationType.id !== null) {
67
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + relationType.id);
68
- return await response.json();
41
+ // Override - RelationType has no folders
42
+ async ensureNameNotExists(name) {
43
+ const rootItems = await this.getAllAtRoot();
44
+ const jsonItems = await rootItems.json();
45
+ for (const item of jsonItems.items) {
46
+ if (item.name === name && item.id !== null) {
47
+ return await this.delete(item.id);
69
48
  }
70
49
  }
71
50
  return null;
72
51
  }
73
52
  async doesNameExist(name) {
74
- const rootRelationType = await this.getAllAtRoot();
75
- const jsonRelationType = await rootRelationType.json();
53
+ const rootItems = await this.getAllAtRoot();
54
+ const jsonItems = await rootItems.json();
76
55
  if (name !== null) {
77
- for (const relationType of jsonRelationType.items) {
78
- if (relationType.name === name) {
56
+ for (const item of jsonItems.items) {
57
+ if (item.name === name) {
79
58
  return true;
80
59
  }
81
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RelationTypeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/RelationTypeApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class RelationTypeApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id);\n return await response.json();\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id);\n return response.status() === 200;\n }\n\n async create(name: string, isBidirectional: boolean, isDependency: boolean, parentObjectTypeId?: string, childObjectTypeId?: string, id?: string) {\n const relationTypeData = {\n \"name\": name,\n \"isBidirectional\": isBidirectional,\n \"parentObjectType\": parentObjectTypeId,\n \"childObjectType\": childObjectTypeId,\n \"isDependency\": isDependency,\n \"id\": id\n };\n\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/relation-type', relationTypeData);\n // Returns the id of the created relationType\n return response.headers().location.split(\"/\").pop();\n }\n\n async update(id: string, relationType) {\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id, relationType);\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + id);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/relation-type/root?skip=0&take=10000');\n }\n\n async getItems(ids) {\n let idArray = 'id=' + ids[0];\n let i: number;\n\n for (i = 1; i < ids.length; ++i) {\n idArray += '&id=' + ids[i];\n }\n\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/item?' + idArray);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async ensureNameNotExists(name: string) {\n const rootRelationType = await this.getAllAtRoot();\n const jsonRelationType = await rootRelationType.json();\n\n for (const relationType of jsonRelationType.items) {\n if (relationType.name === name && relationType.id !== null) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + relationType.id);\n }\n }\n return null;\n }\n\n async getByName(name: string) {\n const rootRelationType = await this.getAllAtRoot();\n const jsonRelationType = await rootRelationType.json();\n\n for (const relationType of jsonRelationType.items) {\n if (relationType.name === name && relationType.id !== null ) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/relation-type/' + relationType.id);\n return await response.json();\n }\n }\n return null;\n }\n\n async doesNameExist(name: string) {\n const rootRelationType = await this.getAllAtRoot();\n const jsonRelationType = await rootRelationType.json();\n\n if (name !== null) {\n for (const relationType of jsonRelationType.items) {\n if (relationType.name === name) {\n return true;\n }\n }\n }\n return false;\n }\n}"]}
1
+ {"version":3,"file":"RelationTypeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/RelationTypeApiHelper.ts"],"names":[],"mappings":";;;AAAA,mDAA8C;AAE9C,MAAa,qBAAsB,SAAQ,6BAAa;IAC5C,YAAY,GAAG,eAAe,CAAC;IAC/B,QAAQ,GAAG,oBAAoB,CAAC;IAE1C,wDAAwD;IACxD,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,eAAwB,EAAE,YAAqB,EAAE,kBAA2B,EAAE,iBAA0B,EAAE,EAAW;QAC1J,MAAM,gBAAgB,GAAG;YACvB,MAAM,EAAE,IAAI;YACZ,iBAAiB,EAAE,eAAe;YAClC,kBAAkB,EAAE,kBAAkB;YACtC,iBAAiB,EAAE,iBAAiB;YACpC,cAAc,EAAE,YAAY;YAC5B,IAAI,EAAE,EAAE;SACT,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACxE,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAa;QAC1B,IAAI,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACnC,OAAO,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC5B;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;YAClC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;gBAC1C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChC;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;YAClC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;gBAC1C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACnC;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEzC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;gBAClC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;oBACtB,OAAO,IAAI,CAAC;iBACb;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAnED,sDAmEC","sourcesContent":["import {TreeApiHelper} from \"./TreeApiHelper\";\n\nexport class RelationTypeApiHelper extends TreeApiHelper {\n protected resourcePath = 'relation-type';\n protected treePath = 'tree/relation-type';\n\n // RelationType-specific create with different signature\n async createRelationType(name: string, isBidirectional: boolean, isDependency: boolean, parentObjectTypeId?: string, childObjectTypeId?: string, id?: string) {\n const relationTypeData = {\n \"name\": name,\n \"isBidirectional\": isBidirectional,\n \"parentObjectType\": parentObjectTypeId,\n \"childObjectType\": childObjectTypeId,\n \"isDependency\": isDependency,\n \"id\": id\n };\n const response = await this.api.post(this.buildUrl(), relationTypeData);\n return response.headers().location.split(\"/\").pop();\n }\n\n async getItems(ids: string[]) {\n let idArray = 'id=' + ids[0];\n for (let i = 1; i < ids.length; ++i) {\n idArray += '&id=' + ids[i];\n }\n const response = await this.api.get(this.buildUrl('/item?' + idArray));\n const json = await response.json();\n return json !== null ? json : null;\n }\n\n // Override - RelationType has no folders\n async getByName(name: string): Promise<any> {\n const rootItems = await this.getAllAtRoot();\n const jsonItems = await rootItems.json();\n\n for (const item of jsonItems.items) {\n if (item.name === name && item.id !== null) {\n return await this.get(item.id);\n }\n }\n return null;\n }\n\n // Override - RelationType has no folders\n async ensureNameNotExists(name: string): Promise<any> {\n const rootItems = await this.getAllAtRoot();\n const jsonItems = await rootItems.json();\n\n for (const item of jsonItems.items) {\n if (item.name === name && item.id !== null) {\n return await this.delete(item.id);\n }\n }\n return null;\n }\n\n async doesNameExist(name: string): Promise<boolean> {\n const rootItems = await this.getAllAtRoot();\n const jsonItems = await rootItems.json();\n\n if (name !== null) {\n for (const item of jsonItems.items) {\n if (item.name === name) {\n return true;\n }\n }\n }\n return false;\n }\n}"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RelationTypeUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
4
5
  const UiBaseLocators_1 = require("./UiBaseLocators");
5
6
  class RelationTypeUiHelper extends UiBaseLocators_1.UiBaseLocators {
6
7
  relationTypeNameTxt;
@@ -36,7 +37,8 @@ class RelationTypeUiHelper extends UiBaseLocators_1.UiBaseLocators {
36
37
  await this.clickActionsMenuForName(name);
37
38
  }
38
39
  async goToRelationTypeWithName(name) {
39
- await this.click(this.relationTypeCollection.getByText(name));
40
+ await (0, test_1.expect)(this.relationTypeCollection.getByText(name)).toBeVisible();
41
+ await this.relationTypeCollection.getByText(name).click();
40
42
  await this.waitUntilUiLoaderIsNoLongerVisible();
41
43
  }
42
44
  async clickRootFolderCaretButton() {
@@ -47,40 +49,41 @@ class RelationTypeUiHelper extends UiBaseLocators_1.UiBaseLocators {
47
49
  }
48
50
  async openRelationTypeByNameAtRoot(relationTypeName) {
49
51
  await this.clickRootFolderCaretButton();
50
- await this.click(this.page.getByLabel(relationTypeName));
52
+ await this.page.getByLabel(relationTypeName).click();
51
53
  }
52
54
  async enterRelationTypeName(name) {
53
- await this.enterText(this.relationTypeNameTxt, name);
55
+ await this.relationTypeNameTxt.clear();
56
+ await this.relationTypeNameTxt.fill(name);
54
57
  }
55
58
  async clickParentToChildRadioButton() {
56
- await this.click(this.parentToChildRadioBtn);
59
+ await this.parentToChildRadioBtn.click();
57
60
  }
58
61
  async doesParentTypeContainValue(value) {
59
- await this.containsText(this.relationTypeParentType, value);
62
+ await (0, test_1.expect)(this.relationTypeParentType).toContainText(value);
60
63
  }
61
64
  async doesChildTypeContainValue(value) {
62
- await this.containsText(this.relationTypeChildType, value);
65
+ await (0, test_1.expect)(this.relationTypeChildType).toContainText(value);
63
66
  }
64
67
  async doesBidirectionalContainValue(value) {
65
- await this.containsText(this.relationTypeBidirectional, value);
68
+ await (0, test_1.expect)(this.relationTypeBidirectional).toContainText(value);
66
69
  }
67
70
  async doesDependencyContainValue(value) {
68
- await this.containsText(this.relationTypeDependency, value);
71
+ await (0, test_1.expect)(this.relationTypeDependency).toContainText(value);
69
72
  }
70
73
  async isRelationWithParentAndChildVisible(parent, child, isVisible = true) {
71
- await this.isVisible(this.relationsTableRow.filter({ has: this.page.locator('uui-table-cell').first().getByText(parent) }).filter({ has: this.page.locator('uui-table-cell').nth(1).getByText(child) }), isVisible);
74
+ await (0, test_1.expect)(this.relationsTableRow.filter({ has: this.page.locator('uui-table-cell').first().getByText(parent) }).filter({ has: this.page.locator('uui-table-cell').nth(1).getByText(child) })).toBeVisible({ visible: isVisible });
72
75
  }
73
76
  async clickBidirectionalRadioButton() {
74
- await this.click(this.bidirectionalRadioBtn);
77
+ await this.bidirectionalRadioBtn.click();
75
78
  }
76
79
  async clickIsDependencyToggle() {
77
- await this.click(this.isDependencyToggle);
80
+ await this.isDependencyToggle.click();
78
81
  }
79
82
  async selectParentOption(option) {
80
- await this.selectByText(this.parentDropDownBox, option);
83
+ await this.parentDropDownBox.selectOption({ label: option });
81
84
  }
82
85
  async selectChildOption(option) {
83
- await this.selectByText(this.childDropDownBox, option);
86
+ await this.childDropDownBox.selectOption({ label: option });
84
87
  }
85
88
  }
86
89
  exports.RelationTypeUiHelper = RelationTypeUiHelper;