@umbraco/playwright-testhelpers 2.0.0-beta.7 → 2.0.0-beta.71

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 (183) hide show
  1. package/dist/lib/helpers/ApiHelpers.d.ts +38 -4
  2. package/dist/lib/helpers/ApiHelpers.js +133 -4
  3. package/dist/lib/helpers/ApiHelpers.js.map +1 -1
  4. package/dist/lib/helpers/ConstantHelper.js.map +1 -1
  5. package/dist/lib/helpers/ContentUiHelper.d.ts +105 -0
  6. package/dist/lib/helpers/ContentUiHelper.js +302 -0
  7. package/dist/lib/helpers/ContentUiHelper.js.map +1 -0
  8. package/dist/lib/helpers/DataTypeApiHelper.d.ts +76 -14
  9. package/dist/lib/helpers/DataTypeApiHelper.js +618 -132
  10. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  11. package/dist/lib/helpers/DataTypeUiHelper.d.ts +260 -0
  12. package/dist/lib/helpers/DataTypeUiHelper.js +827 -0
  13. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -0
  14. package/dist/lib/helpers/DictionaryApiHelper.d.ts +12 -8
  15. package/dist/lib/helpers/DictionaryApiHelper.js +104 -66
  16. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  17. package/dist/lib/helpers/DictionaryUiHelper.d.ts +32 -0
  18. package/dist/lib/helpers/DictionaryUiHelper.js +100 -0
  19. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -0
  20. package/dist/lib/helpers/DocumentApiHelper.d.ts +23 -0
  21. package/dist/lib/helpers/DocumentApiHelper.js +240 -0
  22. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  23. package/dist/lib/helpers/DocumentBlueprintApiHelper.d.ts +18 -0
  24. package/dist/lib/helpers/DocumentBlueprintApiHelper.js +126 -0
  25. package/dist/lib/helpers/DocumentBlueprintApiHelper.js.map +1 -0
  26. package/dist/lib/helpers/DocumentBlueprintUiHelper.d.ts +18 -0
  27. package/dist/lib/helpers/DocumentBlueprintUiHelper.js +54 -0
  28. package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -0
  29. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +37 -0
  30. package/dist/lib/helpers/DocumentTypeApiHelper.js +464 -0
  31. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -0
  32. package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +35 -0
  33. package/dist/lib/helpers/DocumentTypeUiHelper.js +98 -0
  34. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -0
  35. package/dist/lib/helpers/ExamineManagementUiHelper.d.ts +15 -0
  36. package/dist/lib/helpers/ExamineManagementUiHelper.js +38 -0
  37. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -0
  38. package/dist/lib/helpers/HealthCheckApiHelper.d.ts +13 -0
  39. package/dist/lib/helpers/HealthCheckApiHelper.js +47 -0
  40. package/dist/lib/helpers/HealthCheckApiHelper.js.map +1 -0
  41. package/dist/lib/helpers/HealthCheckUiHelper.d.ts +23 -0
  42. package/dist/lib/helpers/HealthCheckUiHelper.js +59 -0
  43. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -0
  44. package/dist/lib/helpers/IndexerApiHelper.d.ts +7 -0
  45. package/dist/lib/helpers/IndexerApiHelper.js +19 -0
  46. package/dist/lib/helpers/IndexerApiHelper.js.map +1 -0
  47. package/dist/lib/helpers/LanguageApiHelper.d.ts +8 -4
  48. package/dist/lib/helpers/LanguageApiHelper.js +46 -26
  49. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  50. package/dist/lib/helpers/LanguageUiHelper.d.ts +23 -0
  51. package/dist/lib/helpers/LanguageUiHelper.js +68 -0
  52. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -0
  53. package/dist/lib/helpers/LogViewerUiHelper.d.ts +37 -0
  54. package/dist/lib/helpers/LogViewerUiHelper.js +102 -0
  55. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -0
  56. package/dist/lib/helpers/LoginUiHelper.d.ts +11 -0
  57. package/dist/lib/helpers/LoginUiHelper.js +30 -0
  58. package/dist/lib/helpers/LoginUiHelper.js.map +1 -0
  59. package/dist/lib/helpers/MediaApiHelper.d.ts +22 -0
  60. package/dist/lib/helpers/MediaApiHelper.js +168 -0
  61. package/dist/lib/helpers/MediaApiHelper.js.map +1 -0
  62. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +32 -0
  63. package/dist/lib/helpers/MediaTypeApiHelper.js +390 -0
  64. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -0
  65. package/dist/lib/helpers/MediaTypeUiHelper.d.ts +14 -0
  66. package/dist/lib/helpers/MediaTypeUiHelper.js +38 -0
  67. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -0
  68. package/dist/lib/helpers/MediaUiHelper.d.ts +36 -0
  69. package/dist/lib/helpers/MediaUiHelper.js +115 -0
  70. package/dist/lib/helpers/MediaUiHelper.js.map +1 -0
  71. package/dist/lib/helpers/MemberApiHelper.d.ts +16 -0
  72. package/dist/lib/helpers/MemberApiHelper.js +88 -0
  73. package/dist/lib/helpers/MemberApiHelper.js.map +1 -0
  74. package/dist/lib/helpers/MemberGroupApiHelper.d.ts +14 -0
  75. package/dist/lib/helpers/MemberGroupApiHelper.js +62 -0
  76. package/dist/lib/helpers/MemberGroupApiHelper.js.map +1 -0
  77. package/dist/lib/helpers/MemberGroupUiHelper.d.ts +15 -0
  78. package/dist/lib/helpers/MemberGroupUiHelper.js +40 -0
  79. package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -0
  80. package/dist/lib/helpers/MemberTypeApiHelper.d.ts +17 -0
  81. package/dist/lib/helpers/MemberTypeApiHelper.js +121 -0
  82. package/dist/lib/helpers/MemberTypeApiHelper.js.map +1 -0
  83. package/dist/lib/helpers/MemberTypeUiHelper.d.ts +13 -0
  84. package/dist/lib/helpers/MemberTypeUiHelper.js +35 -0
  85. package/dist/lib/helpers/MemberTypeUiHelper.js.map +1 -0
  86. package/dist/lib/helpers/MemberUiHelper.d.ts +40 -0
  87. package/dist/lib/helpers/MemberUiHelper.js +114 -0
  88. package/dist/lib/helpers/MemberUiHelper.js.map +1 -0
  89. package/dist/lib/helpers/ModelsBuilderApiHelper.d.ts +6 -0
  90. package/dist/lib/helpers/ModelsBuilderApiHelper.js +15 -0
  91. package/dist/lib/helpers/ModelsBuilderApiHelper.js.map +1 -0
  92. package/dist/lib/helpers/ModelsBuilderUiHelper.d.ts +9 -0
  93. package/dist/lib/helpers/ModelsBuilderUiHelper.js +22 -0
  94. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -0
  95. package/dist/lib/helpers/ObjectTypesApiHelper.d.ts +7 -0
  96. package/dist/lib/helpers/ObjectTypesApiHelper.js +25 -0
  97. package/dist/lib/helpers/ObjectTypesApiHelper.js.map +1 -0
  98. package/dist/lib/helpers/PackageApiHelper.d.ts +3 -2
  99. package/dist/lib/helpers/PackageApiHelper.js +6 -3
  100. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  101. package/dist/lib/helpers/PackageUiHelper.d.ts +49 -0
  102. package/dist/lib/helpers/PackageUiHelper.js +134 -0
  103. package/dist/lib/helpers/PackageUiHelper.js.map +1 -0
  104. package/dist/lib/helpers/PartialViewApiHelper.d.ts +14 -10
  105. package/dist/lib/helpers/PartialViewApiHelper.js +124 -98
  106. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  107. package/dist/lib/helpers/PartialViewUiHelper.d.ts +19 -0
  108. package/dist/lib/helpers/PartialViewUiHelper.js +59 -0
  109. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -0
  110. package/dist/lib/helpers/ProfilingUiHelper.d.ts +11 -0
  111. package/dist/lib/helpers/ProfilingUiHelper.js +27 -0
  112. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -0
  113. package/dist/lib/helpers/PublishedCacheApiHelper.d.ts +6 -0
  114. package/dist/lib/helpers/PublishedCacheApiHelper.js +15 -0
  115. package/dist/lib/helpers/PublishedCacheApiHelper.js.map +1 -0
  116. package/dist/lib/helpers/PublishedStatusUiHelper.d.ts +19 -0
  117. package/dist/lib/helpers/PublishedStatusUiHelper.js +47 -0
  118. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -0
  119. package/dist/lib/helpers/RedirectManagementApiHelper.d.ts +10 -0
  120. package/dist/lib/helpers/RedirectManagementApiHelper.js +30 -0
  121. package/dist/lib/helpers/RedirectManagementApiHelper.js.map +1 -0
  122. package/dist/lib/helpers/RedirectManagementUiHelper.d.ts +17 -0
  123. package/dist/lib/helpers/RedirectManagementUiHelper.js +45 -0
  124. package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -0
  125. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +15 -0
  126. package/dist/lib/helpers/{RelationType.js → RelationTypeApiHelper.js} +45 -58
  127. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -0
  128. package/dist/lib/helpers/RelationTypeUiHelper.d.ts +21 -0
  129. package/dist/lib/helpers/RelationTypeUiHelper.js +55 -0
  130. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -0
  131. package/dist/lib/helpers/ScriptApiHelper.d.ts +5 -3
  132. package/dist/lib/helpers/ScriptApiHelper.js +44 -26
  133. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  134. package/dist/lib/helpers/ScriptUiHelper.d.ts +18 -0
  135. package/dist/lib/helpers/ScriptUiHelper.js +59 -0
  136. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -0
  137. package/dist/lib/helpers/StylesheetApiHelper.d.ts +6 -4
  138. package/dist/lib/helpers/StylesheetApiHelper.js +47 -41
  139. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  140. package/dist/lib/helpers/StylesheetUiHelper.d.ts +22 -28
  141. package/dist/lib/helpers/StylesheetUiHelper.js +72 -75
  142. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  143. package/dist/lib/helpers/TelemetryDataUiHelper.d.ts +10 -0
  144. package/dist/lib/helpers/TelemetryDataUiHelper.js +25 -0
  145. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -0
  146. package/dist/lib/helpers/TemplateApiHelper.d.ts +1 -0
  147. package/dist/lib/helpers/TemplateApiHelper.js +6 -0
  148. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  149. package/dist/lib/helpers/TemplateUiHelper.d.ts +25 -0
  150. package/dist/lib/helpers/TemplateUiHelper.js +93 -0
  151. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -0
  152. package/dist/lib/helpers/TemporaryFileApiHelper.d.ts +1 -1
  153. package/dist/lib/helpers/TemporaryFileApiHelper.js +6 -10
  154. package/dist/lib/helpers/TemporaryFileApiHelper.js.map +1 -1
  155. package/dist/lib/helpers/UiBaseLocators.d.ts +220 -0
  156. package/dist/lib/helpers/UiBaseLocators.js +698 -0
  157. package/dist/lib/helpers/UiBaseLocators.js.map +1 -0
  158. package/dist/lib/helpers/UiHelpers.d.ts +58 -9
  159. package/dist/lib/helpers/UiHelpers.js +90 -39
  160. package/dist/lib/helpers/UiHelpers.js.map +1 -1
  161. package/dist/lib/helpers/UserApiHelper.d.ts +16 -9
  162. package/dist/lib/helpers/UserApiHelper.js +64 -19
  163. package/dist/lib/helpers/UserApiHelper.js.map +1 -1
  164. package/dist/lib/helpers/UserGroupApiHelper.d.ts +5 -3
  165. package/dist/lib/helpers/UserGroupApiHelper.js +20 -19
  166. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  167. package/dist/lib/helpers/UserGroupUiHelper.d.ts +20 -0
  168. package/dist/lib/helpers/UserGroupUiHelper.js +56 -0
  169. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -0
  170. package/dist/lib/helpers/UserUiHelper.d.ts +73 -0
  171. package/dist/lib/helpers/UserUiHelper.js +200 -0
  172. package/dist/lib/helpers/UserUiHelper.js.map +1 -0
  173. package/dist/lib/helpers/WelcomeDashboardUiHelper.d.ts +9 -0
  174. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +22 -0
  175. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -0
  176. package/dist/lib/helpers/testExtension.js +5 -0
  177. package/dist/lib/helpers/testExtension.js.map +1 -1
  178. package/dist/tsconfig.tsbuildinfo +1 -1
  179. package/dist/umbraco.config.js +1 -1
  180. package/dist/umbraco.config.js.map +1 -1
  181. package/package.json +9 -11
  182. package/dist/lib/helpers/RelationType.d.ts +0 -15
  183. package/dist/lib/helpers/RelationType.js.map +0 -1
