@umbraco/playwright-testhelpers 17.1.0-beta.6 → 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 -834
  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
@@ -1 +1 @@
1
- {"version":3,"file":"RelationTypeUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/RelationTypeUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Locator, Page} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class RelationTypeUiHelper extends UiBaseLocators{\n private readonly relationTypeNameTxt: Locator;\n private readonly parentToChildRadioBtn: Locator;\n private readonly bidirectionalRadioBtn: Locator;\n private readonly isDependencyToggle: Locator;\n private readonly parentDropDownBox: Locator;\n private readonly childDropDownBox: Locator;\n private readonly relationTypeCollection: Locator;\n private readonly relationTypeWorkspace: Locator;\n private readonly relationTypeParentType: Locator;\n private readonly relationTypeChildType: Locator;\n private readonly relationTypeBidirectional: Locator;\n private readonly relationTypeDependency: Locator;\n private readonly relationsTableRow: Locator;\n\n constructor(page: Page) {\n super(page);\n this.relationTypeNameTxt = page.locator('#name #input');\n this.parentToChildRadioBtn = page.locator(\"uui-radio[label='Parent to child'] #button\");\n this.bidirectionalRadioBtn = page.locator(\"uui-radio[label='Bidirectional'] #button\");\n this.isDependencyToggle = page.locator(\"umb-property-layout[label='Is dependency'] #toggle\");\n this.parentDropDownBox = page.locator(\"umb-property-layout[label='Parent'] #native\");\n this.childDropDownBox = page.locator(\"umb-property-layout[label='Child'] #native\");\n this.relationTypeCollection = page.locator('umb-relation-type-table-collection-view')\n this.relationTypeWorkspace = page.locator('umb-relation-type-detail-workspace-view');\n this.relationTypeParentType = this.relationTypeWorkspace.locator('[label=\"Parent Type\"]').locator('[slot=\"editor\"]');\n this.relationTypeChildType = this.relationTypeWorkspace.locator('[label=\"Child Type\"]').locator('[slot=\"editor\"]');\n this.relationTypeBidirectional =this.relationTypeWorkspace.locator('[label=\"Bidirectional\"]').locator('[slot=\"editor\"]');\n this.relationTypeDependency = this.relationTypeWorkspace.locator('[label=\"Dependency\"]').locator('[slot=\"editor\"]');\n this.relationsTableRow = this.relationTypeWorkspace.locator('umb-table').locator('uui-table-row');\n }\n\n async clickActionsMenuForRelationType(name: string) {\n await this.clickActionsMenuForName(name);\n }\n \n async goToRelationTypeWithName(name: string) {\n await this.click(this.relationTypeCollection.getByText(name));\n await this.waitUntilUiLoaderIsNoLongerVisible();\n }\n\n async clickRootFolderCaretButton() {\n await this.openCaretButtonForName(\"Relation Types\");\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForRelationType(\"Relation Types\");\n }\n\n async openRelationTypeByNameAtRoot(relationTypeName: string) {\n await this.clickRootFolderCaretButton();\n await this.click(this.page.getByLabel(relationTypeName));\n }\n\n async enterRelationTypeName(name: string) {\n await this.enterText(this.relationTypeNameTxt, name);\n }\n\n async clickParentToChildRadioButton() {\n await this.click(this.parentToChildRadioBtn);\n }\n \n async doesParentTypeContainValue(value: string) {\n await this.containsText(this.relationTypeParentType, value);\n }\n\n async doesChildTypeContainValue(value: string) {\n await this.containsText(this.relationTypeChildType, value);\n }\n\n async doesBidirectionalContainValue(value: string) {\n await this.containsText(this.relationTypeBidirectional, value);\n }\n\n async doesDependencyContainValue(value: string) {\n await this.containsText(this.relationTypeDependency, value);\n }\n\n async isRelationWithParentAndChildVisible(parent: string, child: string, isVisible: boolean = true) {\n 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);\n }\n\n async clickBidirectionalRadioButton() {\n await this.click(this.bidirectionalRadioBtn);\n }\n\n async clickIsDependencyToggle() {\n await this.click(this.isDependencyToggle);\n }\n\n async selectParentOption(option: string) {\n await this.selectByText(this.parentDropDownBox, option);\n }\n\n async selectChildOption(option: string) {\n await this.selectByText(this.childDropDownBox, option);\n }\n}"]}
1
+ {"version":3,"file":"RelationTypeUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/RelationTypeUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {expect, Locator, Page} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class RelationTypeUiHelper extends UiBaseLocators{\n private readonly relationTypeNameTxt: Locator;\n private readonly parentToChildRadioBtn: Locator;\n private readonly bidirectionalRadioBtn: Locator;\n private readonly isDependencyToggle: Locator;\n private readonly parentDropDownBox: Locator;\n private readonly childDropDownBox: Locator;\n private readonly relationTypeCollection: Locator;\n private readonly relationTypeWorkspace: Locator;\n private readonly relationTypeParentType: Locator;\n private readonly relationTypeChildType: Locator;\n private readonly relationTypeBidirectional: Locator;\n private readonly relationTypeDependency: Locator;\n private readonly relationsTableRow: Locator;\n\n constructor(page: Page) {\n super(page);\n this.relationTypeNameTxt = page.locator('#name #input');\n this.parentToChildRadioBtn = page.locator(\"uui-radio[label='Parent to child'] #button\");\n this.bidirectionalRadioBtn = page.locator(\"uui-radio[label='Bidirectional'] #button\");\n this.isDependencyToggle = page.locator(\"umb-property-layout[label='Is dependency'] #toggle\");\n this.parentDropDownBox = page.locator(\"umb-property-layout[label='Parent'] #native\");\n this.childDropDownBox = page.locator(\"umb-property-layout[label='Child'] #native\");\n this.relationTypeCollection = page.locator('umb-relation-type-table-collection-view')\n this.relationTypeWorkspace = page.locator('umb-relation-type-detail-workspace-view');\n this.relationTypeParentType = this.relationTypeWorkspace.locator('[label=\"Parent Type\"]').locator('[slot=\"editor\"]');\n this.relationTypeChildType = this.relationTypeWorkspace.locator('[label=\"Child Type\"]').locator('[slot=\"editor\"]');\n this.relationTypeBidirectional =this.relationTypeWorkspace.locator('[label=\"Bidirectional\"]').locator('[slot=\"editor\"]');\n this.relationTypeDependency = this.relationTypeWorkspace.locator('[label=\"Dependency\"]').locator('[slot=\"editor\"]');\n this.relationsTableRow = this.relationTypeWorkspace.locator('umb-table').locator('uui-table-row');\n }\n\n async clickActionsMenuForRelationType(name: string) {\n await this.clickActionsMenuForName(name);\n }\n \n async goToRelationTypeWithName(name: string) {\n await expect(this.relationTypeCollection.getByText(name)).toBeVisible();\n await this.relationTypeCollection.getByText(name).click();\n await this.waitUntilUiLoaderIsNoLongerVisible();\n }\n\n async clickRootFolderCaretButton() {\n await this.openCaretButtonForName(\"Relation Types\");\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForRelationType(\"Relation Types\");\n }\n\n async openRelationTypeByNameAtRoot(relationTypeName: string) {\n await this.clickRootFolderCaretButton();\n await this.page.getByLabel(relationTypeName).click();\n }\n\n async enterRelationTypeName(name: string) {\n await this.relationTypeNameTxt.clear();\n await this.relationTypeNameTxt.fill(name);\n }\n\n async clickParentToChildRadioButton() {\n await this.parentToChildRadioBtn.click();\n }\n \n async doesParentTypeContainValue(value: string) {\n await expect(this.relationTypeParentType).toContainText(value);\n }\n\n async doesChildTypeContainValue(value: string) {\n await expect(this.relationTypeChildType).toContainText(value);\n }\n\n async doesBidirectionalContainValue(value: string) {\n await expect(this.relationTypeBidirectional).toContainText(value);\n }\n\n async doesDependencyContainValue(value: string) {\n await expect(this.relationTypeDependency).toContainText(value);\n }\n\n async isRelationWithParentAndChildVisible(parent: string, child: string, isVisible: boolean = true) {\n await 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});\n }\n\n async clickBidirectionalRadioButton() {\n await this.bidirectionalRadioBtn.click();\n }\n\n async clickIsDependencyToggle() {\n await this.isDependencyToggle.click();\n }\n\n async selectParentOption(option: string) {\n await this.parentDropDownBox.selectOption({ label: option });\n }\n\n async selectChildOption(option: string) {\n await this.childDropDownBox.selectOption({ label: option });\n }\n}"]}
@@ -1,24 +1,8 @@
1
- import { ApiHelpers } from "./ApiHelpers";
2
- export declare class ScriptApiHelper {
3
- api: ApiHelpers;
4
- constructor(api: ApiHelpers);
5
- get(path: string): Promise<any>;
6
- doesExist(path: string): Promise<boolean>;
7
- create(name: string, content: string, parentPath?: null): Promise<string>;
8
- updateName(path: string, newName: string): Promise<string | undefined>;
9
- updateContent(path: string, newContent: string): Promise<import("playwright-core").APIResponse>;
10
- delete(path: string): Promise<import("playwright-core").APIResponse>;
11
- getChildren(path: string): Promise<any>;
12
- getItems(paths: string[]): Promise<any>;
13
- getAllAtRoot(): Promise<import("playwright-core").APIResponse>;
14
- doesNameExist(name: string): Promise<any>;
15
- getByName(name: string): Promise<any>;
16
- private recurseDeleteChildren;
17
- private recurseChildren;
18
- ensureNameNotExists(name: string): Promise<import("playwright-core").APIResponse | null>;
19
- getFolder(path: string): Promise<any>;
20
- doesFolderExist(path: string): Promise<boolean>;
21
- createFolder(name: string, parentPath?: string): Promise<string | undefined>;
22
- deleteFolder(path: string): Promise<import("playwright-core").APIResponse>;
1
+ import { PathBasedTreeApiHelper } from "./PathBasedTreeApiHelper";
2
+ export declare class ScriptApiHelper extends PathBasedTreeApiHelper {
3
+ protected resourcePath: string;
4
+ protected treePath: string;
5
+ createScript(name: string, content: string, parentPath?: string | null): Promise<string>;
6
+ create(name: string, content: string, parentPath?: string | null): Promise<string>;
23
7
  createDefaultScript(name: string): Promise<string>;
24
8
  }
@@ -1,181 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ScriptApiHelper = void 0;
4
- class ScriptApiHelper {
5
- api;
6
- constructor(api) {
7
- this.api = api;
8
- }
9
- async get(path) {
10
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path));
11
- return await response.json();
12
- }
13
- async doesExist(path) {
14
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path));
15
- return response.status() === 200;
16
- }
17
- async create(name, content, parentPath = null) {
4
+ const PathBasedTreeApiHelper_1 = require("./PathBasedTreeApiHelper");
5
+ class ScriptApiHelper extends PathBasedTreeApiHelper_1.PathBasedTreeApiHelper {
6
+ resourcePath = 'script';
7
+ treePath = 'tree/script';
8
+ // Script-specific create with content
9
+ async createScript(name, content, parentPath = null) {
18
10
  const parentValue = parentPath ? { 'path': parentPath } : null;
19
11
  const scriptData = {
20
12
  "name": name,
21
13
  "parent": parentValue,
22
14
  "content": content
23
15
  };
24
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/script', scriptData);
25
- // Returns the path of the created Script
26
- const path = response.headers().location.split("/v1/script/").pop();
27
- return decodeURIComponent(path);
28
- }
29
- async updateName(path, newName) {
30
- const scriptData = {
31
- "name": newName
32
- };
33
- const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path) + '/rename', scriptData);
34
- // Returns the path of the created Script
35
- const newPath = response.headers().location.split("/v1/script/").pop();
36
- if (newPath !== undefined) {
37
- return decodeURIComponent(newPath);
38
- }
39
- return undefined;
40
- }
41
- async updateContent(path, newContent) {
42
- const scriptData = {
43
- "content": newContent
44
- };
45
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path), scriptData);
46
- }
47
- async delete(path) {
48
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path));
49
- }
50
- async getChildren(path) {
51
- const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/script/children?parentPath=${encodeURIComponent(path)}&skip=0&take=10000`);
52
- const items = await response.json();
53
- return items.items;
54
- }
55
- async getItems(paths) {
56
- let pathArray = 'path=' + paths[0];
57
- let i;
58
- for (i = 1; i < paths.length; ++i) {
59
- pathArray += '&path=' + paths[i];
60
- }
61
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/script/item?' + pathArray);
62
- const json = await response.json();
63
- if (json !== null) {
64
- return json;
65
- }
66
- return null;
67
- }
68
- async getAllAtRoot() {
69
- return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/script/root?skip=0&take=10000');
70
- }
71
- async doesNameExist(name) {
72
- return await this.getByName(name);
73
- }
74
- async getByName(name) {
75
- const rootScripts = await this.getAllAtRoot();
76
- const jsonScripts = await rootScripts.json();
77
- for (const script of jsonScripts.items) {
78
- if (script.name === name) {
79
- if (script.isFolder) {
80
- return this.getFolder(script.path);
81
- }
82
- else {
83
- return this.get(script.path);
84
- }
85
- }
86
- else if (script.isFolder && script.hasChildren) {
87
- const result = await this.recurseChildren(name, script.path, false);
88
- if (result) {
89
- return result;
90
- }
91
- }
92
- }
93
- return false;
94
- }
95
- async recurseDeleteChildren(scriptFolder) {
96
- if (!scriptFolder.hasChildren) {
97
- return await this.deleteFolder(scriptFolder.path);
98
- }
99
- const items = await this.getChildren(scriptFolder.path);
100
- for (const child of items) {
101
- if (child.hasChildren) {
102
- await this.recurseDeleteChildren(child);
103
- }
104
- else if (child.isFolder) {
105
- await this.deleteFolder(child.path);
106
- }
107
- else {
108
- await this.delete(child.path);
109
- }
110
- }
111
- return await this.deleteFolder(scriptFolder.path);
112
- }
113
- async recurseChildren(name, path, toDelete) {
114
- const items = await this.getChildren(path);
115
- for (const child of items) {
116
- if (child.name === name) {
117
- if (!toDelete) {
118
- if (child.isFolder) {
119
- return await this.getFolder(child.path);
120
- }
121
- return await this.get(child.path);
122
- }
123
- if (child.isFolder) {
124
- return await this.recurseDeleteChildren(child);
125
- }
126
- return await this.delete(child.path);
127
- }
128
- else if (child.hasChildren) {
129
- return await this.recurseChildren(name, child.path, toDelete);
130
- }
131
- }
132
- return false;
133
- }
134
- async ensureNameNotExists(name) {
135
- const rootScripts = await this.getAllAtRoot();
136
- const jsonScripts = await rootScripts.json();
137
- for (const script of jsonScripts.items) {
138
- if (script.name === name) {
139
- if (script.isFolder) {
140
- return await this.recurseDeleteChildren(script);
141
- }
142
- return await this.delete(script.path);
143
- }
144
- else if (script.hasChildren) {
145
- await this.recurseChildren(name, script.path, true);
146
- }
147
- }
148
- return null;
149
- }
150
- // Folder
151
- async getFolder(path) {
152
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/script/folder/' + encodeURIComponent(path));
153
- return await response.json();
154
- }
155
- async doesFolderExist(path) {
156
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/script/folder/' + encodeURIComponent(path));
157
- return response.status() === 200;
158
- }
159
- async createFolder(name, parentPath) {
160
- const parentValue = parentPath ? { 'path': parentPath } : null;
161
- const scriptFolderData = {
162
- "name": name,
163
- "parent": parentValue
164
- };
165
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/script/folder', scriptFolderData);
166
- // Returns the path of the created Stylesheet folder
167
- const path = response.headers().location.split("/v1/script/folder/").pop();
168
- if (path !== undefined) {
169
- return decodeURIComponent(path);
170
- }
171
- return undefined;
16
+ const response = await this.api.post(this.buildUrl(), scriptData);
17
+ return this.extractPathFromLocation(response);
172
18
  }
173
- async deleteFolder(path) {
174
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/script/folder/' + encodeURIComponent(path));
19
+ // Backward compatible alias
20
+ async create(name, content, parentPath = null) {
21
+ return this.createScript(name, content, parentPath);
175
22
  }
176
23
  async createDefaultScript(name) {
177
24
  await this.ensureNameNotExists(name);
178
- return await this.create(name, "@inherits Umbraco.Web.Mvc.UmbracoViewPage");
25
+ return await this.createScript(name, "@inherits Umbraco.Web.Mvc.UmbracoViewPage");
179
26
  }
180
27
  }
181
28
  exports.ScriptApiHelper = ScriptApiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ScriptApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class ScriptApiHelper {\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/script/' + 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/script/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async create(name: string, content: string, parentPath = null) {\n const parentValue = parentPath ? {'path': parentPath} : null;\n const scriptData = {\n \"name\": name,\n \"parent\": parentValue,\n \"content\": content\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/script', scriptData);\n // Returns the path of the created Script\n const path = response.headers().location.split(\"/v1/script/\").pop() as string;\n return decodeURIComponent(path);\n }\n\n async updateName(path: string, newName: string) {\n const scriptData = {\n \"name\": newName\n };\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path) + '/rename', scriptData);\n // Returns the path of the created Script\n const newPath = response.headers().location.split(\"/v1/script/\").pop();\n if (newPath !== undefined) {\n return decodeURIComponent(newPath);\n }\n return undefined;\n }\n\n async updateContent(path: string, newContent: string) {\n const scriptData = {\n \"content\": newContent\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path), scriptData);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/script/' + encodeURIComponent(path));\n }\n\n async getChildren(path: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/script/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[]) {\n let pathArray = 'path=' + paths[0];\n let i: number;\n\n for (i = 1; i < paths.length; ++i) {\n pathArray += '&path=' + paths[i];\n }\n\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/script/item?' + pathArray);\n const json = await response.json();\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/script/root?skip=0&take=10000');\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async getByName(name: string) {\n const rootScripts = await this.getAllAtRoot();\n const jsonScripts = await rootScripts.json();\n\n for (const script of jsonScripts.items) {\n if (script.name === name) {\n if (script.isFolder) {\n return this.getFolder(script.path);\n } else {\n return this.get(script.path);\n }\n } else if (script.isFolder && script.hasChildren) {\n const result = await this.recurseChildren(name, script.path, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(scriptFolder) {\n if (!scriptFolder.hasChildren) {\n return await this.deleteFolder(scriptFolder.path);\n }\n const items = await this.getChildren(scriptFolder.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(scriptFolder.path);\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 async ensureNameNotExists(name: string) {\n const rootScripts = await this.getAllAtRoot();\n const jsonScripts = await rootScripts.json();\n\n for (const script of jsonScripts.items) {\n if (script.name === name) {\n if (script.isFolder) {\n return await this.recurseDeleteChildren(script);\n }\n return await this.delete(script.path);\n } else if (script.hasChildren) {\n await this.recurseChildren(name, script.path, true);\n\n }\n }\n return null;\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/script/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/script/folder/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async createFolder(name: string, parentPath?: string) {\n const parentValue = parentPath ? {'path': parentPath} : null;\n const scriptFolderData =\n {\n \"name\": name,\n \"parent\": parentValue\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/script/folder', scriptFolderData);\n // Returns the path of the created Stylesheet folder\n const path = response.headers().location.split(\"/v1/script/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/script/folder/' + encodeURIComponent(path));\n }\n\n async createDefaultScript(name: string) {\n await this.ensureNameNotExists(name);\n return await this.create(name, \"@inherits Umbraco.Web.Mvc.UmbracoViewPage\");\n }\n}"]}
1
+ {"version":3,"file":"ScriptApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ScriptApiHelper.ts"],"names":[],"mappings":";;;AAAA,qEAAgE;AAEhE,MAAa,eAAgB,SAAQ,+CAAsB;IAC/C,YAAY,GAAG,QAAQ,CAAC;IACxB,QAAQ,GAAG,aAAa,CAAC;IAEnC,sCAAsC;IACtC,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAe,EAAE,aAA4B,IAAI;QAChF,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,WAAW;YACrB,SAAS,EAAE,OAAO;SACnB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,aAA4B,IAAI;QAC1E,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;IACpF,CAAC;CACF;AAzBD,0CAyBC","sourcesContent":["import {PathBasedTreeApiHelper} from \"./PathBasedTreeApiHelper\";\n\nexport class ScriptApiHelper extends PathBasedTreeApiHelper {\n protected resourcePath = 'script';\n protected treePath = 'tree/script';\n\n // Script-specific create with content\n async createScript(name: string, content: string, parentPath: string | null = null) {\n const parentValue = parentPath ? { 'path': parentPath } : null;\n const scriptData = {\n \"name\": name,\n \"parent\": parentValue,\n \"content\": content\n };\n const response = await this.api.post(this.buildUrl(), scriptData);\n return this.extractPathFromLocation(response);\n }\n\n // Backward compatible alias\n async create(name: string, content: string, parentPath: string | null = null) {\n return this.createScript(name, content, parentPath);\n }\n\n async createDefaultScript(name: string) {\n await this.ensureNameNotExists(name);\n return await this.createScript(name, \"@inherits Umbraco.Web.Mvc.UmbracoViewPage\");\n }\n}"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ScriptUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
4
5
  const UiBaseLocators_1 = require("./UiBaseLocators");
5
6
  const ConstantHelper_1 = require("./ConstantHelper");
6
7
  class ScriptUiHelper extends UiBaseLocators_1.UiBaseLocators {
@@ -20,7 +21,8 @@ class ScriptUiHelper extends UiBaseLocators_1.UiBaseLocators {
20
21
  }
21
22
  async createScriptFolder(folderName) {
22
23
  await this.clickCreateOptionsActionMenuOption();
23
- await this.click(this.newFolderThreeDots);
24
+ await (0, test_1.expect)(this.newFolderThreeDots).toBeVisible();
25
+ await this.newFolderThreeDots.click();
24
26
  await this.enterFolderName(folderName);
25
27
  await this.clickConfirmCreateFolderButton();
26
28
  }
@@ -31,32 +33,34 @@ class ScriptUiHelper extends UiBaseLocators_1.UiBaseLocators {
31
33
  await this.openCaretButtonForName('Scripts');
32
34
  }
33
35
  async clickNewJavascriptFileButton() {
34
- await this.click(this.newJavascriptFileBtn);
36
+ await (0, test_1.expect)(this.newJavascriptFileBtn).toBeVisible();
37
+ await this.newJavascriptFileBtn.click();
35
38
  }
36
39
  async waitForScriptToBeCreated() {
37
- await this.waitForLoadState();
40
+ await this.page.waitForLoadState();
38
41
  }
39
42
  async waitForScriptToBeDeleted() {
40
- await this.waitForLoadState();
43
+ await this.page.waitForLoadState();
41
44
  }
42
45
  async waitForScriptToBeRenamed() {
43
- await this.waitForLoadState();
46
+ await this.page.waitForLoadState();
44
47
  }
45
48
  // Will only work for root scripts
46
49
  async goToScript(scriptName) {
47
50
  await this.goToSection(ConstantHelper_1.ConstantHelper.sections.settings);
48
51
  await this.reloadScriptTree();
49
- await this.click(this.page.getByLabel(scriptName, { exact: true }));
52
+ await this.page.getByLabel(scriptName, { exact: true }).click();
50
53
  }
51
54
  async enterScriptName(scriptContent) {
52
- await this.enterText(this.enterAName, scriptContent);
55
+ await (0, test_1.expect)(this.enterAName).toBeVisible();
56
+ await this.enterAName.fill(scriptContent);
53
57
  }
54
58
  async enterScriptContent(scriptContent) {
55
59
  await this.enterMonacoEditorValue(scriptContent);
56
60
  }
57
61
  async openScriptAtRoot(scriptName) {
58
62
  await this.reloadScriptTree();
59
- await this.click(this.page.getByLabel(scriptName, { exact: true }));
63
+ await this.page.getByLabel(scriptName, { exact: true }).click();
60
64
  }
61
65
  async reloadScriptTree() {
62
66
  await this.reloadTree('Scripts');
@@ -65,7 +69,7 @@ class ScriptUiHelper extends UiBaseLocators_1.UiBaseLocators {
65
69
  if (toReload) {
66
70
  await this.reloadScriptTree();
67
71
  }
68
- return await this.isVisible(this.scriptTree.getByText(scriptName, { exact: true }), isVisible);
72
+ return (0, test_1.expect)(this.scriptTree.getByText(scriptName, { exact: true })).toBeVisible({ visible: isVisible });
69
73
  }
70
74
  }
71
75
  exports.ScriptUiHelper = ScriptUiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ScriptUiHelper.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAChD,qDAAgD;AAEhD,MAAa,cAAe,SAAQ,+BAAc;IAC/B,oBAAoB,CAAU;IAC9B,UAAU,CAAU;IACpB,kBAAkB,CAAU;IAC5B,iBAAiB,CAAU;IAE5C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACzE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,EAAC,OAAO,EAAE,iBAAiB,EAAC,CAAC,CAAC;QACzG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,IAAY;QAC1C,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACzC,MAAM,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,+BAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QAC5C,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,UAAkB,EAAE,YAAqB,IAAI,EAAE,WAAoB,IAAI;QACvG,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC/B;QACD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/F,CAAC;CACF;AA/ED,wCA+EC","sourcesContent":["import {Page, Locator} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\nimport {ConstantHelper} from \"./ConstantHelper\";\n\nexport class ScriptUiHelper extends UiBaseLocators{\n private readonly newJavascriptFileBtn: Locator;\n private readonly scriptTree: Locator;\n private readonly newFolderThreeDots: Locator;\n private readonly scriptCreateModal: Locator;\n\n constructor(page: Page) {\n super(page);\n this.scriptCreateModal = page.locator('umb-script-create-options-modal');\n this.newJavascriptFileBtn = this.scriptCreateModal.locator('umb-ref-item', {hasText: 'JavaScript file'});\n this.newFolderThreeDots = this.scriptCreateModal.locator('umb-ref-item', {hasText: 'Folder'});\n this.scriptTree = page.locator('umb-tree[alias=\"Umb.Tree.Script\"]');\n }\n\n async clickActionsMenuForScript(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async createScriptFolder(folderName: string) {\n await this.clickCreateOptionsActionMenuOption();\n await this.click(this.newFolderThreeDots);\n await this.enterFolderName(folderName);\n await this.clickConfirmCreateFolderButton();\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForScript('Scripts');\n }\n\n async clickRootFolderCaretButton() {\n await this.openCaretButtonForName('Scripts');\n }\n\n async clickNewJavascriptFileButton() {\n await this.click(this.newJavascriptFileBtn);\n }\n \n async waitForScriptToBeCreated() {\n await this.waitForLoadState();\n }\n\n async waitForScriptToBeDeleted() {\n await this.waitForLoadState();\n }\n\n async waitForScriptToBeRenamed() {\n await this.waitForLoadState();\n }\n \n // Will only work for root scripts\n async goToScript(scriptName: string) {\n await this.goToSection(ConstantHelper.sections.settings);\n await this.reloadScriptTree();\n await this.click(this.page.getByLabel(scriptName, {exact: true}));\n }\n\n async enterScriptName(scriptContent: string) {\n await this.enterText(this.enterAName, scriptContent);\n }\n\n async enterScriptContent(scriptContent: string) {\n await this.enterMonacoEditorValue(scriptContent);\n }\n\n async openScriptAtRoot(scriptName: string) {\n await this.reloadScriptTree();\n await this.click(this.page.getByLabel(scriptName, {exact: true}));\n }\n\n async reloadScriptTree() {\n await this.reloadTree('Scripts');\n }\n\n async isScriptRootTreeItemVisible(scriptName: string, isVisible: boolean = true, toReload: boolean = true){\n if (toReload) {\n await this.reloadScriptTree();\n }\n return await this.isVisible(this.scriptTree.getByText(scriptName, {exact: true}), isVisible);\n }\n}"]}
1
+ {"version":3,"file":"ScriptUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ScriptUiHelper.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 ScriptUiHelper extends UiBaseLocators{\n private readonly newJavascriptFileBtn: Locator;\n private readonly scriptTree: Locator;\n private readonly newFolderThreeDots: Locator;\n private readonly scriptCreateModal: Locator;\n\n constructor(page: Page) {\n super(page);\n this.scriptCreateModal = page.locator('umb-script-create-options-modal');\n this.newJavascriptFileBtn = this.scriptCreateModal.locator('umb-ref-item', {hasText: 'JavaScript file'});\n this.newFolderThreeDots = this.scriptCreateModal.locator('umb-ref-item', {hasText: 'Folder'});\n this.scriptTree = page.locator('umb-tree[alias=\"Umb.Tree.Script\"]');\n }\n\n async clickActionsMenuForScript(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async createScriptFolder(folderName: string) {\n await this.clickCreateOptionsActionMenuOption();\n await expect(this.newFolderThreeDots).toBeVisible();\n await this.newFolderThreeDots.click();\n await this.enterFolderName(folderName);\n await this.clickConfirmCreateFolderButton();\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForScript('Scripts');\n }\n\n async clickRootFolderCaretButton() {\n await this.openCaretButtonForName('Scripts');\n }\n\n async clickNewJavascriptFileButton() {\n await expect(this.newJavascriptFileBtn).toBeVisible();\n await this.newJavascriptFileBtn.click();\n }\n \n async waitForScriptToBeCreated() {\n await this.page.waitForLoadState();\n }\n\n async waitForScriptToBeDeleted() {\n await this.page.waitForLoadState();\n }\n\n async waitForScriptToBeRenamed() {\n await this.page.waitForLoadState();\n }\n \n // Will only work for root scripts\n async goToScript(scriptName: string) {\n await this.goToSection(ConstantHelper.sections.settings);\n await this.reloadScriptTree();\n await this.page.getByLabel(scriptName, {exact: true}).click();\n }\n\n async enterScriptName(scriptContent: string) {\n await expect(this.enterAName).toBeVisible();\n await this.enterAName.fill(scriptContent);\n }\n\n async enterScriptContent(scriptContent: string) {\n await this.enterMonacoEditorValue(scriptContent);\n }\n\n async openScriptAtRoot(scriptName: string) {\n await this.reloadScriptTree();\n await this.page.getByLabel(scriptName, {exact: true}).click();\n }\n\n async reloadScriptTree() {\n await this.reloadTree('Scripts');\n }\n\n async isScriptRootTreeItemVisible(scriptName: string, isVisible: boolean = true, toReload: boolean = true){\n if (toReload) {\n await this.reloadScriptTree();\n }\n return expect(this.scriptTree.getByText(scriptName, {exact: true})).toBeVisible({visible: isVisible});\n }\n}"]}
@@ -1,24 +1,9 @@
1
- import { ApiHelpers } from "./ApiHelpers";
2
- export declare class StylesheetApiHelper {
3
- api: ApiHelpers;
4
- constructor(api: ApiHelpers);
5
- get(path: string): Promise<any>;
6
- doesExist(path: string): Promise<boolean>;
1
+ import { PathBasedTreeApiHelper } from "./PathBasedTreeApiHelper";
2
+ export declare class StylesheetApiHelper extends PathBasedTreeApiHelper {
3
+ protected resourcePath: string;
4
+ protected treePath: string;
5
+ createStylesheet(name: string, content: string, parentPath?: string): Promise<string>;
7
6
  create(name: string, content: string, parentPath?: string): Promise<string>;
8
- updateName(path: string, newName: string): Promise<string | undefined>;
9
- updateContent(path: string, newContent: string): Promise<import("playwright-core").APIResponse>;
10
- delete(path: string): Promise<import("playwright-core").APIResponse>;
11
- getChildren(path: string): Promise<any>;
12
- doesNameExist(name: string): Promise<any>;
13
- getAllAtRoot(): Promise<import("playwright-core").APIResponse>;
14
- getByName(name: string): Promise<any>;
15
- ensureNameNotExists(name: string): Promise<import("playwright-core").APIResponse | null>;
16
- private recurseChildren;
17
- private recurseDeleteChildren;
18
- getFolder(path: string): Promise<any>;
19
- doesFolderExist(path: string): Promise<boolean>;
20
- createFolder(name: string, parentPath?: string): Promise<string | undefined>;
21
- deleteFolder(path: string): Promise<import("playwright-core").APIResponse>;
22
7
  createDefaultStylesheet(name: string): Promise<string>;
23
8
  encodeStylesheetPath(path: string): Promise<string>;
24
9
  createStylesheetWithHeaderContent(name: string): Promise<string>;
@@ -1,172 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StylesheetApiHelper = void 0;
4
- class StylesheetApiHelper {
5
- api;
6
- constructor(api) {
7
- this.api = api;
8
- }
9
- async get(path) {
10
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
11
- return await response.json();
12
- }
13
- async doesExist(path) {
14
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
15
- return response.status() === 200;
16
- }
17
- async create(name, content, parentPath) {
4
+ const PathBasedTreeApiHelper_1 = require("./PathBasedTreeApiHelper");
5
+ class StylesheetApiHelper extends PathBasedTreeApiHelper_1.PathBasedTreeApiHelper {
6
+ resourcePath = 'stylesheet';
7
+ treePath = 'tree/stylesheet';
8
+ // Stylesheet-specific create with content
9
+ async createStylesheet(name, content, parentPath) {
18
10
  const parentValue = parentPath ? { 'path': parentPath } : null;
19
11
  const stylesheetData = {
20
12
  "name": name,
21
13
  "parent": parentValue,
22
14
  "content": content
23
15
  };
24
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);
25
- // Returns the path of the created stylesheet
26
- const path = response.headers().location.split("/v1/stylesheet/").pop();
27
- return decodeURIComponent(path);
28
- }
29
- async updateName(path, newName) {
30
- const stylesheetData = {
31
- "name": newName
32
- };
33
- const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path) + '/rename', stylesheetData);
34
- // Returns the path of the created Stylesheet
35
- const newPath = response.headers().location.split("/v1/stylesheet/").pop();
36
- if (newPath !== undefined) {
37
- return decodeURIComponent(newPath);
38
- }
39
- return undefined;
40
- }
41
- async updateContent(path, newContent) {
42
- const stylesheetData = {
43
- "content": newContent
44
- };
45
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path), stylesheetData);
46
- }
47
- async delete(path) {
48
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
49
- }
50
- async getChildren(path) {
51
- const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/stylesheet/children?parentPath=${path}&skip=0&take=10000`);
52
- const items = await response.json();
53
- return items.items;
54
- }
55
- async doesNameExist(name) {
56
- return await this.getByName(name);
16
+ const response = await this.api.post(this.buildUrl(), stylesheetData);
17
+ return this.extractPathFromLocation(response);
57
18
  }
