@umbraco/playwright-testhelpers 17.1.0-beta.5 → 17.1.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/helpers/BaseApiHelper.d.ts +19 -0
- package/dist/lib/helpers/BaseApiHelper.js +87 -0
- package/dist/lib/helpers/BaseApiHelper.js.map +1 -0
- package/dist/lib/helpers/ConstantHelper.d.ts +0 -17
- package/dist/lib/helpers/ConstantHelper.js +0 -17
- package/dist/lib/helpers/ConstantHelper.js.map +1 -1
- package/dist/lib/helpers/ContentRenderUiHelper.js +3 -3
- package/dist/lib/helpers/ContentRenderUiHelper.js.map +1 -1
- package/dist/lib/helpers/ContentUiHelper.js +487 -353
- package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
- package/dist/lib/helpers/CurrentUserProfileUiHelper.js +10 -4
- package/dist/lib/helpers/CurrentUserProfileUiHelper.js.map +1 -1
- package/dist/lib/helpers/DataTypeApiHelper.d.ts +9 -21
- package/dist/lib/helpers/DataTypeApiHelper.js +32 -125
- package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/DataTypeUiHelper.js +332 -193
- package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/DictionaryApiHelper.d.ts +8 -15
- package/dist/lib/helpers/DictionaryApiHelper.js +49 -77
- package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
- package/dist/lib/helpers/DictionaryUiHelper.js +23 -17
- package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentBlueprintApiHelper.d.ts +7 -13
- package/dist/lib/helpers/DocumentBlueprintApiHelper.js +44 -69
- package/dist/lib/helpers/DocumentBlueprintApiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentBlueprintUiHelper.js +10 -8
- package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +4 -18
- package/dist/lib/helpers/DocumentTypeApiHelper.js +4 -134
- package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentTypeUiHelper.js +34 -22
- package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/ExamineManagementUiHelper.js +6 -5
- package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -1
- package/dist/lib/helpers/FormsUiHelper.js +159 -119
- package/dist/lib/helpers/FormsUiHelper.js.map +1 -1
- package/dist/lib/helpers/HealthCheckUiHelper.js +7 -7
- package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -1
- package/dist/lib/helpers/LanguageApiHelper.d.ts +10 -12
- package/dist/lib/helpers/LanguageApiHelper.js +34 -35
- package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
- package/dist/lib/helpers/LanguageUiHelper.js +19 -16
- package/dist/lib/helpers/LanguageUiHelper.js.map +1 -1
- package/dist/lib/helpers/LogViewerUiHelper.js +31 -22
- package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -1
- package/dist/lib/helpers/LoginUiHelper.js +7 -4
- package/dist/lib/helpers/LoginUiHelper.js.map +1 -1
- package/dist/lib/helpers/MediaTypeApiHelper.d.ts +4 -18
- package/dist/lib/helpers/MediaTypeApiHelper.js +4 -134
- package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/MediaTypeUiHelper.js +17 -11
- package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/MediaUiHelper.js +45 -36
- package/dist/lib/helpers/MediaUiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberApiHelper.d.ts +4 -12
- package/dist/lib/helpers/MemberApiHelper.js +6 -54
- package/dist/lib/helpers/MemberApiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberGroupApiHelper.d.ts +6 -11
- package/dist/lib/helpers/MemberGroupApiHelper.js +20 -35
- package/dist/lib/helpers/MemberGroupApiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberGroupUiHelper.js +16 -13
- package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberTypeApiHelper.d.ts +5 -12
- package/dist/lib/helpers/MemberTypeApiHelper.js +16 -49
- package/dist/lib/helpers/MemberTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberTypeUiHelper.js +3 -2
- package/dist/lib/helpers/MemberTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/MemberUiHelper.js +43 -25
- package/dist/lib/helpers/MemberUiHelper.js.map +1 -1
- package/dist/lib/helpers/ModelsBuilderUiHelper.js +3 -2
- package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -1
- package/dist/lib/helpers/PackageApiHelper.d.ts +5 -4
- package/dist/lib/helpers/PackageApiHelper.js +47 -75
- package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
- package/dist/lib/helpers/PackageUiHelper.js +36 -30
- package/dist/lib/helpers/PackageUiHelper.js.map +1 -1
- package/dist/lib/helpers/PartialViewApiHelper.d.ts +5 -20
- package/dist/lib/helpers/PartialViewApiHelper.js +12 -146
- package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
- package/dist/lib/helpers/PartialViewUiHelper.js +17 -14
- package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -1
- package/dist/lib/helpers/PathBasedTreeApiHelper.d.ts +32 -0
- package/dist/lib/helpers/PathBasedTreeApiHelper.js +164 -0
- package/dist/lib/helpers/PathBasedTreeApiHelper.js.map +1 -0
- package/dist/lib/helpers/ProfilingUiHelper.js +5 -3
- package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -1
- package/dist/lib/helpers/PublishedStatusUiHelper.js +8 -7
- package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -1
- package/dist/lib/helpers/RedirectManagementUiHelper.js +12 -7
- package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -1
- package/dist/lib/helpers/RelationTypeApiHelper.d.ts +7 -12
- package/dist/lib/helpers/RelationTypeApiHelper.js +28 -49
- package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/RelationTypeUiHelper.js +16 -13
- package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/ScriptApiHelper.d.ts +6 -22
- package/dist/lib/helpers/ScriptApiHelper.js +12 -165
- package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
- package/dist/lib/helpers/ScriptUiHelper.js +13 -9
- package/dist/lib/helpers/ScriptUiHelper.js.map +1 -1
- package/dist/lib/helpers/StylesheetApiHelper.d.ts +5 -20
- package/dist/lib/helpers/StylesheetApiHelper.js +13 -154
- package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
- package/dist/lib/helpers/StylesheetUiHelper.js +14 -9
- package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
- package/dist/lib/helpers/TelemetryDataUiHelper.js +3 -2
- package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -1
- package/dist/lib/helpers/TemplateApiHelper.d.ts +8 -15
- package/dist/lib/helpers/TemplateApiHelper.js +51 -83
- package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
- package/dist/lib/helpers/TemplateUiHelper.js +25 -19
- package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
- package/dist/lib/helpers/TreeApiHelper.d.ts +15 -0
- package/dist/lib/helpers/TreeApiHelper.js +116 -0
- package/dist/lib/helpers/TreeApiHelper.js.map +1 -0
- package/dist/lib/helpers/UiBaseLocators.d.ts +228 -230
- package/dist/lib/helpers/UiBaseLocators.js +871 -832
- package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
- package/dist/lib/helpers/UserGroupApiHelper.d.ts +3 -13
- package/dist/lib/helpers/UserGroupApiHelper.js +3 -69
- package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
- package/dist/lib/helpers/UserGroupUiHelper.js +49 -32
- package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
- package/dist/lib/helpers/UserUiHelper.js +46 -43
- package/dist/lib/helpers/UserUiHelper.js.map +1 -1
- package/dist/lib/helpers/VariantBasedApiHelper.d.ts +23 -0
- package/dist/lib/helpers/VariantBasedApiHelper.js +81 -0
- package/dist/lib/helpers/VariantBasedApiHelper.js.map +1 -0
- package/dist/lib/helpers/WebhookApiHelper.d.ts +1 -0
- package/dist/lib/helpers/WebhookApiHelper.js +10 -11
- package/dist/lib/helpers/WebhookApiHelper.js.map +1 -1
- package/dist/lib/helpers/WebhookUiHelper.js +27 -11
- package/dist/lib/helpers/WebhookUiHelper.js.map +1 -1
- package/dist/lib/helpers/WelcomeDashboardUiHelper.js +1 -1
- package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -1
- package/dist/lib/helpers/differentAppSettingsHelpers/ExternalLoginUiHelpers.js +9 -4
- package/dist/lib/helpers/differentAppSettingsHelpers/ExternalLoginUiHelpers.js.map +1 -1
- package/dist/lib/helpers/differentAppSettingsHelpers/InstallUiHelper.js +10 -5
- package/dist/lib/helpers/differentAppSettingsHelpers/InstallUiHelper.js.map +1 -1
- package/dist/lib/helpers/index.d.ts +4 -1
- package/dist/lib/helpers/index.js +9 -3
- package/dist/lib/helpers/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/lib/helpers/BasePage.d.ts +0 -449
- package/dist/lib/helpers/BasePage.js +0 -547
- package/dist/lib/helpers/BasePage.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PackageUiHelper = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
4
5
|
const UiBaseLocators_1 = require("./UiBaseLocators");
|
|
5
6
|
const umbraco_config_1 = require("../../umbraco.config");
|
|
6
|
-
const ConstantHelper_1 = require("./ConstantHelper");
|
|
7
7
|
class PackageUiHelper extends UiBaseLocators_1.UiBaseLocators {
|
|
8
8
|
createdTabBtn;
|
|
9
9
|
marketPlaceIFrame;
|
|
@@ -56,83 +56,89 @@ class PackageUiHelper extends UiBaseLocators_1.UiBaseLocators {
|
|
|
56
56
|
this.umbracoBackofficePackage = page.locator('uui-ref-node-package', { hasText: '@umbraco-cms/backoffice' });
|
|
57
57
|
}
|
|
58
58
|
async isUmbracoBackofficePackageVisible(isVisible = true) {
|
|
59
|
-
await
|
|
59
|
+
return await (0, test_1.expect)(this.umbracoBackofficePackage).toBeVisible({ visible: isVisible });
|
|
60
60
|
}
|
|
61
61
|
async clickCreatedTab() {
|
|
62
|
-
await this.page.waitForTimeout(
|
|
63
|
-
await
|
|
64
|
-
await this.
|
|
62
|
+
await this.page.waitForTimeout(500);
|
|
63
|
+
await (0, test_1.expect)(this.createdTabBtn).toBeVisible();
|
|
64
|
+
await this.createdTabBtn.click();
|
|
65
|
+
await this.page.waitForTimeout(500);
|
|
65
66
|
}
|
|
66
67
|
async clickInstalledTab() {
|
|
67
|
-
await
|
|
68
|
+
await (0, test_1.expect)(this.installedTabBtn).toBeVisible();
|
|
69
|
+
await this.installedTabBtn.click();
|
|
68
70
|
}
|
|
69
71
|
async clickPackagesTab() {
|
|
70
|
-
await
|
|
72
|
+
await (0, test_1.expect)(this.packagesTabBtn).toBeVisible();
|
|
73
|
+
await this.packagesTabBtn.click();
|
|
71
74
|
}
|
|
72
75
|
async clickChooseBtn() {
|
|
73
|
-
await this.click(
|
|
76
|
+
await this.chooseModalBtn.click();
|
|
74
77
|
}
|
|
75
78
|
async isMarketPlaceIFrameVisible(isVisible = true) {
|
|
76
|
-
await
|
|
79
|
+
return await (0, test_1.expect)(this.marketPlaceIFrame).toBeVisible({ visible: isVisible });
|
|
77
80
|
}
|
|
78
81
|
async clickCreatePackageButton() {
|
|
79
|
-
await this.click(
|
|
82
|
+
await this.createPackageBtn.click();
|
|
80
83
|
}
|
|
81
84
|
async enterPackageName(packageName) {
|
|
82
|
-
await this.
|
|
83
|
-
await this.
|
|
85
|
+
await this.packageNameTxt.clear();
|
|
86
|
+
await this.packageNameTxt.fill(packageName);
|
|
87
|
+
await this.page.waitForTimeout(500);
|
|
84
88
|
}
|
|
85
89
|
async isPackageNameVisible(packageName, isVisible = true) {
|
|
86
|
-
return await
|
|
90
|
+
return await (0, test_1.expect)(this.page.getByRole('button', { name: packageName })).toBeVisible({ visible: isVisible });
|
|
87
91
|
}
|
|
88
92
|
async clickExistingPackageName(packageName) {
|
|
89
|
-
await this.
|
|
90
|
-
await this.page.waitForTimeout(
|
|
93
|
+
await this.page.getByRole('button', { name: packageName }).click();
|
|
94
|
+
await this.page.waitForTimeout(500);
|
|
91
95
|
}
|
|
92
96
|
async clickDeleteButtonForPackageName(packageName) {
|
|
93
97
|
const deletePackageWithNameLocator = this.page.locator('uui-ref-node-package', { hasText: packageName }).getByLabel('Delete');
|
|
94
|
-
await
|
|
98
|
+
await (0, test_1.expect)(deletePackageWithNameLocator).toBeVisible();
|
|
99
|
+
await deletePackageWithNameLocator.click();
|
|
95
100
|
}
|
|
96
101
|
async clickSaveChangesToPackageButton() {
|
|
97
|
-
await this.click(
|
|
102
|
+
await this.saveChangesToPackageBtn.click();
|
|
98
103
|
}
|
|
99
104
|
async clickAddContentToPackageButton() {
|
|
100
|
-
await this.click(
|
|
105
|
+
await this.addContentToPackageBtn.click();
|
|
101
106
|
}
|
|
102
107
|
async clickAddMediaToPackageButton() {
|
|
103
|
-
await
|
|
108
|
+
await (0, test_1.expect)(this.addMediaToPackageBtn).toBeVisible();
|
|
109
|
+
await this.addMediaToPackageBtn.click();
|
|
104
110
|
}
|
|
105
111
|
async clickAddDocumentTypeToPackageButton() {
|
|
106
|
-
await this.click(
|
|
112
|
+
await this.addDocumentTypeToPackageBtn.click();
|
|
107
113
|
}
|
|
108
114
|
async clickAddMediaTypeToPackageButton() {
|
|
109
|
-
await this.click(
|
|
115
|
+
await this.addMediaTypeToPackageBtn.click();
|
|
110
116
|
}
|
|
111
117
|
async clickAddLanguageToPackageButton() {
|
|
112
|
-
await this.click(
|
|
118
|
+
await this.addLanguageToPackageBtn.click();
|
|
113
119
|
}
|
|
114
120
|
async clickAddDictionaryToPackageButton() {
|
|
115
|
-
await this.click(
|
|
121
|
+
await this.addDictionaryToPackageBtn.click();
|
|
116
122
|
}
|
|
117
123
|
async clickAddDataTypesToPackageButton() {
|
|
118
|
-
await this.click(
|
|
124
|
+
await this.addDataTypesToPackageBtn.click();
|
|
119
125
|
}
|
|
120
126
|
async clickAddTemplatesToPackageButton() {
|
|
121
|
-
await this.click(
|
|
127
|
+
await this.addTemplatesToPackagesBtn.click();
|
|
122
128
|
}
|
|
123
129
|
async clickAddPartialViewToPackageButton() {
|
|
124
|
-
await this.click(
|
|
130
|
+
await this.addPartialViewToPackageBtn.click();
|
|
125
131
|
}
|
|
126
132
|
async clickAddScriptToPackageButton() {
|
|
127
|
-
await this.click(
|
|
133
|
+
await this.addScriptToPackageBtn.click();
|
|
128
134
|
}
|
|
129
135
|
async clickAddStylesheetToPackageButton() {
|
|
130
|
-
await this.click(
|
|
136
|
+
await this.addStylesheetToPackageBtn.click();
|
|
131
137
|
}
|
|
132
138
|
// Downloads the package and converts it to a string
|
|
133
139
|
async downloadPackage(packageId) {
|
|
134
|
-
const responsePromise = this.page.waitForResponse(
|
|
135
|
-
await this.click(
|
|
140
|
+
const responsePromise = this.page.waitForResponse(umbraco_config_1.umbracoConfig.environment.baseUrl + '/umbraco/management/api/v1/package/created/' + packageId + '/download');
|
|
141
|
+
await this.downloadPackageBtn.click();
|
|
136
142
|
const response = await responsePromise;
|
|
137
143
|
const body = await response.body();
|
|
138
144
|
return body.toString().trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PackageUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Locator, Page,} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\nimport {umbracoConfig} from \"../../umbraco.config\";\nimport {ConstantHelper} from \"./ConstantHelper\";\n\nexport class PackageUiHelper extends UiBaseLocators {\n private readonly createdTabBtn: Locator;\n private readonly marketPlaceIFrame: Locator;\n private readonly installedTabBtn: Locator;\n private readonly packagesTabBtn: Locator;\n private readonly createPackageBtn: Locator;\n private readonly packageNameTxt: Locator;\n private readonly saveChangesToPackageBtn: Locator;\n private readonly addContentToPackageBtn: Locator;\n private readonly addMediaToPackageBtn: Locator;\n private readonly addDocumentTypeToPackageBtn: Locator;\n private readonly addMediaTypeToPackageBtn: Locator;\n private readonly addLanguageToPackageBtn: Locator;\n private readonly addDictionaryToPackageBtn: Locator;\n private readonly addDataTypesToPackageBtn: Locator;\n private readonly addTemplatesToPackagesBtn: Locator;\n private readonly addPartialViewToPackageBtn: Locator;\n private readonly addScriptToPackageBtn: Locator;\n private readonly addStylesheetToPackageBtn: Locator;\n private readonly downloadPackageBtn: Locator;\n private readonly propertyLayout: Locator;\n private readonly umbracoBackofficePackage: Locator;\n private readonly viewsId: Locator;\n\n constructor(page: Page) {\n super(page);\n this.viewsId = page.locator('#views');\n // Packages\n this.packagesTabBtn = this.viewsId.getByRole('tab', { name: 'Packages' });\n this.marketPlaceIFrame = page.frameLocator('iframe[title=\"Umbraco Marketplace\"]').locator('umb-market-app');\n // Installed\n this.installedTabBtn = this.viewsId.getByRole('tab', { name: 'Installed' });\n // Created\n this.propertyLayout = page.locator('umb-property-layout');\n this.createdTabBtn = this.viewsId.getByRole('tab', { name: 'Created' });\n this.createPackageBtn = page.getByLabel(\"Create package\");\n this.packageNameTxt = page.getByLabel('Name of the package');\n this.saveChangesToPackageBtn = page.getByLabel('Save changes to package');\n this.addContentToPackageBtn = page.locator('umb-input-document').getByLabel('Choose');\n this.addMediaToPackageBtn = page.locator('umb-input-media').getByLabel('Choose');\n this.addDocumentTypeToPackageBtn = this.propertyLayout.filter({hasText: 'Document Types'}).getByLabel('Choose');\n this.addMediaTypeToPackageBtn = this.propertyLayout.filter({hasText: 'Media Types'}).getByLabel('Choose');\n this.addLanguageToPackageBtn = this.propertyLayout.filter({hasText: 'Languages'}).getByLabel('Choose');\n this.addDictionaryToPackageBtn = this.propertyLayout.filter({hasText: 'Dictionary'}).getByLabel('Choose');\n this.addDataTypesToPackageBtn = this.propertyLayout.filter({hasText: 'Data Types'}).getByLabel('Choose');\n this.addTemplatesToPackagesBtn = this.propertyLayout.filter({hasText: 'Templates'}).getByLabel('Choose');\n this.addPartialViewToPackageBtn = this.propertyLayout.filter({hasText: 'Partial Views'}).getByLabel('Choose');\n this.addScriptToPackageBtn = this.propertyLayout.filter({hasText: 'Scripts'}).getByLabel('Choose');\n this.addStylesheetToPackageBtn = this.propertyLayout.filter({hasText: 'Stylesheets'}).getByLabel('Choose');\n this.downloadPackageBtn = page.getByLabel('Download');\n this.umbracoBackofficePackage = page.locator('uui-ref-node-package', {hasText: '@umbraco-cms/backoffice'});\n }\n\n async isUmbracoBackofficePackageVisible(isVisible = true) {\n await this.isVisible(this.umbracoBackofficePackage, isVisible);\n }\n\n async clickCreatedTab() {\n await this.page.waitForTimeout(ConstantHelper.wait.short);\n await this.click(this.createdTabBtn);\n await this.page.waitForTimeout(ConstantHelper.wait.short);\n }\n\n async clickInstalledTab() {\n await this.click(this.installedTabBtn);\n }\n\n async clickPackagesTab() {\n await this.click(this.packagesTabBtn);\n }\n\n async clickChooseBtn() {\n await this.click(this.chooseModalBtn);\n }\n\n async isMarketPlaceIFrameVisible(isVisible = true) {\n await this.isVisible(this.marketPlaceIFrame, isVisible);\n }\n\n async clickCreatePackageButton() {\n await this.click(this.createPackageBtn);\n }\n\n async enterPackageName(packageName: string) {\n await this.enterText(this.packageNameTxt, packageName);\n await this.page.waitForTimeout(ConstantHelper.wait.short);\n }\n\n async isPackageNameVisible(packageName: string, isVisible = true) {\n return await this.isVisible(this.page.getByRole('button', {name: packageName}), isVisible);\n }\n\n async clickExistingPackageName(packageName: string) {\n await this.click(this.page.getByRole('button', {name: packageName}));\n await this.page.waitForTimeout(ConstantHelper.wait.short);\n }\n\n async clickDeleteButtonForPackageName(packageName: string) {\n const deletePackageWithNameLocator = this.page.locator('uui-ref-node-package', {hasText: packageName}).getByLabel('Delete');\n await this.click(deletePackageWithNameLocator);\n }\n\n async clickSaveChangesToPackageButton() {\n await this.click(this.saveChangesToPackageBtn);\n }\n\n async clickAddContentToPackageButton() {\n await this.click(this.addContentToPackageBtn);\n }\n\n async clickAddMediaToPackageButton() {\n await this.click(this.addMediaToPackageBtn);\n }\n\n async clickAddDocumentTypeToPackageButton() {\n await this.click(this.addDocumentTypeToPackageBtn);\n }\n\n async clickAddMediaTypeToPackageButton() {\n await this.click(this.addMediaTypeToPackageBtn);\n }\n\n async clickAddLanguageToPackageButton() {\n await this.click(this.addLanguageToPackageBtn);\n }\n\n async clickAddDictionaryToPackageButton() {\n await this.click(this.addDictionaryToPackageBtn);\n }\n\n async clickAddDataTypesToPackageButton() {\n await this.click(this.addDataTypesToPackageBtn);\n }\n\n async clickAddTemplatesToPackageButton() {\n await this.click(this.addTemplatesToPackagesBtn);\n }\n\n async clickAddPartialViewToPackageButton() {\n await this.click(this.addPartialViewToPackageBtn);\n }\n\n async clickAddScriptToPackageButton() {\n await this.click(this.addScriptToPackageBtn);\n }\n\n async clickAddStylesheetToPackageButton() {\n await this.click(this.addStylesheetToPackageBtn);\n }\n\n // Downloads the package and converts it to a string\n async downloadPackage(packageId: string) {\n const responsePromise = this.page.waitForResponse(`${umbracoConfig.environment.baseUrl}/umbraco/management/api/v1/package/created/${packageId}/download`);\n await this.click(this.downloadPackageBtn);\n const response = await responsePromise;\n const body = await response.body();\n return body.toString().trim();\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"PackageUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PackageUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {expect, Locator, Page,} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\nimport {umbracoConfig} from \"../../umbraco.config\";\n\nexport class PackageUiHelper extends UiBaseLocators {\n private readonly createdTabBtn: Locator;\n private readonly marketPlaceIFrame: Locator;\n private readonly installedTabBtn: Locator;\n private readonly packagesTabBtn: Locator;\n private readonly createPackageBtn: Locator;\n private readonly packageNameTxt: Locator;\n private readonly saveChangesToPackageBtn: Locator;\n private readonly addContentToPackageBtn: Locator;\n private readonly addMediaToPackageBtn: Locator;\n private readonly addDocumentTypeToPackageBtn: Locator;\n private readonly addMediaTypeToPackageBtn: Locator;\n private readonly addLanguageToPackageBtn: Locator;\n private readonly addDictionaryToPackageBtn: Locator;\n private readonly addDataTypesToPackageBtn: Locator;\n private readonly addTemplatesToPackagesBtn: Locator;\n private readonly addPartialViewToPackageBtn: Locator;\n private readonly addScriptToPackageBtn: Locator;\n private readonly addStylesheetToPackageBtn: Locator;\n private readonly downloadPackageBtn: Locator;\n private readonly propertyLayout: Locator;\n private readonly umbracoBackofficePackage: Locator;\n private readonly viewsId: Locator;\n\n constructor(page: Page) {\n super(page);\n this.viewsId = page.locator('#views');\n // Packages\n this.packagesTabBtn = this.viewsId.getByRole('tab', { name: 'Packages' });\n this.marketPlaceIFrame = page.frameLocator('iframe[title=\"Umbraco Marketplace\"]').locator('umb-market-app');\n // Installed\n this.installedTabBtn = this.viewsId.getByRole('tab', { name: 'Installed' });\n // Created\n this.propertyLayout = page.locator('umb-property-layout');\n this.createdTabBtn = this.viewsId.getByRole('tab', { name: 'Created' });\n this.createPackageBtn = page.getByLabel(\"Create package\");\n this.packageNameTxt = page.getByLabel('Name of the package');\n this.saveChangesToPackageBtn = page.getByLabel('Save changes to package');\n this.addContentToPackageBtn = page.locator('umb-input-document').getByLabel('Choose');\n this.addMediaToPackageBtn = page.locator('umb-input-media').getByLabel('Choose');\n this.addDocumentTypeToPackageBtn = this.propertyLayout.filter({hasText: 'Document Types'}).getByLabel('Choose');\n this.addMediaTypeToPackageBtn = this.propertyLayout.filter({hasText: 'Media Types'}).getByLabel('Choose');\n this.addLanguageToPackageBtn = this.propertyLayout.filter({hasText: 'Languages'}).getByLabel('Choose');\n this.addDictionaryToPackageBtn = this.propertyLayout.filter({hasText: 'Dictionary'}).getByLabel('Choose');\n this.addDataTypesToPackageBtn = this.propertyLayout.filter({hasText: 'Data Types'}).getByLabel('Choose');\n this.addTemplatesToPackagesBtn = this.propertyLayout.filter({hasText: 'Templates'}).getByLabel('Choose');\n this.addPartialViewToPackageBtn = this.propertyLayout.filter({hasText: 'Partial Views'}).getByLabel('Choose');\n this.addScriptToPackageBtn = this.propertyLayout.filter({hasText: 'Scripts'}).getByLabel('Choose');\n this.addStylesheetToPackageBtn = this.propertyLayout.filter({hasText: 'Stylesheets'}).getByLabel('Choose');\n this.downloadPackageBtn = page.getByLabel('Download');\n this.umbracoBackofficePackage = page.locator('uui-ref-node-package', {hasText: '@umbraco-cms/backoffice'});\n }\n\n async isUmbracoBackofficePackageVisible(isVisible = true) {\n return await expect(this.umbracoBackofficePackage).toBeVisible({visible: isVisible});\n }\n\n async clickCreatedTab() {\n await this.page.waitForTimeout(500);\n await expect(this.createdTabBtn).toBeVisible();\n await this.createdTabBtn.click();\n await this.page.waitForTimeout(500);\n }\n\n async clickInstalledTab() {\n await expect(this.installedTabBtn).toBeVisible();\n await this.installedTabBtn.click();\n }\n\n async clickPackagesTab() {\n await expect(this.packagesTabBtn).toBeVisible();\n await this.packagesTabBtn.click();\n }\n\n async clickChooseBtn() {\n await this.chooseModalBtn.click();\n }\n\n async isMarketPlaceIFrameVisible(isVisible = true) {\n return await expect(this.marketPlaceIFrame).toBeVisible({visible: isVisible});\n }\n\n async clickCreatePackageButton() {\n await this.createPackageBtn.click();\n }\n\n async enterPackageName(packageName: string) {\n await this.packageNameTxt.clear();\n await this.packageNameTxt.fill(packageName);\n await this.page.waitForTimeout(500);\n }\n\n async isPackageNameVisible(packageName: string, isVisible = true) {\n return await expect(this.page.getByRole('button', {name: packageName})).toBeVisible({visible: isVisible});\n }\n\n async clickExistingPackageName(packageName: string) {\n await this.page.getByRole('button', {name: packageName}).click();\n await this.page.waitForTimeout(500);\n }\n\n async clickDeleteButtonForPackageName(packageName: string) {\n const deletePackageWithNameLocator = this.page.locator('uui-ref-node-package', {hasText: packageName}).getByLabel('Delete');\n await expect(deletePackageWithNameLocator).toBeVisible();\n await deletePackageWithNameLocator.click();\n }\n\n async clickSaveChangesToPackageButton() {\n await this.saveChangesToPackageBtn.click();\n }\n\n async clickAddContentToPackageButton() {\n await this.addContentToPackageBtn.click();\n }\n\n async clickAddMediaToPackageButton() {\n await expect(this.addMediaToPackageBtn).toBeVisible();\n await this.addMediaToPackageBtn.click();\n }\n\n async clickAddDocumentTypeToPackageButton() {\n await this.addDocumentTypeToPackageBtn.click();\n }\n\n async clickAddMediaTypeToPackageButton() {\n await this.addMediaTypeToPackageBtn.click();\n }\n\n async clickAddLanguageToPackageButton() {\n await this.addLanguageToPackageBtn.click();\n }\n\n async clickAddDictionaryToPackageButton() {\n await this.addDictionaryToPackageBtn.click();\n }\n\n async clickAddDataTypesToPackageButton() {\n await this.addDataTypesToPackageBtn.click();\n }\n\n async clickAddTemplatesToPackageButton() {\n await this.addTemplatesToPackagesBtn.click();\n }\n\n async clickAddPartialViewToPackageButton() {\n await this.addPartialViewToPackageBtn.click();\n }\n\n async clickAddScriptToPackageButton() {\n await this.addScriptToPackageBtn.click();\n }\n\n async clickAddStylesheetToPackageButton() {\n await this.addStylesheetToPackageBtn.click();\n }\n\n // Downloads the package and converts it to a string\n async downloadPackage(packageId: string) {\n const responsePromise = this.page.waitForResponse(umbracoConfig.environment.baseUrl + '/umbraco/management/api/v1/package/created/' + packageId + '/download');\n await this.downloadPackageBtn.click();\n const response = await responsePromise;\n const body = await response.body();\n return body.toString().trim();\n }\n}"]}
|
|
@@ -1,23 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class PartialViewApiHelper {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
doesExist(path: string): Promise<boolean>;
|
|
1
|
+
import { PathBasedTreeApiHelper } from "./PathBasedTreeApiHelper";
|
|
2
|
+
export declare class PartialViewApiHelper extends PathBasedTreeApiHelper {
|
|
3
|
+
protected resourcePath: string;
|
|
4
|
+
protected treePath: string;
|
|
5
|
+
createPartialView(name: string, content: string, parentPath?: string): Promise<string>;
|
|
7
6
|
create(name: string, content: string, parentPath?: string): Promise<string>;
|
|
8
|
-
updateContent(path: string, content: string): Promise<import("playwright-core").APIResponse>;
|
|
9
|
-
updateName(path: string, name: string): Promise<string>;
|
|
10
|
-
delete(path: string): Promise<import("playwright-core").APIResponse>;
|
|
11
|
-
doesNameExist(name: string): Promise<any>;
|
|
12
|
-
getChildren(path: 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>;
|
|
21
|
-
deleteFolder(path: string): Promise<import("playwright-core").APIResponse>;
|
|
22
7
|
createDefaultPartialView(name: string): Promise<string>;
|
|
23
8
|
}
|
|
@@ -1,162 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PartialViewApiHelper = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
async
|
|
10
|
-
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + 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/partial-view/' + encodeURIComponent(path));
|
|
15
|
-
return response.status() === 200;
|
|
16
|
-
}
|
|
17
|
-
async create(name, content, parentPath) {
|
|
4
|
+
const PathBasedTreeApiHelper_1 = require("./PathBasedTreeApiHelper");
|
|
5
|
+
class PartialViewApiHelper extends PathBasedTreeApiHelper_1.PathBasedTreeApiHelper {
|
|
6
|
+
resourcePath = 'partial-view';
|
|
7
|
+
treePath = 'tree/partial-view';
|
|
8
|
+
// PartialView-specific create with content
|
|
9
|
+
async createPartialView(name, content, parentPath) {
|
|
18
10
|
const parentValue = parentPath ? { 'path': parentPath } : null;
|
|
19
11
|
const partialViewData = {
|
|
20
12
|
'name': name,
|
|
21
13
|
'parent': parentValue,
|
|
22
14
|
'content': content
|
|
23
15
|
};
|
|
24
|
-
const response = await this.api.post(this.
|
|
25
|
-
|
|
26
|
-
const partialViewPath = response.headers().location.split("/").pop();
|
|
27
|
-
return decodeURIComponent(partialViewPath);
|
|
28
|
-
}
|
|
29
|
-
async updateContent(path, content) {
|
|
30
|
-
const contentData = {
|
|
31
|
-
'content': content
|
|
32
|
-
};
|
|
33
|
-
return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path), contentData);
|
|
34
|
-
}
|
|
35
|
-
async updateName(path, name) {
|
|
36
|
-
const renameData = {
|
|
37
|
-
'name': name
|
|
38
|
-
};
|
|
39
|
-
const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path) + '/rename', renameData);
|
|
40
|
-
// Returns the path of the renamed partialView
|
|
41
|
-
const partialViewPath = response.headers().location.split("/").pop();
|
|
42
|
-
return decodeURIComponent(partialViewPath);
|
|
43
|
-
}
|
|
44
|
-
async delete(path) {
|
|
45
|
-
return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));
|
|
46
|
-
}
|
|
47
|
-
async doesNameExist(name) {
|
|
48
|
-
return await this.getByName(name);
|
|
49
|
-
}
|
|
50
|
-
async getChildren(path) {
|
|
51
|
-
const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/partial-view/children?parentPath=${path}&skip=0&take=10000`);
|
|
52
|
-
const items = await response.json();
|
|
53
|
-
return items.items;
|
|
16
|
+
const response = await this.api.post(this.buildUrl(), partialViewData);
|
|
17
|
+
return this.extractPathFromLocation(response);
|
|
54
18
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
async getByName(name) {
|
|
59
|
-
const rootPartialView = await this.getAllAtRoot();
|
|
60
|
-
const jsonPartialView = await rootPartialView.json();
|
|
61
|
-
for (const partialView of jsonPartialView.items) {
|
|
62
|
-
if (partialView.name === name) {
|
|
63
|
-
if (partialView.isFolder) {
|
|
64
|
-
return this.getFolder(partialView.path);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
return this.get(partialView.path);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else if (partialView.isFolder && partialView.hasChildren) {
|
|
71
|
-
const result = await this.recurseChildren(name, partialView.path, false);
|
|
72
|
-
if (result) {
|
|
73
|
-
return result;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
async ensureNameNotExists(name) {
|
|
80
|
-
const rootPartialView = await this.getAllAtRoot();
|
|
81
|
-
const jsonPartialView = await rootPartialView.json();
|
|
82
|
-
for (const partialView of jsonPartialView.items) {
|
|
83
|
-
if (partialView.name === name) {
|
|
84
|
-
if (partialView.isFolder) {
|
|
85
|
-
return await this.recurseDeleteChildren(partialView);
|
|
86
|
-
}
|
|
87
|
-
return await this.delete(partialView.path);
|
|
88
|
-
}
|
|
89
|
-
else if (partialView.hasChildren) {
|
|
90
|
-
await this.recurseChildren(name, partialView.path, true);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
async recurseChildren(name, path, toDelete) {
|
|
96
|
-
const items = await this.getChildren(path);
|
|
97
|
-
for (const child of items) {
|
|
98
|
-
if (child.name === name) {
|
|
99
|
-
if (!toDelete) {
|
|
100
|
-
if (child.isFolder) {
|
|
101
|
-
return await this.getFolder(child.path);
|
|
102
|
-
}
|
|
103
|
-
return await this.get(child.path);
|
|
104
|
-
}
|
|
105
|
-
if (child.isFolder) {
|
|
106
|
-
return await this.recurseDeleteChildren(child);
|
|
107
|
-
}
|
|
108
|
-
return await this.delete(child.path);
|
|
109
|
-
}
|
|
110
|
-
else if (child.hasChildren) {
|
|
111
|
-
return await this.recurseChildren(name, child.path, toDelete);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
async recurseDeleteChildren(partialViewFolder) {
|
|
117
|
-
if (!partialViewFolder.hasChildren) {
|
|
118
|
-
return await this.deleteFolder(partialViewFolder.path);
|
|
119
|
-
}
|
|
120
|
-
const items = await this.getChildren(partialViewFolder.path);
|
|
121
|
-
for (const child of items) {
|
|
122
|
-
if (child.hasChildren) {
|
|
123
|
-
await this.recurseDeleteChildren(child);
|
|
124
|
-
}
|
|
125
|
-
else if (child.isFolder) {
|
|
126
|
-
await this.deleteFolder(child.path);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
await this.delete(child.path);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return await this.deleteFolder(partialViewFolder.path);
|
|
133
|
-
}
|
|
134
|
-
// Folder
|
|
135
|
-
async getFolder(path) {
|
|
136
|
-
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
|
|
137
|
-
return await response.json();
|
|
138
|
-
}
|
|
139
|
-
async doesFolderExist(path) {
|
|
140
|
-
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
|
|
141
|
-
return response.status() === 200;
|
|
142
|
-
}
|
|
143
|
-
async createFolder(name, parentPath) {
|
|
144
|
-
const parentValue = parentPath ? { 'path': parentPath } : null;
|
|
145
|
-
const partialViewFolderData = {
|
|
146
|
-
"name": name,
|
|
147
|
-
"parent": parentValue
|
|
148
|
-
};
|
|
149
|
-
const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder', partialViewFolderData);
|
|
150
|
-
// Returns the path of the created folder
|
|
151
|
-
const folderPath = response.headers().location.split("/").pop();
|
|
152
|
-
return decodeURIComponent(folderPath);
|
|
153
|
-
}
|
|
154
|
-
async deleteFolder(path) {
|
|
155
|
-
return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
|
|
19
|
+
// Backward compatible alias
|
|
20
|
+
async create(name, content, parentPath) {
|
|
21
|
+
return this.createPartialView(name, content, parentPath);
|
|
156
22
|
}
|
|
157
23
|
async createDefaultPartialView(name) {
|
|
158
24
|
await this.ensureNameNotExists(name);
|
|
159
|
-
return await this.
|
|
25
|
+
return await this.createPartialView(name, "<h1>Test</h1>");
|
|
160
26
|
}
|
|
161
27
|
}
|
|
162
28
|
exports.PartialViewApiHelper = PartialViewApiHelper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartialViewApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAoB;IAC/B,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9H,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9H,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmB;QAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,eAAe,GAAG;YACtB,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,GAAG,CAAC,OAAO,GAAG,yCAAyC,EAAE,eAAe,CAAC,CAAC;QACpH,8CAA8C;QAC9C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,CAAC;QAC/E,OAAO,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAe;QAC/C,MAAM,WAAW,GAAG;YAClB,SAAS,EAAE,OAAO;SACnB,CAAA;QACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAClI,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,IAAY;QACzC,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,IAAI;SACb,CAAA;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC;QACrJ,8CAA8C;QAC9C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,CAAC;QAC/E,OAAO,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACzH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,oEAAoE,IAAI,oBAAoB,CAAC,CAAC;QACrJ,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,qEAAqE,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,WAAW,IAAI,eAAe,CAAC,KAAK,EAAE;YAC/C,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC7B,IAAI,WAAW,CAAC,QAAQ,EAAE;oBACxB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACzC;qBAAM;oBACL,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACnC;aACF;iBAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,WAAW,EAAE;gBAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzE,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,WAAW,IAAI,eAAe,CAAC,KAAK,EAAE;YAC/C,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC7B,IAAI,WAAW,CAAC,QAAQ,EAAE;oBACxB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;iBACtD;gBACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC5C;iBAAM,IAAI,WAAW,CAAC,WAAW,EAAE;gBAClC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC1D;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAY,EAAE,IAAY,EAAE,QAAiB;QACzE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE3C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YACzB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC,QAAQ,EAAE;oBACb,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAClB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBACzC;oBACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBACnC;gBACD,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;iBAChD;gBACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACtC;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE;gBAC5B,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC/D;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,iBAAiB;QACnD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;YAClC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACxD;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YACzB,IAAI,KAAK,CAAC,WAAW,EAAE;gBACrB,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;aACzC;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACrC;iBAAM;gBACL,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B;SACF;QACD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,SAAS;IACT,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,iDAAiD,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,iDAAiD,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrI,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,UAAmB;QAClD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,qBAAqB,GACzB;YACE,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,WAAW;SACtB,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gDAAgD,EAAE,qBAAqB,CAAC,CAAC;QACjI,yCAAyC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,CAAC;QAC1E,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,iDAAiD,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChI,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAY;QACzC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAClD,CAAC;CACF;AA/KD,oDA+KC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class PartialViewApiHelper {\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/partial-view/' + 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/partial-view/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async create(name: string, content: string, parentPath?: string) {\n const parentValue = parentPath ? {'path': parentPath} : null;\n const partialViewData = {\n 'name': name,\n 'parent': parentValue,\n 'content': content\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);\n // Returns the path of the created partialView\n const partialViewPath = response.headers().location.split(\"/\").pop() as string;\n return decodeURIComponent(partialViewPath);\n }\n\n async updateContent(path: string, content: string) {\n const contentData = {\n 'content': content\n }\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/'+ encodeURIComponent(path), contentData);\n }\n\n async updateName(path: string, name: string) {\n const renameData = {\n 'name': name\n }\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/'+ encodeURIComponent(path) + '/rename', renameData);\n // Returns the path of the renamed partialView\n const partialViewPath = response.headers().location.split(\"/\").pop() as string;\n return decodeURIComponent(partialViewPath);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async getChildren(path: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/partial-view/children?parentPath=${path}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');\n }\n\n async getByName(name: string) {\n const rootPartialView = await this.getAllAtRoot();\n const jsonPartialView = await rootPartialView.json();\n\n for (const partialView of jsonPartialView.items) {\n if (partialView.name === name) {\n if (partialView.isFolder) {\n return this.getFolder(partialView.path);\n } else {\n return this.get(partialView.path);\n }\n } else if (partialView.isFolder && partialView.hasChildren) {\n const result = await this.recurseChildren(name, partialView.path, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootPartialView = await this.getAllAtRoot();\n const jsonPartialView = await rootPartialView.json();\n\n for (const partialView of jsonPartialView.items) {\n if (partialView.name === name) {\n if (partialView.isFolder) {\n return await this.recurseDeleteChildren(partialView);\n }\n return await this.delete(partialView.path);\n } else if (partialView.hasChildren) {\n await this.recurseChildren(name, partialView.path, true);\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 } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.path, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(partialViewFolder) {\n if (!partialViewFolder.hasChildren) {\n return await this.deleteFolder(partialViewFolder.path);\n }\n const items = await this.getChildren(partialViewFolder.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(partialViewFolder.path);\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/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/partial-view/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 partialViewFolderData =\n {\n \"name\": name,\n \"parent\": parentValue\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder', partialViewFolderData);\n // Returns the path of the created folder\n const folderPath = response.headers().location.split(\"/\").pop() as string;\n return decodeURIComponent(folderPath);\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));\n }\n\n async createDefaultPartialView(name: string) {\n await this.ensureNameNotExists(name);\n return await this.create(name, \"<h1>Test</h1>\");\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"PartialViewApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewApiHelper.ts"],"names":[],"mappings":";;;AAAA,qEAAgE;AAEhE,MAAa,oBAAqB,SAAQ,+CAAsB;IACpD,YAAY,GAAG,cAAc,CAAC;IAC9B,QAAQ,GAAG,mBAAmB,CAAC;IAEzC,2CAA2C;IAC3C,KAAK,CAAC,iBAAiB,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmB;QACxE,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,MAAM,eAAe,GAAG;YACtB,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,eAAe,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmB;QAC7D,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAY;QACzC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC7D,CAAC;CACF;AAzBD,oDAyBC","sourcesContent":["import {PathBasedTreeApiHelper} from \"./PathBasedTreeApiHelper\";\n\nexport class PartialViewApiHelper extends PathBasedTreeApiHelper {\n protected resourcePath = 'partial-view';\n protected treePath = 'tree/partial-view';\n\n // PartialView-specific create with content\n async createPartialView(name: string, content: string, parentPath?: string) {\n const parentValue = parentPath ? { 'path': parentPath } : null;\n const partialViewData = {\n 'name': name,\n 'parent': parentValue,\n 'content': content\n };\n const response = await this.api.post(this.buildUrl(), partialViewData);\n return this.extractPathFromLocation(response);\n }\n\n // Backward compatible alias\n async create(name: string, content: string, parentPath?: string) {\n return this.createPartialView(name, content, parentPath);\n }\n\n async createDefaultPartialView(name: string) {\n await this.ensureNameNotExists(name);\n return await this.createPartialView(name, \"<h1>Test</h1>\");\n }\n}"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PartialViewUiHelper = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
4
5
|
const UiBaseLocators_1 = require("./UiBaseLocators");
|
|
5
|
-
const ConstantHelper_1 = require("./ConstantHelper");
|
|
6
6
|
class PartialViewUiHelper extends UiBaseLocators_1.UiBaseLocators {
|
|
7
7
|
newEmptyPartialViewBtn;
|
|
8
8
|
newPartialViewFromSnippetBtn;
|
|
@@ -29,39 +29,42 @@ class PartialViewUiHelper extends UiBaseLocators_1.UiBaseLocators {
|
|
|
29
29
|
await this.openCaretButtonForName('Partial Views');
|
|
30
30
|
}
|
|
31
31
|
async waitForPartialViewToBeCreated() {
|
|
32
|
-
await this.waitForLoadState();
|
|
32
|
+
await this.page.waitForLoadState();
|
|
33
33
|
}
|
|
34
34
|
async waitForPartialViewToBeDeleted() {
|
|
35
|
-
await this.waitForLoadState();
|
|
35
|
+
await this.page.waitForLoadState();
|
|
36
36
|
}
|
|
37
37
|
async waitForPartialViewToBeRenamed() {
|
|
38
|
-
await this.waitForLoadState();
|
|
38
|
+
await this.page.waitForLoadState();
|
|
39
39
|
}
|
|
40
40
|
async clickNewEmptyPartialViewButton() {
|
|
41
|
-
await this.click(
|
|
41
|
+
await this.newEmptyPartialViewBtn.click();
|
|
42
42
|
}
|
|
43
43
|
async clickNewPartialViewFromSnippetButton() {
|
|
44
|
-
await this.click(
|
|
44
|
+
await this.newPartialViewFromSnippetBtn.click();
|
|
45
45
|
}
|
|
46
46
|
async enterPartialViewName(partialViewName) {
|
|
47
|
-
await
|
|
48
|
-
await this.
|
|
47
|
+
await (0, test_1.expect)(this.enterAName).toBeVisible();
|
|
48
|
+
await this.enterAName.click();
|
|
49
|
+
await this.enterAName.clear();
|
|
50
|
+
await this.enterAName.fill(partialViewName);
|
|
51
|
+
await (0, test_1.expect)(this.enterAName).toHaveValue(partialViewName);
|
|
49
52
|
}
|
|
50
53
|
async enterPartialViewContent(partialViewContent) {
|
|
51
54
|
// The waits in this method is currently needed as the test will fail with expects
|
|
52
55
|
await this.waitUntilPartialViewLoaderIsNoLongerVisible();
|
|
53
56
|
await this.enterMonacoEditorValue(partialViewContent);
|
|
54
57
|
// We need this wait, to be sure that the partial view content is loaded.
|
|
55
|
-
await this.page.waitForTimeout(
|
|
58
|
+
await this.page.waitForTimeout(200);
|
|
56
59
|
}
|
|
57
60
|
async openPartialViewAtRoot(partialViewName) {
|
|
58
61
|
await this.reloadPartialViewTree();
|
|
59
|
-
await this.
|
|
60
|
-
await
|
|
62
|
+
await this.page.locator('uui-menu-item[label="' + partialViewName + '"]').click();
|
|
63
|
+
await (0, test_1.expect)(this.enterAName).toBeVisible();
|
|
61
64
|
}
|
|
62
65
|
async createPartialViewFolder(folderName) {
|
|
63
66
|
await this.clickCreateOptionsActionMenuOption();
|
|
64
|
-
await this.click(
|
|
67
|
+
await this.newFolderThreeDots.click();
|
|
65
68
|
await this.enterFolderName(folderName);
|
|
66
69
|
await this.clickConfirmCreateFolderButton();
|
|
67
70
|
}
|
|
@@ -69,13 +72,13 @@ class PartialViewUiHelper extends UiBaseLocators_1.UiBaseLocators {
|
|
|
69
72
|
await this.reloadTree('Partial Views');
|
|
70
73
|
}
|
|
71
74
|
async waitUntilPartialViewLoaderIsNoLongerVisible() {
|
|
72
|
-
await
|
|
75
|
+
await (0, test_1.expect)(this.partialViewUiLoader).toBeVisible({ visible: false });
|
|
73
76
|
}
|
|
74
77
|
async isPartialViewRootTreeItemVisible(partialView, isVisible = true, toReload = true) {
|
|
75
78
|
if (toReload) {
|
|
76
79
|
await this.reloadPartialViewTree();
|
|
77
80
|
}
|
|
78
|
-
return
|
|
81
|
+
return (0, test_1.expect)(this.partialViewTree.getByText(partialView, { exact: true })).toBeVisible({ visible: isVisible });
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
84
|
exports.PartialViewUiHelper = PartialViewUiHelper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartialViewUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewUiHelper.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"PartialViewUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class PartialViewUiHelper extends UiBaseLocators {\n private readonly newEmptyPartialViewBtn: Locator;\n private readonly newPartialViewFromSnippetBtn: Locator;\n private readonly partialViewTree: Locator;\n private readonly partialViewUiLoader: Locator;\n private readonly newFolderThreeDots: Locator;\n private readonly partialViewCreateModal: Locator;\n\n constructor(page: Page) {\n super(page);\n this.partialViewCreateModal = page.locator('umb-partial-view-create-options-modal');\n this.newEmptyPartialViewBtn = this.partialViewCreateModal.locator('uui-menu-item', {hasText: 'Empty partial view'});\n this.newPartialViewFromSnippetBtn = this.partialViewCreateModal.locator('uui-menu-item', {hasText: 'Partial view from snippet'});\n this.partialViewTree = page.locator('umb-tree[alias=\"Umb.Tree.PartialView\"]');\n this.partialViewUiLoader = page.locator('uui-loader');\n this.newFolderThreeDots = this.partialViewCreateModal.locator('uui-menu-item', {hasText: 'Folder'});\n }\n\n async clickActionsMenuForPartialView(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForPartialView('Partial Views');\n }\n\n async clickRootFolderCaretButton() {\n await this.openCaretButtonForName('Partial Views');\n }\n\n async waitForPartialViewToBeCreated() {\n await this.page.waitForLoadState();\n }\n\n async waitForPartialViewToBeDeleted() {\n await this.page.waitForLoadState();\n }\n\n async waitForPartialViewToBeRenamed() {\n await this.page.waitForLoadState();\n }\n \n async clickNewEmptyPartialViewButton() {\n await this.newEmptyPartialViewBtn.click();\n }\n\n async clickNewPartialViewFromSnippetButton() {\n await this.newPartialViewFromSnippetBtn.click();\n }\n\n async enterPartialViewName(partialViewName: string) {\n await expect(this.enterAName).toBeVisible();\n await this.enterAName.click();\n await this.enterAName.clear();\n await this.enterAName.fill(partialViewName);\n await expect(this.enterAName).toHaveValue(partialViewName);\n }\n\n async enterPartialViewContent(partialViewContent: string) {\n // The waits in this method is currently needed as the test will fail with expects\n await this.waitUntilPartialViewLoaderIsNoLongerVisible();\n await this.enterMonacoEditorValue(partialViewContent);\n // We need this wait, to be sure that the partial view content is loaded.\n await this.page.waitForTimeout(200);\n }\n\n async openPartialViewAtRoot(partialViewName: string) {\n await this.reloadPartialViewTree();\n await this.page.locator('uui-menu-item[label=\"' + partialViewName +'\"]').click();\n await expect(this.enterAName).toBeVisible();\n }\n\n async createPartialViewFolder(folderName: string) {\n await this.clickCreateOptionsActionMenuOption();\n await this.newFolderThreeDots.click();\n await this.enterFolderName(folderName);\n await this.clickConfirmCreateFolderButton();\n }\n\n async reloadPartialViewTree() {\n await this.reloadTree('Partial Views');\n }\n\n async waitUntilPartialViewLoaderIsNoLongerVisible() {\n await expect(this.partialViewUiLoader).toBeVisible({visible: false});\n }\n\n async isPartialViewRootTreeItemVisible(partialView: string, isVisible: boolean = true, toReload: boolean = true) {\n if (toReload) {\n await this.reloadPartialViewTree();\n }\n return expect(this.partialViewTree.getByText(partialView, {exact: true})).toBeVisible({visible: isVisible});\n }\n}"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ApiHelpers } from "./ApiHelpers";
|
|
2
|
+
/**
|
|
3
|
+
* Base class for path-based tree resources like Script, Stylesheet, PartialView.
|
|
4
|
+
* These resources use `path` as their key instead of `id`.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class PathBasedTreeApiHelper {
|
|
7
|
+
api: ApiHelpers;
|
|
8
|
+
protected abstract resourcePath: string;
|
|
9
|
+
protected abstract treePath: string;
|
|
10
|
+
constructor(api: ApiHelpers);
|
|
11
|
+
protected buildUrl(path?: string): string;
|
|
12
|
+
protected buildTreeUrl(path?: string): string;
|
|
13
|
+
protected extractPathFromLocation(response: any): string;
|
|
14
|
+
protected extractFolderPathFromLocation(response: any): string;
|
|
15
|
+
get(path: string): Promise<any>;
|
|
16
|
+
doesExist(path: string): Promise<boolean>;
|
|
17
|
+
delete(path: string): Promise<any>;
|
|
18
|
+
updateContent(path: string, newContent: string): Promise<any>;
|
|
19
|
+
updateName(path: string, newName: string): Promise<string | undefined>;
|
|
20
|
+
getAllAtRoot(): Promise<any>;
|
|
21
|
+
getChildren(path: string): Promise<any[]>;
|
|
22
|
+
getItems(paths: string[]): Promise<any>;
|
|
23
|
+
doesNameExist(name: string): Promise<any>;
|
|
24
|
+
getByName(name: string): Promise<any>;
|
|
25
|
+
ensureNameNotExists(name: string): Promise<any>;
|
|
26
|
+
protected recurseChildren(name: string, path: string, toDelete: boolean): Promise<any>;
|
|
27
|
+
protected recurseDeleteChildren(folder: any): Promise<any>;
|
|
28
|
+
getFolder(path: string): Promise<any>;
|
|
29
|
+
doesFolderExist(path: string): Promise<boolean>;
|
|
30
|
+
createFolder(name: string, parentPath?: string): Promise<string | undefined>;
|
|
31
|
+
deleteFolder(path: string): Promise<any>;
|
|
32
|
+
}
|