@@ -7,40 +7,47 @@ class StylesheetApiHelper {
7
7
  this.api = api;
8
8
  }
9
9
  async get(path) {
10
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);
11
- const json = await response.json();
12
- if (json !== null) {
13
- return json;
14
- }
15
- return null;
10
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
11
+ return await response.json();
16
12
  }
17
13
  async doesExist(path) {
18
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);
14
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
19
15
  return response.status() === 200;
20
16
  }
21
- async create(name, content, parentPath = "") {
17
+ async create(name, content, parentPath) {
22
18
  const stylesheetData = {
23
19
  "name": name,
24
- "content": content,
25
- "parentPath": parentPath
20
+ "parent": parentPath ? { "path": parentPath } : null,
21
+ "content": content
26
22
  };
27
23
  const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);
28
24
  // Returns the path of the created stylesheet
29
- return response.headers().location.split("=").pop();
25
+ const path = response.headers().location.split("/v1/stylesheet/").pop();
26
+ return decodeURIComponent(path);
30
27
  }
31
- async update(stylesheet) {
28
+ async updateName(path, newName) {
32
29
  const stylesheetData = {
33
- "name": stylesheet.name,
34
- "content": stylesheet.content,
35
- "existingPath": stylesheet.path
30
+ "name": newName
36
31
  };
37
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);
32
+ const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path) + '/rename', stylesheetData);
33
+ // Returns the path of the created Stylesheet
34
+ const newPath = response.headers().location.split("/v1/stylesheet/").pop();
35
+ if (newPath !== undefined) {
36
+ return decodeURIComponent(newPath);
37
+ }
38
+ return undefined;
39
+ }
40
+ async updateContent(path, newContent) {
41
+ const stylesheetData = {
42
+ "content": newContent
43
+ };
44
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path), stylesheetData);
38
45
  }