58
- async getAllAtRoot() {
59
- return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');
60
- }
61
- async getByName(name) {
62
- const rootStylesheet = await this.getAllAtRoot();
63
- const jsonStylesheet = await rootStylesheet.json();
64
- for (const stylesheet of jsonStylesheet.items) {
65
- if (stylesheet.name === name) {
66
- if (stylesheet.isFolder) {
67
- return this.getFolder(stylesheet.path);
68
- }
69
- else {
70
- return this.get(stylesheet.path);
71
- }
72
- }
73
- else if (stylesheet.isFolder && stylesheet.hasChildren) {
74
- const result = await this.recurseChildren(name, stylesheet.path, false);
75
- if (result) {
76
- return result;
77
- }
78
- }
79
- }
80
- return false;
81
- }
82
- async ensureNameNotExists(name) {
83
- const rootStylesheet = await this.getAllAtRoot();
84
- const jsonStylesheet = await rootStylesheet.json();
85
- for (const stylesheet of jsonStylesheet.items) {
86
- if (stylesheet.name === name) {
87
- if (stylesheet.isFolder) {
88
- return await this.recurseDeleteChildren(stylesheet);
89
- }
90
- return await this.delete(stylesheet.path);
91
- }
92
- else if (stylesheet.hasChildren) {
93
- await this.recurseChildren(name, stylesheet.path, true);
94
- }
95
- }
96
- return null;
97
- }
98
- async recurseChildren(name, path, toDelete) {
99
- const items = await this.getChildren(path);
100
- for (const child of items) {
101
- if (child.name === name) {
102
- if (!toDelete) {
103
- if (child.isFolder) {
104
- return await this.getFolder(child.path);
105
- }
106
- return await this.get(child.path);
107
- }
108
- if (child.isFolder) {
109
- return await this.recurseDeleteChildren(child);
110
- }
111
- return await this.delete(child.path);
112
- }
113
- else if (child.hasChildren) {
114
- return await this.recurseChildren(name, child.path, toDelete);
115
- }
116
- }
117
- return false;
118
- }
119
- async recurseDeleteChildren(stylesheetFolder) {
120
- if (!stylesheetFolder.hasChildren) {
121
- return await this.deleteFolder(stylesheetFolder.path);
122
- }
123
- const items = await this.getChildren(stylesheetFolder.path);
124
- for (const child of items) {
125
- if (child.hasChildren) {
126
- await this.recurseDeleteChildren(child);
127
- }
128
- else if (child.isFolder) {
129
- await this.deleteFolder(child.path);
130
- }
131
- else {
132
- await this.delete(child.path);
133
- }
134
- }
135
- return await this.deleteFolder(stylesheetFolder.path);
136
- }
137
- // Folder
138
- async getFolder(path) {
139
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
140
- return await response.json();
141
- }
142
- async doesFolderExist(path) {
143
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
144
- return response.status() === 200;
145
- }
146
- async createFolder(name, parentPath) {
147
- const parentValue = parentPath ? { 'path': parentPath } : null;
148
- const stylesheetFolderData = {
149
- "name": name,
150
- "parent": parentValue
151
- };
152
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder', stylesheetFolderData);
153
- // Returns the path of the created Stylesheet folder
154
- const path = response.headers().location.split("/v1/stylesheet/folder/").pop();
155
- if (path !== undefined) {
156
- return decodeURIComponent(path);
157
- }
158
- return undefined;
159
- }
160
- async deleteFolder(path) {
161
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
19
+ // Backward compatible alias
20
+ async create(name, content, parentPath) {
21
+ return this.createStylesheet(name, content, parentPath);
162
22
  }
163
23
  async createDefaultStylesheet(name) {
164
24
  await this.ensureNameNotExists(name);
165
- return await this.create(name, "/*\n");
25
+ return await this.createStylesheet(name, "/*\n");
166
26
  }
167
27
  async encodeStylesheetPath(path) {
168
28
  let encodedPath = encodeURIComponent(path);
169
- // Replace the dot with the required encoding
170
29
  encodedPath = encodedPath.replace(/\./g, '%25dot%25');
171
30
  return encodedPath;
172
31
  }
@@ -176,7 +35,7 @@ class StylesheetApiHelper {
176
35
  'h1 {\n' +
177
36
  '\tcolor:red\n' +
178
37
  '}';
179
- return await this.create(name, content);
38
+ return await this.createStylesheet(name, content);
180
39
  }
181
40
  }
182
41
  exports.StylesheetApiHelper = StylesheetApiHelper;