39
46
  async delete(path) {
40
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);
47
+ return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
41
48
  }
42
49
  async getChildren(path) {
43
- const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/stylesheet/children?path=${path}&skip=0&take=10000`);
50
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/stylesheet/children?parentPath=${path}&skip=0&take=10000`);
44
51
  const items = await response.json();
45
52
  return items.items;
46
53
  }
@@ -128,39 +135,38 @@ class StylesheetApiHelper {
128
135
  }
129
136
  // Folder
130
137
  async getFolder(path) {
131
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);
132
- const json = await response.json();
133
- if (json !== null) {
134
- return json;
135
- }
136
- return null;
138
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
139
+ return await response.json();
137
140
  }
138
141
  async doesFolderExist(path) {
139
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);
142
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
140
143
  return response.status() === 200;
141
144
  }
142
- async createFolder(name, parentPath = "") {
145
+ async createFolder(name, parentPath = "/") {
143
146
  const stylesheetFolderData = {
144
147
  "name": name,
145
- "parentPath": parentPath
148
+ "parent": parentPath ? { "path": parentPath } : null
146
149
  };
147
150
  const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder', stylesheetFolderData);
148
- // Returns the id of the created stylesheetFolder
149
- const json = await response.json();
150
- return json.path;
151
+ // Returns the path of the created Stylesheet folder
152
+ const path = response.headers().location.split("/v1/stylesheet/folder/").pop();
153
+ if (path !== undefined) {
154
+ return decodeURIComponent(path);
155
+ }
156
+ return undefined;
151
157
  }
152
158
  async deleteFolder(path) {
153
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);
154
- }
155
- async doesRuleNameExist(path, name) {
156
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/rich-text/rules?path=' + path);
157
- const rulesJson = await response.json();
158
- for (const rule of rulesJson.rules) {
159
- if (rule.name === name) {
160
- return true;
161
- }
162
- }
163
- return false;
159
+ return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
160
+ }
161
+ async createDefaultStylesheet(name) {
162
+ await this.ensureNameNotExists(name);
163
+ return await this.create(name, "/*\n");
164
+ }
165
+ async encodeStylesheetPath(path) {
166
+ let encodedPath = encodeURIComponent(path);
167
+ // Replace the dot with the required encoding
168
+ encodedPath = encodedPath.replace(/\./g, '%25dot%25');
169
+ return encodedPath;
164
170
  }
165
171
  }
166
172
  exports.StylesheetApiHelper = StylesheetApiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"StylesheetApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/StylesheetApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class StylesheetApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async doesExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);\n return response.status() === 200;\n }\n\n async create(name: string, content: string, parentPath: string = \"\") {\n const stylesheetData = {\n \"name\": name,\n \"content\": content,\n \"parentPath\": parentPath\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);\n // Returns the path of the created stylesheet\n return response.headers().location.split(\"=\").pop();\n }\n\n async update(stylesheet) {\n const stylesheetData = {\n \"name\": stylesheet.name,\n \"content\": stylesheet.content,\n \"existingPath\": stylesheet.path\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);\n }\n\n async getChildren(path: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/stylesheet/children?path=${path}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');\n }\n\n async getByName(name: string) {\n const rootStylesheet = await this.getAllAtRoot();\n const jsonStylesheet = await rootStylesheet.json();\n\n for (const stylesheet of jsonStylesheet.items) {\n if (stylesheet.name === name) {\n if (stylesheet.isFolder) {\n return this.getFolder(stylesheet.path);\n } else {\n return this.get(stylesheet.path);\n }\n } else if (stylesheet.isFolder && stylesheet.hasChildren) {\n const result = await this.recurseChildren(name, stylesheet.path, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootStylesheet = await this.getAllAtRoot();\n const jsonStylesheet = await rootStylesheet.json();\n\n for (const stylesheet of jsonStylesheet.items) {\n if (stylesheet.name === name) {\n if (stylesheet.isFolder) {\n return await this.recurseDeleteChildren(stylesheet);\n }\n return await this.delete(stylesheet.path);\n } else if (stylesheet.hasChildren) {\n await this.recurseChildren(name, stylesheet.path, true);\n\n }\n }\n return null;\n }\n\n private async recurseChildren(name: string, path: string, toDelete: boolean) {\n const items = await this.getChildren(path);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n if (child.isFolder) {\n return await this.getFolder(child.path);\n }\n return await this.get(child.path);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.path);\n\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.path, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(stylesheetFolder) {\n if (!stylesheetFolder.hasChildren) {\n return await this.deleteFolder(stylesheetFolder.path);\n }\n const items = await this.getChildren(stylesheetFolder.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(stylesheetFolder.path);\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async doesFolderExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);\n return response.status() === 200;\n }\n\n async createFolder(name: string, parentPath = \"\") {\n const stylesheetFolderData =\n {\n \"name\": name,\n \"parentPath\": parentPath\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder', stylesheetFolderData);\n // Returns the id of the created stylesheetFolder\n const json = await response.json();\n return json.path;\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);\n }\n\n async doesRuleNameExist(path: string, name : string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/rich-text/rules?path=' + path);\n const rulesJson = await response.json();\n\n for (const rule of rulesJson.rules) {\n if (rule.name === name) {\n return true;\n }\n }\n return false; \n }\n}"]}
1
+ {"version":3,"file":"StylesheetApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/StylesheetApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class StylesheetApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));\n return await response.json();\n }\n\n async doesExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async create(name: string, content: string, parentPath?: string) {\n const stylesheetData = {\n \"name\": name,\n \"parent\": parentPath ? {\"path\": parentPath} : null,\n \"content\": content\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);\n // Returns the path of the created stylesheet\n const path = response.headers().location.split(\"/v1/stylesheet/\").pop() as string;\n return decodeURIComponent(path);\n }\n\n async updateName(path: string, newName: string) {\n const stylesheetData = {\n \"name\": newName\n };\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path) + '/rename', stylesheetData);\n // Returns the path of the created Stylesheet\n const newPath = response.headers().location.split(\"/v1/stylesheet/\").pop();\n if (newPath !== undefined) {\n return decodeURIComponent(newPath);\n }\n return undefined;\n }\n\n async updateContent(path: string, newContent: string) {\n const stylesheetData = {\n \"content\": newContent\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path), stylesheetData);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));\n }\n\n async getChildren(path: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/stylesheet/children?parentPath=${path}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');\n }\n\n async getByName(name: string) {\n const rootStylesheet = await this.getAllAtRoot();\n const jsonStylesheet = await rootStylesheet.json();\n\n for (const stylesheet of jsonStylesheet.items) {\n if (stylesheet.name === name) {\n if (stylesheet.isFolder) {\n return this.getFolder(stylesheet.path);\n } else {\n return this.get(stylesheet.path);\n }\n } else if (stylesheet.isFolder && stylesheet.hasChildren) {\n const result = await this.recurseChildren(name, stylesheet.path, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootStylesheet = await this.getAllAtRoot();\n const jsonStylesheet = await rootStylesheet.json();\n\n for (const stylesheet of jsonStylesheet.items) {\n if (stylesheet.name === name) {\n if (stylesheet.isFolder) {\n return await this.recurseDeleteChildren(stylesheet);\n }\n return await this.delete(stylesheet.path);\n } else if (stylesheet.hasChildren) {\n await this.recurseChildren(name, stylesheet.path, true);\n\n }\n }\n return null;\n }\n\n private async recurseChildren(name: string, path: string, toDelete: boolean) {\n const items = await this.getChildren(path);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n if (child.isFolder) {\n return await this.getFolder(child.path);\n }\n return await this.get(child.path);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.path);\n\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.path, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(stylesheetFolder) {\n if (!stylesheetFolder.hasChildren) {\n return await this.deleteFolder(stylesheetFolder.path);\n }\n const items = await this.getChildren(stylesheetFolder.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(stylesheetFolder.path);\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));\n return await response.json();\n }\n\n async doesFolderExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async createFolder(name: string, parentPath = \"/\") {\n const stylesheetFolderData =\n {\n \"name\": name,\n \"parent\": parentPath ? {\"path\": parentPath} : null\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder', stylesheetFolderData);\n // Returns the path of the created Stylesheet folder\n const path = response.headers().location.split(\"/v1/stylesheet/folder/\").pop();\n\n if (path !== undefined) {\n return decodeURIComponent(path);\n }\n return undefined;\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));\n }\n\n async createDefaultStylesheet(name: string) {\n await this.ensureNameNotExists(name);\n return await this.create(name, \"/*\\n\");\n }\n\n async encodeStylesheetPath(path: string) {\n let encodedPath = encodeURIComponent(path);\n\n // Replace the dot with the required encoding\n encodedPath = encodedPath.replace(/\\./g, '%25dot%25');\n\n return encodedPath;\n }\n}"]}
@@ -1,34 +1,28 @@
1
1
  import { Page } from "@playwright/test";
2
- export declare class StylesheetUiHelper {
3
- private readonly page;
4
- private readonly newStylesheetFileBtn;
5
- private readonly newRTEStylesheetFileBtn;
6
- private readonly createFolderBtn;
7
- private readonly saveBtn;
8
- private readonly submitBtn;
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class StylesheetUiHelper extends UiBaseLocators {
4
+ private readonly newStylesheetBtn;
9
5
  private readonly stylesheetNameTxt;
10
- private readonly addRuleBtn;
11
- private readonly ruleNameTxt;
12
- private readonly ruleSelectorTxt;
13
- private readonly ruleStylesTxt;
14
- private readonly folderNameTxt;
15
- private readonly caretBtn;
16
- private readonly deleteBtn;
17
- private readonly confirmToDeleteBtn;
18
- private readonly removeFolderBtn;
19
- private readonly confirmCreateFolderBtn;
6
+ private readonly addRTEBtn;
7
+ private readonly styleNameTxt;
8
+ private readonly styleSelectorTxt;
9
+ private readonly styleStylesTxt;
10
+ private readonly newRichTextEditorStylesheetBtn;
11
+ private readonly stylesheetTree;
20
12
  constructor(page: Page);
21
- openActionsMenuForName(name: string): Promise<void>;
22
- openActionsMenuAtRoot(): Promise<void>;
13
+ clickActionsMenuForStylesheet(name: string): Promise<void>;
14
+ clickActionsMenuAtRoot(): Promise<void>;
23
15
  clickRootFolderCaretButton(): Promise<void>;
24
- clickCaretButtonForName(name: string): Promise<void>;
25
- clickNewStylesheetFileButton(): Promise<void>;
26
- clickNewRTEStylesheetFileButton(): Promise<void>;
27
- clickSaveButton(): Promise<void>;
28
- createNewFolder(folderName: string): Promise<void>;
16
+ clickNewStylesheetButton(): Promise<void>;
17
+ clickNewRichTextEditorStylesheetButton(): Promise<void>;
29
18
  enterStylesheetName(stylesheetName: string): Promise<void>;
30
- addNewRule(ruleName: string, ruleSelector: string, ruleStyles: string): Promise<void>;
31
- openStylesheetFileByNameAtRoot(stylesheetFileName: string): Promise<void>;
32
- deleteStylesheetFile(): Promise<void>;
33
- removeFolder(): Promise<void>;
19
+ enterStylesheetContent(stylesheetContent: string): Promise<void>;
20
+ addRTEStyle(styleName: string, styleSelector: string, styleStyles: string): Promise<void>;
21
+ openStylesheetByNameAtRoot(stylesheetName: string): Promise<void>;
22
+ editRTEStyle(styleName: string, newStyleName: string, newStyleSelector: string, newStyleStyles: string): Promise<void>;
23
+ fillRTEStyleForm(styleName: string, styleSelector: string, styleStyles: string): Promise<void>;
24
+ removeRTEStyle(styleName: string): Promise<void>;
25
+ reloadStylesheetTree(): Promise<void>;
26
+ isStylesheetRootTreeItemVisible(stylesheetName: string, isVisible?: boolean, toReload?: boolean): Promise<void>;
27
+ goToStylesheet(stylesheetName: string): Promise<void>;
34
28
  }
@@ -1,94 +1,91 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StylesheetUiHelper = void 0;
4
- class StylesheetUiHelper {
5
- page;
6
- newStylesheetFileBtn;
7
- newRTEStylesheetFileBtn;
8
- createFolderBtn;
9
- saveBtn;
10
- submitBtn;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ const ConstantHelper_1 = require("./ConstantHelper");
7
+ class StylesheetUiHelper extends UiBaseLocators_1.UiBaseLocators {
8
+ newStylesheetBtn;
11
9
  stylesheetNameTxt;
12
- addRuleBtn;
13
- ruleNameTxt;
14
- ruleSelectorTxt;
15
- ruleStylesTxt;
16
- folderNameTxt;
17
- caretBtn;
18
- deleteBtn;
19
- confirmToDeleteBtn;
20
- removeFolderBtn;
21
- confirmCreateFolderBtn;
10
+ addRTEBtn;
11
+ styleNameTxt;
12
+ styleSelectorTxt;
13
+ styleStylesTxt;
14
+ newRichTextEditorStylesheetBtn;
15
+ stylesheetTree;
22
16
  constructor(page) {
23
- this.page = page;
24
- this.newStylesheetFileBtn = page.getByLabel('New stylesheet file');
25
- this.newRTEStylesheetFileBtn = page.getByLabel('New Rich Text Editor style sheet file');
26
- this.createFolderBtn = page.getByLabel('Create folder');
27
- this.saveBtn = page.getByLabel('Save');
28
- this.submitBtn = page.getByLabel('Submit');
17
+ super(page);
29
18
  this.stylesheetNameTxt = page.getByLabel('stylesheet name');
30
- this.addRuleBtn = page.getByLabel('Add rule');
31
- this.ruleNameTxt = page.getByLabel('Rule name');
32
- this.ruleSelectorTxt = page.getByLabel('Rule selector');
33
- this.ruleStylesTxt = page.getByLabel('Rule styles');
34
- this.folderNameTxt = page.getByRole('textbox', { name: 'Enter folder name...' });
35
- this.caretBtn = page.locator('umb-tree-item').filter({ hasText: 'Stylesheets' }).locator('#caret-button');
36
- this.deleteBtn = page.getByRole('button', { name: 'Delete' });
37
- this.confirmToDeleteBtn = page.locator('#confirm').getByLabel('Delete');
38
- this.removeFolderBtn = page.getByLabel('Remove folder');
39
- this.confirmCreateFolderBtn = page.locator('#confirm').getByLabel('Create folder');
40
- }
41
- async openActionsMenuForName(name) {
42
- await this.page.locator('umb-tree-item').locator('[label="' + name + '"] >> [label="Open actions menu"]').click();
43
- }
44
- async openActionsMenuAtRoot() {
45
- await this.openActionsMenuForName("Stylesheets");
19
+ this.addRTEBtn = page.getByLabel('Add rule');
20
+ this.styleNameTxt = page.getByLabel('Rule name');
21
+ this.styleSelectorTxt = page.getByLabel('Rule selector');
22
+ this.styleStylesTxt = page.getByLabel('Rule styles');
23
+ this.newStylesheetBtn = page.getByLabel('New Stylesheet');
24
+ this.newRichTextEditorStylesheetBtn = page.getByLabel('New Rich Text Editor Stylesheet');
25
+ this.stylesheetTree = page.locator('umb-tree[alias="Umb.Tree.Stylesheet"]');
46
26
  }
47
- async clickRootFolderCaretButton() {
48
- await this.caretBtn.click();
49
- }
50
- async clickCaretButtonForName(name) {
51
- await this.page.locator('umb-tree-item >> [label="' + name + '"]').locator('#caret-button').click();
27
+ async clickActionsMenuForStylesheet(name) {
28
+ await this.clickActionsMenuForName(name);
52
29
  }
53
- async clickNewStylesheetFileButton() {
54
- await this.newStylesheetFileBtn.click();
30
+ async clickActionsMenuAtRoot() {
31
+ await this.clickActionsMenuForStylesheet('Stylesheets');
55
32
  }
56
- async clickNewRTEStylesheetFileButton() {
57
- await this.newRTEStylesheetFileBtn.click();
33
+ async clickRootFolderCaretButton() {
34
+ await this.clickCaretButtonForName('Stylesheets');
58
35
  }
59
- async clickSaveButton() {
60
- await this.saveBtn.click();
36
+ async clickNewStylesheetButton() {
37
+ await this.newStylesheetBtn.click();
61
38
  }
62
- async createNewFolder(folderName) {
63
- await this.createFolderBtn.click();
64
- await this.folderNameTxt.fill(folderName);
65
- await this.confirmCreateFolderBtn.click();
39
+ async clickNewRichTextEditorStylesheetButton() {
40
+ await this.newRichTextEditorStylesheetBtn.click();
66
41
  }
67
42
  async enterStylesheetName(stylesheetName) {
43
+ await (0, test_1.expect)(this.stylesheetNameTxt).toBeVisible();
68
44
  await this.stylesheetNameTxt.clear();
69
45
  await this.stylesheetNameTxt.fill(stylesheetName);
70
46
  }
71
- async addNewRule(ruleName, ruleSelector, ruleStyles) {
72
- await this.addRuleBtn.click();
73
- await this.ruleNameTxt.clear();
74
- await this.ruleNameTxt.fill(ruleName);
75
- await this.ruleSelectorTxt.clear();
76
- await this.ruleSelectorTxt.fill(ruleSelector);
77
- await this.ruleStylesTxt.clear();
78
- await this.ruleStylesTxt.fill(ruleStyles);
79
- await this.submitBtn.click();
80
- }
81
- async openStylesheetFileByNameAtRoot(stylesheetFileName) {
82
- await this.caretBtn.click();
83
- await this.page.getByLabel(stylesheetFileName).click();
84
- }
85
- async deleteStylesheetFile() {
86
- await this.deleteBtn.click();
87
- await this.confirmToDeleteBtn.click();
88
- }
89
- async removeFolder() {
90
- await this.removeFolderBtn.click();
91
- await this.confirmToDeleteBtn.click();
47
+ async enterStylesheetContent(stylesheetContent) {
48
+ await this.textAreaInputArea.clear();
49
+ await this.textAreaInputArea.fill(stylesheetContent);
50
+ }
51
+ async addRTEStyle(styleName, styleSelector, styleStyles) {
52
+ await this.addRTEBtn.click();
53
+ await this.fillRTEStyleForm(styleName, styleSelector, styleStyles);
54
+ }
55
+ async openStylesheetByNameAtRoot(stylesheetName) {
56
+ await this.reloadStylesheetTree();
57
+ await this.page.getByLabel(stylesheetName).click();
58
+ }
59
+ async editRTEStyle(styleName, newStyleName, newStyleSelector, newStyleStyles) {
60
+ await this.page.locator('umb-stylesheet-rule-ref[name="' + styleName + '"] [label="Edit"]').click();
61
+ await this.fillRTEStyleForm(newStyleName, newStyleSelector, newStyleStyles);
62
+ }
63
+ async fillRTEStyleForm(styleName, styleSelector, styleStyles) {
64
+ await (0, test_1.expect)(this.styleNameTxt).toBeVisible();
65
+ await this.styleNameTxt.clear();
66
+ await this.styleNameTxt.fill(styleName);
67
+ await this.styleSelectorTxt.clear();
68
+ await this.styleSelectorTxt.fill(styleSelector);
69
+ await this.styleStylesTxt.clear();
70
+ await this.styleStylesTxt.fill(styleStyles);
71
+ await this.clickSubmitButton();
72
+ }
73
+ async removeRTEStyle(styleName) {
74
+ await this.page.locator('umb-stylesheet-rule-ref[name="' + styleName + '"] [label="Remove"]').click();
75
+ }
76
+ async reloadStylesheetTree() {
77
+ await this.reloadTree('Stylesheets');
78
+ }
79
+ async isStylesheetRootTreeItemVisible(stylesheetName, isVisible = true, toReload = true) {
80
+ if (toReload) {
81
+ await this.reloadStylesheetTree();
82
+ }
83
+ return (0, test_1.expect)(this.stylesheetTree.getByText(stylesheetName, { exact: true })).toBeVisible({ visible: isVisible });
84
+ }
85
+ async goToStylesheet(stylesheetName) {
86
+ await this.goToSection(ConstantHelper_1.ConstantHelper.sections.settings);
87
+ await this.reloadStylesheetTree();
88
+ await this.page.getByLabel(stylesheetName).click({ force: true });
92
89
  }
93
90
  }
94
91
  exports.StylesheetUiHelper = StylesheetUiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"StylesheetUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/StylesheetUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Page, Locator} from \"@playwright/test\"\n\nexport class StylesheetUiHelper {\n\n private readonly page: Page;\n private readonly newStylesheetFileBtn: Locator;\n private readonly newRTEStylesheetFileBtn: Locator;\n private readonly createFolderBtn: Locator;\n private readonly saveBtn: Locator;\n private readonly submitBtn: Locator;\n private readonly stylesheetNameTxt: Locator;\n private readonly addRuleBtn: Locator;\n private readonly ruleNameTxt: Locator;\n private readonly ruleSelectorTxt: Locator;\n private readonly ruleStylesTxt: Locator;\n private readonly folderNameTxt: Locator;\n private readonly caretBtn: Locator;\n private readonly deleteBtn: Locator;\n private readonly confirmToDeleteBtn: Locator;\n private readonly removeFolderBtn: Locator;\n private readonly confirmCreateFolderBtn: Locator;\n\n\n constructor(page: Page) {\n this.page = page;\n this.newStylesheetFileBtn = page.getByLabel('New stylesheet file');\n this.newRTEStylesheetFileBtn = page.getByLabel('New Rich Text Editor style sheet file');\n this.createFolderBtn = page.getByLabel('Create folder');\n this.saveBtn = page.getByLabel('Save');\n this.submitBtn = page.getByLabel('Submit');\n this.stylesheetNameTxt = page.getByLabel('stylesheet name');\n this.addRuleBtn = page.getByLabel('Add rule');\n this.ruleNameTxt = page.getByLabel('Rule name');\n this.ruleSelectorTxt = page.getByLabel('Rule selector');\n this.ruleStylesTxt = page.getByLabel('Rule styles');\n this.folderNameTxt = page.getByRole('textbox', { name: 'Enter folder name...' });\n this.caretBtn = page.locator('umb-tree-item').filter({ hasText: 'Stylesheets' }).locator('#caret-button');\n this.deleteBtn = page.getByRole('button', { name: 'Delete' });\n this.confirmToDeleteBtn = page.locator('#confirm').getByLabel('Delete');\n this.removeFolderBtn = page.getByLabel('Remove folder');\n this.confirmCreateFolderBtn = page.locator('#confirm').getByLabel('Create folder');\n }\n\n async openActionsMenuForName(name : string) {\n await this.page.locator('umb-tree-item').locator('[label=\"' + name + '\"] >> [label=\"Open actions menu\"]').click();\n }\n\n async openActionsMenuAtRoot() {\n await this.openActionsMenuForName(\"Stylesheets\");\n }\n\n async clickRootFolderCaretButton() {\n await this.caretBtn.click();\n }\n\n async clickCaretButtonForName(name: string) {\n await this.page.locator('umb-tree-item >> [label=\"' + name + '\"]').locator('#caret-button').click();\n }\n\n async clickNewStylesheetFileButton() {\n await this.newStylesheetFileBtn.click();\n }\n\n async clickNewRTEStylesheetFileButton() {\n await this.newRTEStylesheetFileBtn.click();\n }\n\n async clickSaveButton() {\n await this.saveBtn.click();\n }\n\n async createNewFolder(folderName : string) {\n await this.createFolderBtn.click();\n await this.folderNameTxt.fill(folderName);\n await this.confirmCreateFolderBtn.click();\n }\n\n async enterStylesheetName(stylesheetName : string) {\n await this.stylesheetNameTxt.clear();\n await this.stylesheetNameTxt.fill(stylesheetName);\n }\n\n async addNewRule(ruleName : string, ruleSelector: string, ruleStyles: string) {\n await this.addRuleBtn.click();\n await this.ruleNameTxt.clear();\n await this.ruleNameTxt.fill(ruleName);\n await this.ruleSelectorTxt.clear();\n await this.ruleSelectorTxt.fill(ruleSelector);\n await this.ruleStylesTxt.clear();\n await this.ruleStylesTxt.fill(ruleStyles);\n await this.submitBtn.click();\n }\n\n async openStylesheetFileByNameAtRoot(stylesheetFileName : string) {\n await this.caretBtn.click();\n await this.page.getByLabel(stylesheetFileName).click();\n }\n\n async deleteStylesheetFile() {\n await this.deleteBtn.click();\n await this.confirmToDeleteBtn.click();\n }\n\n async removeFolder() {\n await this.removeFolderBtn.click();\n await this.confirmToDeleteBtn.click();\n }\n}"]}
1
+ {"version":3,"file":"StylesheetUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/StylesheetUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\nimport { ConstantHelper } from \"./ConstantHelper\";\n\nexport class StylesheetUiHelper extends UiBaseLocators{\n private readonly newStylesheetBtn: Locator;\n private readonly stylesheetNameTxt: Locator;\n private readonly addRTEBtn: Locator;\n private readonly styleNameTxt: Locator;\n private readonly styleSelectorTxt: Locator;\n private readonly styleStylesTxt: Locator;\n private readonly newRichTextEditorStylesheetBtn: Locator;\n private readonly stylesheetTree: Locator;\n\n constructor(page: Page) {\n super(page);\n this.stylesheetNameTxt = page.getByLabel('stylesheet name');\n this.addRTEBtn = page.getByLabel('Add rule');\n this.styleNameTxt = page.getByLabel('Rule name');\n this.styleSelectorTxt = page.getByLabel('Rule selector');\n this.styleStylesTxt = page.getByLabel('Rule styles');\n this.newStylesheetBtn = page.getByLabel('New Stylesheet');\n this.newRichTextEditorStylesheetBtn = page.getByLabel('New Rich Text Editor Stylesheet');\n this.stylesheetTree = page.locator('umb-tree[alias=\"Umb.Tree.Stylesheet\"]');\n }\n\n async clickActionsMenuForStylesheet(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForStylesheet('Stylesheets');\n }\n\n async clickRootFolderCaretButton() {\n await this.clickCaretButtonForName('Stylesheets');\n }\n\n async clickNewStylesheetButton() {\n await this.newStylesheetBtn.click();\n }\n \n async clickNewRichTextEditorStylesheetButton() {\n await this.newRichTextEditorStylesheetBtn.click();\n }\n\n async enterStylesheetName(stylesheetName: string) {\n await expect(this.stylesheetNameTxt).toBeVisible();\n await this.stylesheetNameTxt.clear();\n await this.stylesheetNameTxt.fill(stylesheetName);\n }\n \n async enterStylesheetContent(stylesheetContent: string) {\n await this.textAreaInputArea.clear();\n await this.textAreaInputArea.fill(stylesheetContent);\n }\n\n async addRTEStyle(styleName: string, styleSelector: string, styleStyles: string) {\n await this.addRTEBtn.click();\n await this.fillRTEStyleForm(styleName, styleSelector, styleStyles);\n }\n\n async openStylesheetByNameAtRoot(stylesheetName: string) {\n await this.reloadStylesheetTree();\n await this.page.getByLabel(stylesheetName).click();\n }\n\n async editRTEStyle(styleName: string, newStyleName: string, newStyleSelector: string, newStyleStyles: string) {\n await this.page.locator('umb-stylesheet-rule-ref[name=\"' + styleName + '\"] [label=\"Edit\"]').click();\n await this.fillRTEStyleForm(newStyleName, newStyleSelector, newStyleStyles);\n }\n\n async fillRTEStyleForm(styleName: string, styleSelector: string, styleStyles: string) {\n await expect(this.styleNameTxt).toBeVisible();\n await this.styleNameTxt.clear();\n await this.styleNameTxt.fill(styleName);\n await this.styleSelectorTxt.clear();\n await this.styleSelectorTxt.fill(styleSelector);\n await this.styleStylesTxt.clear();\n await this.styleStylesTxt.fill(styleStyles);\n await this.clickSubmitButton();\n }\n\n async removeRTEStyle(styleName: string) {\n await this.page.locator('umb-stylesheet-rule-ref[name=\"' + styleName + '\"] [label=\"Remove\"]').click();\n }\n\n async reloadStylesheetTree() {\n await this.reloadTree('Stylesheets');\n }\n\n async isStylesheetRootTreeItemVisible(stylesheetName: string, isVisible: boolean = true, toReload: boolean = true) {\n if (toReload) {\n await this.reloadStylesheetTree();\n }\n return expect(this.stylesheetTree.getByText(stylesheetName, {exact: true})).toBeVisible({visible: isVisible});\n }\n\n async goToStylesheet(stylesheetName: string) {\n await this.goToSection(ConstantHelper.sections.settings);\n await this.reloadStylesheetTree();\n await this.page.getByLabel(stylesheetName).click({force: true});\n }\n}"]}
@@ -0,0 +1,10 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class TelemetryDataUiHelper extends UiBaseLocators {
4
+ private readonly telemetryDataTab;
5
+ private readonly telemetryDataLevelSlider;
6
+ constructor(page: Page);
7
+ clickTelemetryDataTab(): Promise<void>;
8
+ changeTelemetryDataLevelValue(value: string): Promise<void>;
9
+ doesTelemetryDataLevelHaveValue(value: string): Promise<void>;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetryDataUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class TelemetryDataUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ telemetryDataTab;
8
+ telemetryDataLevelSlider;
9
+ constructor(page) {
10
+ super(page);
11
+ this.telemetryDataTab = page.getByRole('tab', { name: 'Telemetry Data' });
12
+ this.telemetryDataLevelSlider = page.locator('[name="telemetryLevel"] >> input[id=input]');
13
+ }
14
+ async clickTelemetryDataTab() {
15
+ await this.telemetryDataTab.click();
16
+ }
17
+ async changeTelemetryDataLevelValue(value) {
18
+ await this.telemetryDataLevelSlider.fill(value);
19
+ }
20
+ async doesTelemetryDataLevelHaveValue(value) {
21
+ return await (0, test_1.expect)(this.telemetryDataLevelSlider).toHaveValue(value);
22
+ }
23
+ }
24
+ exports.TelemetryDataUiHelper = TelemetryDataUiHelper;
25
+ //# sourceMappingURL=TelemetryDataUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryDataUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/TelemetryDataUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,qBAAsB,SAAQ,+BAAc;IACtC,gBAAgB,CAAU;IAC1B,wBAAwB,CAAU;IAEnD,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAC,CAAC;QACxE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,KAAa;QAC/C,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,KAAa;QACjD,OAAO,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;CACF;AArBD,sDAqBC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class TelemetryDataUiHelper extends UiBaseLocators {\n private readonly telemetryDataTab: Locator;\n private readonly telemetryDataLevelSlider: Locator;\n\n constructor(page: Page) {\n super(page);\n this.telemetryDataTab = page.getByRole('tab', {name: 'Telemetry Data'});\n this.telemetryDataLevelSlider = page.locator('[name=\"telemetryLevel\"] >> input[id=input]');\n }\n\n async clickTelemetryDataTab() {\n await this.telemetryDataTab.click();\n }\n\n async changeTelemetryDataLevelValue(value: string) {\n await this.telemetryDataLevelSlider.fill(value);\n }\n\n async doesTelemetryDataLevelHaveValue(value: string) {\n return await expect(this.telemetryDataLevelSlider).toHaveValue(value);\n }\n}\n"]}
@@ -15,4 +15,5 @@ export declare class TemplateApiHelper {
15
15
  private recurseChildren;
16
16
  getByName(name: string): Promise<any>;
17
17
  ensureNameNotExists(name: string): Promise<void>;
18
+ createDefaultTemplate(name: string): Promise<string | undefined>;
18
19
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemplateApiHelper = void 0;
4
+ const AliasHelper_1 = require("./AliasHelper");
4
5
  class TemplateApiHelper {
5
6
  api;
6
7
  constructor(api) {
@@ -123,6 +124,11 @@ class TemplateApiHelper {
123
124
  }
124
125
  }
125
126
  }
127
+ async createDefaultTemplate(name) {
128
+ await this.ensureNameNotExists(name);
129
+ const alias = AliasHelper_1.AliasHelper.toAlias(name);
130
+ return await this.create(name, alias, '');
131
+ }
126
132
  }
127
133
  exports.TemplateApiHelper = TemplateApiHelper;
128
134
  //# sourceMappingURL=TemplateApiHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/TemplateApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class TemplateApiHelper {\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/template/' + id);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/template/' + id);\n return response.status() === 200;\n }\n\n async create(name: string, alias: string, content: string) {\n const templateData = {\n \"name\": name,\n \"alias\": alias,\n \"content\": content\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/template', templateData);\n // Returns the id of the created template\n return response.headers().location.split(\"/\").pop();\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/template/' + id);\n }\n\n async update(id: string, template: object) {\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/template/' + id, template);\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/template/children?parentId=${id}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async getItems(ids: string[]) {\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/tree/template/item?' + idArray);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/template/root?skip=0&take=10000');\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n private async recurseDeleteChildren(id: string) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.isContainer || child.hasChildren) {\n await this.recurseDeleteChildren(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.delete(id);\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n return await this.get(child.id);\n }\n if (child.isContainer || child.hasChildren) {\n return await this.recurseDeleteChildren(child.id);\n } else {\n return await this.delete(child.id);\n }\n } else if (child.isContainer || child.hasChildren) {\n await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n async getByName(name: string) {\n const rootTemplates = await this.getAllAtRoot();\n const jsonTemplates = await rootTemplates.json();\n\n for (const template of jsonTemplates.items) {\n if (template.name === name) {\n return this.get(template.id);\n } else if (template.isContainer || template.hasChildren) {\n const result = await this.recurseChildren(name, template.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootTemplates = await this.getAllAtRoot();\n const jsonTemplates = await rootTemplates.json();\n\n for (const template of jsonTemplates.items) {\n if (template.name === name) {\n if (template.isContainer || template.hasChildren) {\n await this.recurseDeleteChildren(template.id);\n }\n await this.delete(template.id);\n } else {\n if (template.isContainer || template.hasChildren) {\n await this.recurseChildren(name, template.id, true);\n }\n }\n }\n }\n}"]}
1
+ {"version":3,"file":"TemplateApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/TemplateApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {AliasHelper} from \"./AliasHelper\";\n\nexport class TemplateApiHelper {\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/template/' + id);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/template/' + id);\n return response.status() === 200;\n }\n\n async create(name: string, alias: string, content: string) {\n const templateData = {\n \"name\": name,\n \"alias\": alias,\n \"content\": content\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/template', templateData);\n // Returns the id of the created template\n return response.headers().location.split(\"/\").pop();\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/template/' + id);\n }\n\n async update(id: string, template: object) {\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/template/' + id, template);\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/template/children?parentId=${id}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async getItems(ids: string[]) {\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/tree/template/item?' + idArray);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/template/root?skip=0&take=10000');\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n private async recurseDeleteChildren(id: string) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.isContainer || child.hasChildren) {\n await this.recurseDeleteChildren(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.delete(id);\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n return await this.get(child.id);\n }\n if (child.isContainer || child.hasChildren) {\n return await this.recurseDeleteChildren(child.id);\n } else {\n return await this.delete(child.id);\n }\n } else if (child.isContainer || child.hasChildren) {\n await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n async getByName(name: string) {\n const rootTemplates = await this.getAllAtRoot();\n const jsonTemplates = await rootTemplates.json();\n\n for (const template of jsonTemplates.items) {\n if (template.name === name) {\n return this.get(template.id);\n } else if (template.isContainer || template.hasChildren) {\n const result = await this.recurseChildren(name, template.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootTemplates = await this.getAllAtRoot();\n const jsonTemplates = await rootTemplates.json();\n\n for (const template of jsonTemplates.items) {\n if (template.name === name) {\n if (template.isContainer || template.hasChildren) {\n await this.recurseDeleteChildren(template.id);\n }\n await this.delete(template.id);\n } else {\n if (template.isContainer || template.hasChildren) {\n await this.recurseChildren(name, template.id, true);\n }\n }\n }\n }\n\n async createDefaultTemplate(name: string) {\n await this.ensureNameNotExists(name);\n const alias = AliasHelper.toAlias(name);\n return await this.create(name, alias, '');\n }\n}"]}