@umbraco/playwright-testhelpers 2.0.0-beta.3 → 2.0.0-beta.31
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/ApiHelpers.d.ts +20 -4
- package/dist/lib/helpers/ApiHelpers.js +28 -4
- package/dist/lib/helpers/ApiHelpers.js.map +1 -1
- package/dist/lib/helpers/ConstantHelper.d.ts +11 -0
- package/dist/lib/helpers/ConstantHelper.js +16 -0
- package/dist/lib/helpers/ConstantHelper.js.map +1 -0
- package/dist/lib/helpers/DataTypeApiHelper.d.ts +14 -14
- package/dist/lib/helpers/DataTypeApiHelper.js +114 -133
- package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/DataTypeUiHelper.d.ts +140 -0
- package/dist/lib/helpers/DataTypeUiHelper.js +439 -0
- package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -0
- package/dist/lib/helpers/DictionaryApiHelper.d.ts +12 -8
- package/dist/lib/helpers/DictionaryApiHelper.js +104 -66
- package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
- package/dist/lib/helpers/DictionaryUiHelper.d.ts +31 -0
- package/dist/lib/helpers/DictionaryUiHelper.js +92 -0
- package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -0
- package/dist/lib/helpers/DocumentApiHelper.d.ts +2 -0
- package/dist/lib/helpers/DocumentApiHelper.js +17 -0
- package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +25 -0
- package/dist/lib/helpers/DocumentTypeApiHelper.js +223 -0
- package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -0
- package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +23 -0
- package/dist/lib/helpers/DocumentTypeUiHelper.js +62 -0
- package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -0
- package/dist/lib/helpers/ExamineManagementUiHelper.d.ts +15 -0
- package/dist/lib/helpers/ExamineManagementUiHelper.js +38 -0
- package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -0
- package/dist/lib/helpers/HealthCheckApiHelper.d.ts +13 -0
- package/dist/lib/helpers/HealthCheckApiHelper.js +47 -0
- package/dist/lib/helpers/HealthCheckApiHelper.js.map +1 -0
- package/dist/lib/helpers/HealthCheckUiHelper.d.ts +23 -0
- package/dist/lib/helpers/HealthCheckUiHelper.js +59 -0
- package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -0
- package/dist/lib/helpers/IndexerApiHelper.d.ts +7 -0
- package/dist/lib/helpers/IndexerApiHelper.js +19 -0
- package/dist/lib/helpers/IndexerApiHelper.js.map +1 -0
- package/dist/lib/helpers/LanguageApiHelper.d.ts +8 -4
- package/dist/lib/helpers/LanguageApiHelper.js +46 -26
- package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
- package/dist/lib/helpers/LanguageUiHelper.d.ts +23 -0
- package/dist/lib/helpers/LanguageUiHelper.js +64 -0
- package/dist/lib/helpers/LanguageUiHelper.js.map +1 -0
- package/dist/lib/helpers/LogViewerUiHelper.d.ts +37 -0
- package/dist/lib/helpers/LogViewerUiHelper.js +102 -0
- package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -0
- package/dist/lib/helpers/LoginUiHelper.d.ts +11 -0
- package/dist/lib/helpers/LoginUiHelper.js +30 -0
- package/dist/lib/helpers/LoginUiHelper.js.map +1 -0
- package/dist/lib/helpers/MediaApiHelper.d.ts +7 -0
- package/dist/lib/helpers/MediaApiHelper.js +28 -0
- package/dist/lib/helpers/MediaApiHelper.js.map +1 -0
- package/dist/lib/helpers/MediaTypeApiHelper.d.ts +22 -0
- package/dist/lib/helpers/MediaTypeApiHelper.js +194 -0
- package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -0
- package/dist/lib/helpers/MediaTypeUiHelper.d.ts +15 -0
- package/dist/lib/helpers/MediaTypeUiHelper.js +39 -0
- package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -0
- package/dist/lib/helpers/ModelsBuilderApiHelper.d.ts +6 -0
- package/dist/lib/helpers/ModelsBuilderApiHelper.js +15 -0
- package/dist/lib/helpers/ModelsBuilderApiHelper.js.map +1 -0
- package/dist/lib/helpers/ModelsBuilderUiHelper.d.ts +11 -0
- package/dist/lib/helpers/ModelsBuilderUiHelper.js +27 -0
- package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -0
- package/dist/lib/helpers/ObjectTypesApiHelper.d.ts +7 -0
- package/dist/lib/helpers/ObjectTypesApiHelper.js +25 -0
- package/dist/lib/helpers/ObjectTypesApiHelper.js.map +1 -0
- package/dist/lib/helpers/PackageApiHelper.d.ts +3 -2
- package/dist/lib/helpers/PackageApiHelper.js +6 -3
- package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
- package/dist/lib/helpers/PackageUiHelper.d.ts +49 -0
- package/dist/lib/helpers/PackageUiHelper.js +134 -0
- package/dist/lib/helpers/PackageUiHelper.js.map +1 -0
- package/dist/lib/helpers/PartialViewApiHelper.d.ts +14 -10
- package/dist/lib/helpers/PartialViewApiHelper.js +124 -98
- package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
- package/dist/lib/helpers/PartialViewUiHelper.d.ts +19 -0
- package/dist/lib/helpers/PartialViewUiHelper.js +57 -0
- package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -0
- package/dist/lib/helpers/ProfilingUiHelper.d.ts +11 -0
- package/dist/lib/helpers/ProfilingUiHelper.js +27 -0
- package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -0
- package/dist/lib/helpers/PublishedCacheApiHelper.d.ts +6 -0
- package/dist/lib/helpers/PublishedCacheApiHelper.js +15 -0
- package/dist/lib/helpers/PublishedCacheApiHelper.js.map +1 -0
- package/dist/lib/helpers/PublishedStatusUiHelper.d.ts +19 -0
- package/dist/lib/helpers/PublishedStatusUiHelper.js +47 -0
- package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -0
- package/dist/lib/helpers/RelationTypeApiHelper.d.ts +15 -0
- package/dist/lib/helpers/{RelationType.js → RelationTypeApiHelper.js} +45 -58
- package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -0
- package/dist/lib/helpers/RelationTypeUiHelper.d.ts +21 -0
- package/dist/lib/helpers/RelationTypeUiHelper.js +55 -0
- package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -0
- package/dist/lib/helpers/ScriptApiHelper.d.ts +15 -10
- package/dist/lib/helpers/ScriptApiHelper.js +144 -97
- package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
- package/dist/lib/helpers/ScriptUiHelper.d.ts +16 -0
- package/dist/lib/helpers/ScriptUiHelper.js +51 -0
- package/dist/lib/helpers/ScriptUiHelper.js.map +1 -0
- package/dist/lib/helpers/StylesheetApiHelper.d.ts +15 -10
- package/dist/lib/helpers/StylesheetApiHelper.js +139 -103
- package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
- package/dist/lib/helpers/StylesheetUiHelper.d.ts +22 -0
- package/dist/lib/helpers/StylesheetUiHelper.js +68 -0
- package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -0
- package/dist/lib/helpers/TelemetryDataUiHelper.d.ts +10 -0
- package/dist/lib/helpers/TelemetryDataUiHelper.js +25 -0
- package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -0
- package/dist/lib/helpers/TemplateApiHelper.d.ts +7 -5
- package/dist/lib/helpers/TemplateApiHelper.js +75 -51
- package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
- package/dist/lib/helpers/TemplateUiHelper.d.ts +21 -0
- package/dist/lib/helpers/TemplateUiHelper.js +66 -0
- package/dist/lib/helpers/TemplateUiHelper.js.map +1 -0
- package/dist/lib/helpers/TemporaryFileApiHelper.d.ts +1 -1
- package/dist/lib/helpers/TemporaryFileApiHelper.js +6 -10
- package/dist/lib/helpers/TemporaryFileApiHelper.js.map +1 -1
- package/dist/lib/helpers/UiBaseLocators.d.ts +163 -0
- package/dist/lib/helpers/UiBaseLocators.js +487 -0
- package/dist/lib/helpers/UiBaseLocators.js.map +1 -0
- package/dist/lib/helpers/UiHelpers.d.ts +48 -6
- package/dist/lib/helpers/UiHelpers.js +75 -16
- package/dist/lib/helpers/UiHelpers.js.map +1 -1
- package/dist/lib/helpers/UserApiHelper.d.ts +7 -3
- package/dist/lib/helpers/UserApiHelper.js +35 -13
- package/dist/lib/helpers/UserApiHelper.js.map +1 -1
- package/dist/lib/helpers/UserGroupApiHelper.d.ts +5 -3
- package/dist/lib/helpers/UserGroupApiHelper.js +20 -19
- package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
- package/dist/lib/helpers/UserGroupUiHelper.d.ts +20 -0
- package/dist/lib/helpers/UserGroupUiHelper.js +56 -0
- package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -0
- package/dist/lib/helpers/UserUiHelper.d.ts +41 -0
- package/dist/lib/helpers/UserUiHelper.js +116 -0
- package/dist/lib/helpers/UserUiHelper.js.map +1 -0
- package/dist/lib/helpers/WelcomeDashboardUiHelper.d.ts +9 -0
- package/dist/lib/helpers/WelcomeDashboardUiHelper.js +22 -0
- package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -0
- package/dist/lib/helpers/index.d.ts +1 -0
- package/dist/lib/helpers/index.js +3 -1
- package/dist/lib/helpers/index.js.map +1 -1
- package/dist/lib/helpers/testExtension.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/umbraco.config.js +1 -1
- package/dist/umbraco.config.js.map +1 -1
- package/package.json +9 -7
- package/dist/lib/helpers/RelationType.d.ts +0 -15
- package/dist/lib/helpers/RelationType.js.map +0 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PackageUiHelper = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
const UiBaseLocators_1 = require("./UiBaseLocators");
|
|
6
|
+
const umbraco_config_1 = require("../../umbraco.config");
|
|
7
|
+
class PackageUiHelper extends UiBaseLocators_1.UiBaseLocators {
|
|
8
|
+
createdTabBtn;
|
|
9
|
+
marketPlaceIFrame;
|
|
10
|
+
installedTabBtn;
|
|
11
|
+
noPackagesHaveBeenInstalledTxt;
|
|
12
|
+
packagesTabBtn;
|
|
13
|
+
createPackageBtn;
|
|
14
|
+
packageNameTxt;
|
|
15
|
+
saveChangesToPackageBtn;
|
|
16
|
+
addContentToPackageBtn;
|
|
17
|
+
addMediaToPackageBtn;
|
|
18
|
+
addDocumentTypeToPackageBtn;
|
|
19
|
+
addMediaTypeToPackageBtn;
|
|
20
|
+
addLanguageToPackageBtn;
|
|
21
|
+
addDictionaryToPackageBtn;
|
|
22
|
+
addDataTypesToPackageBtn;
|
|
23
|
+
addTemplatesToPackagesBtn;
|
|
24
|
+
addPartialViewToPackageBtn;
|
|
25
|
+
addScriptToPackageBtn;
|
|
26
|
+
addStylesheetToPackageBtn;
|
|
27
|
+
downloadPackageBtn;
|
|
28
|
+
constructor(page) {
|
|
29
|
+
super(page);
|
|
30
|
+
// Packages
|
|
31
|
+
this.packagesTabBtn = page.locator('#views').getByRole("tab", { name: 'Packages' });
|
|
32
|
+
this.marketPlaceIFrame = page.frameLocator('iframe[title="Umbraco Marketplace"]').locator('umb-market-app');
|
|
33
|
+
// Installed
|
|
34
|
+
this.installedTabBtn = page.getByRole("tab", { name: 'Installed' });
|
|
35
|
+
this.noPackagesHaveBeenInstalledTxt = page.getByText('No packages have been installed');
|
|
36
|
+
// Created
|
|
37
|
+
this.createdTabBtn = page.getByRole("tab", { name: 'Created' });
|
|
38
|
+
this.createPackageBtn = page.getByLabel("Create package");
|
|
39
|
+
this.packageNameTxt = page.getByLabel('Name of the package');
|
|
40
|
+
this.saveChangesToPackageBtn = page.getByLabel('Save changes to package');
|
|
41
|
+
this.addContentToPackageBtn = page.getByLabel('Add');
|
|
42
|
+
this.addMediaToPackageBtn = page.locator('umb-input-media').getByLabel('open');
|
|
43
|
+
this.addDocumentTypeToPackageBtn = page.locator('umb-input-document-types-picker').getByLabel('open');
|
|
44
|
+
this.addMediaTypeToPackageBtn = page.locator('umb-input-media-types-picker').getByLabel('open');
|
|
45
|
+
this.addLanguageToPackageBtn = page.locator('umb-input-language-picker').getByLabel('open');
|
|
46
|
+
this.addDictionaryToPackageBtn = page.locator('umb-input-dictionary-picker').getByLabel('open');
|
|
47
|
+
this.addDataTypesToPackageBtn = page.locator('umb-data-type-picker').getByLabel('open');
|
|
48
|
+
this.addTemplatesToPackagesBtn = page.locator('umb-template-picker').getByLabel('open');
|
|
49
|
+
this.addPartialViewToPackageBtn = page.locator('umb-partial-views-picker').getByLabel('open');
|
|
50
|
+
this.addScriptToPackageBtn = page.locator('umb-script-picker').getByLabel('open');
|
|
51
|
+
this.addStylesheetToPackageBtn = page.locator('umb-stylesheet-picker').getByLabel('open');
|
|
52
|
+
this.downloadPackageBtn = page.getByLabel('Download package');
|
|
53
|
+
}
|
|
54
|
+
async isTextNoPackagesHaveBeenInstalledVisible(isVisible = true) {
|
|
55
|
+
return await (0, test_1.expect)(this.noPackagesHaveBeenInstalledTxt).toBeVisible({ visible: isVisible });
|
|
56
|
+
}
|
|
57
|
+
async clickCreatedTab() {
|
|
58
|
+
await this.createdTabBtn.click({ force: true });
|
|
59
|
+
}
|
|
60
|
+
async clickInstalledTab() {
|
|
61
|
+
await this.installedTabBtn.click({ force: true });
|
|
62
|
+
}
|
|
63
|
+
async clickPackagesTab() {
|
|
64
|
+
await this.packagesTabBtn.click({ force: true });
|
|
65
|
+
}
|
|
66
|
+
async clickChooseBtn() {
|
|
67
|
+
await this.chooseModalBtn.click();
|
|
68
|
+
}
|
|
69
|
+
async isMarketPlaceIFrameVisible(isVisible = true) {
|
|
70
|
+
return await (0, test_1.expect)(this.marketPlaceIFrame).toBeVisible({ visible: isVisible });
|
|
71
|
+
}
|
|
72
|
+
async clickCreatePackageButton() {
|
|
73
|
+
await this.createPackageBtn.click();
|
|
74
|
+
}
|
|
75
|
+
async enterPackageName(packageName) {
|
|
76
|
+
await this.packageNameTxt.clear();
|
|
77
|
+
await this.packageNameTxt.fill(packageName);
|
|
78
|
+
}
|
|
79
|
+
async isPackageNameVisible(packageName, isVisible = true) {
|
|
80
|
+
return await (0, test_1.expect)(this.page.getByRole('button', { name: packageName })).toBeVisible({ visible: isVisible });
|
|
81
|
+
}
|
|
82
|
+
async clickExistingPackageName(packageName) {
|
|
83
|
+
await this.page.getByRole('button', { name: packageName }).click();
|
|
84
|
+
}
|
|
85
|
+
async clickDeleteButtonForPackageName(packageName) {
|
|
86
|
+
await this.page.locator('uui-ref-node-package', { hasText: packageName }).getByLabel('Delete package').click({ force: true });
|
|
87
|
+
}
|
|
88
|
+
async clickSaveChangesToPackageButton() {
|
|
89
|
+
await this.saveChangesToPackageBtn.click();
|
|
90
|
+
}
|
|
91
|
+
async clickAddContentToPackageButton() {
|
|
92
|
+
await this.addContentToPackageBtn.click({ force: true });
|
|
93
|
+
}
|
|
94
|
+
async clickAddMediaToPackageButton() {
|
|
95
|
+
await this.addMediaToPackageBtn.click({ force: true });
|
|
96
|
+
}
|
|
97
|
+
async clickAddDocumentTypeToPackageButton() {
|
|
98
|
+
await this.addDocumentTypeToPackageBtn.click({ force: true });
|
|
99
|
+
}
|
|
100
|
+
async clickAddMediaTypeToPackageButton() {
|
|
101
|
+
await this.addMediaTypeToPackageBtn.click({ force: true });
|
|
102
|
+
}
|
|
103
|
+
async clickAddLanguageToPackageButton() {
|
|
104
|
+
await this.addLanguageToPackageBtn.click({ force: true });
|
|
105
|
+
}
|
|
106
|
+
async clickAddDictionaryToPackageButton() {
|
|
107
|
+
await this.addDictionaryToPackageBtn.click({ force: true });
|
|
108
|
+
}
|
|
109
|
+
async clickAddDataTypesToPackageButton() {
|
|
110
|
+
await this.addDataTypesToPackageBtn.click({ force: true });
|
|
111
|
+
}
|
|
112
|
+
async clickAddTemplatesToPackageButton() {
|
|
113
|
+
await this.addTemplatesToPackagesBtn.click({ force: true });
|
|
114
|
+
}
|
|
115
|
+
async clickAddPartialViewToPackageButton() {
|
|
116
|
+
await this.addPartialViewToPackageBtn.click({ force: true });
|
|
117
|
+
}
|
|
118
|
+
async clickAddScriptToPackageButton() {
|
|
119
|
+
await this.addScriptToPackageBtn.click({ force: true });
|
|
120
|
+
}
|
|
121
|
+
async clickAddStylesheetToPackageButton() {
|
|
122
|
+
await this.addStylesheetToPackageBtn.click({ force: true });
|
|
123
|
+
}
|
|
124
|
+
// Downloads the package and converts it to a string
|
|
125
|
+
async downloadPackage(packageId) {
|
|
126
|
+
const responsePromise = this.page.waitForResponse(umbraco_config_1.umbracoConfig.environment.baseUrl + '/umbraco/management/api/v1/package/created/' + packageId + '/download');
|
|
127
|
+
await this.downloadPackageBtn.click({ force: true });
|
|
128
|
+
const response = await responsePromise;
|
|
129
|
+
const body = await response.body();
|
|
130
|
+
return body.toString().trim();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.PackageUiHelper = PackageUiHelper;
|
|
134
|
+
//# sourceMappingURL=PackageUiHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 noPackagesHaveBeenInstalledTxt: 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\n constructor(page: Page) {\n super(page);\n // Packages\n this.packagesTabBtn = page.locator('#views').getByRole(\"tab\", {name: 'Packages'});\n this.marketPlaceIFrame = page.frameLocator('iframe[title=\"Umbraco Marketplace\"]').locator('umb-market-app');\n // Installed\n this.installedTabBtn = page.getByRole(\"tab\", {name: 'Installed'});\n this.noPackagesHaveBeenInstalledTxt = page.getByText('No packages have been installed');\n // Created\n this.createdTabBtn = page.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.getByLabel('Add');\n this.addMediaToPackageBtn = page.locator('umb-input-media').getByLabel('open');\n this.addDocumentTypeToPackageBtn = page.locator('umb-input-document-types-picker').getByLabel('open');\n this.addMediaTypeToPackageBtn = page.locator('umb-input-media-types-picker').getByLabel('open');\n this.addLanguageToPackageBtn = page.locator('umb-input-language-picker').getByLabel('open');\n this.addDictionaryToPackageBtn = page.locator('umb-input-dictionary-picker').getByLabel('open');\n this.addDataTypesToPackageBtn = page.locator('umb-data-type-picker').getByLabel('open');\n this.addTemplatesToPackagesBtn = page.locator('umb-template-picker').getByLabel('open');\n this.addPartialViewToPackageBtn = page.locator('umb-partial-views-picker').getByLabel('open');\n this.addScriptToPackageBtn = page.locator('umb-script-picker').getByLabel('open');\n this.addStylesheetToPackageBtn = page.locator('umb-stylesheet-picker').getByLabel('open');\n this.downloadPackageBtn = page.getByLabel('Download package');\n }\n\n async isTextNoPackagesHaveBeenInstalledVisible(isVisible = true) {\n return await expect(this.noPackagesHaveBeenInstalledTxt).toBeVisible({visible: isVisible});\n }\n\n async clickCreatedTab() {\n await this.createdTabBtn.click({force: true});\n }\n\n async clickInstalledTab() {\n await this.installedTabBtn.click({force: true});\n }\n\n async clickPackagesTab() {\n await this.packagesTabBtn.click({force: true});\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 }\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 }\n\n async clickDeleteButtonForPackageName(packageName: string) {\n await this.page.locator('uui-ref-node-package', {hasText: packageName}).getByLabel('Delete package').click({force: true});\n }\n\n async clickSaveChangesToPackageButton() {\n await this.saveChangesToPackageBtn.click();\n }\n\n async clickAddContentToPackageButton() {\n await this.addContentToPackageBtn.click({force: true});\n }\n\n async clickAddMediaToPackageButton() {\n await this.addMediaToPackageBtn.click({force: true});\n }\n\n async clickAddDocumentTypeToPackageButton() {\n await this.addDocumentTypeToPackageBtn.click({force: true});\n }\n\n async clickAddMediaTypeToPackageButton() {\n await this.addMediaTypeToPackageBtn.click({force: true});\n }\n\n async clickAddLanguageToPackageButton() {\n await this.addLanguageToPackageBtn.click({force: true});\n }\n\n async clickAddDictionaryToPackageButton() {\n await this.addDictionaryToPackageBtn.click({force: true});\n }\n\n async clickAddDataTypesToPackageButton() {\n await this.addDataTypesToPackageBtn.click({force: true});\n }\n\n async clickAddTemplatesToPackageButton() {\n await this.addTemplatesToPackagesBtn.click({force: true});\n }\n\n async clickAddPartialViewToPackageButton() {\n await this.addPartialViewToPackageBtn.click({force: true});\n }\n\n async clickAddScriptToPackageButton() {\n await this.addScriptToPackageBtn.click({force: true});\n }\n\n async clickAddStylesheetToPackageButton() {\n await this.addStylesheetToPackageBtn.click({force: true});\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({force: true});\n const response = await responsePromise;\n const body = await response.body();\n return body.toString().trim();\n }\n}"]}
|
|
@@ -2,18 +2,22 @@ import { ApiHelpers } from "./ApiHelpers";
|
|
|
2
2
|
export declare class PartialViewApiHelper {
|
|
3
3
|
api: ApiHelpers;
|
|
4
4
|
constructor(api: ApiHelpers);
|
|
5
|
-
ensureNameNotExistsAtRoot(name: string): Promise<void | import("playwright-core").APIResponse | null>;
|
|
6
|
-
nameExistsAtRoot(name: string): Promise<boolean>;
|
|
7
|
-
exists(path: string): Promise<boolean>;
|
|
8
5
|
get(path: string): Promise<any>;
|
|
9
|
-
|
|
10
|
-
create(name: string, content: string, parentPath?: string): Promise<string
|
|
11
|
-
|
|
6
|
+
doesExist(path: string): Promise<boolean>;
|
|
7
|
+
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>;
|
|
12
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;
|
|
13
18
|
getFolder(path: string): Promise<any>;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
createFolder(name: string, parentPath?: string): Promise<any>;
|
|
19
|
+
doesFolderExist(path: string): Promise<boolean>;
|
|
20
|
+
createFolder(name: string, parentPath?: string): Promise<string>;
|
|
17
21
|
deleteFolder(path: string): Promise<import("playwright-core").APIResponse>;
|
|
18
|
-
|
|
22
|
+
createDefaultPartialView(name: string): Promise<string>;
|
|
19
23
|
}
|
|
@@ -6,131 +6,157 @@ class PartialViewApiHelper {
|
|
|
6
6
|
constructor(api) {
|
|
7
7
|
this.api = api;
|
|
8
8
|
}
|
|
9
|
-
async
|
|
10
|
-
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
async get(path) {
|
|
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) {
|
|
18
|
+
const parentValue = parentPath ? { 'path': parentPath } : null;
|
|
19
|
+
const partialViewData = {
|
|
20
|
+
'name': name,
|
|
21
|
+
'parent': parentValue,
|
|
22
|
+
'content': content
|
|
23
|
+
};
|
|
24
|
+
const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);
|
|
25
|
+
// Returns the path of the created partialView
|
|
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;
|
|
54
|
+
}
|
|
55
|
+
async getAllAtRoot() {
|
|
56
|
+
return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');
|
|
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);
|
|
16
65
|
}
|
|
17
66
|
else {
|
|
18
|
-
|
|
19
|
-
return await this.recurseFolderChildren(sb.path);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);
|
|
23
|
-
}
|
|
67
|
+
return this.get(partialView.path);
|
|
24
68
|
}
|
|
25
69
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const json = await response.json();
|
|
32
|
-
for (const sb of json.items) {
|
|
33
|
-
if (sb.name === name) {
|
|
34
|
-
return true;
|
|
70
|
+
else if (partialView.isFolder && partialView.hasChildren) {
|
|
71
|
+
const result = await this.recurseChildren(name, partialView.path, false);
|
|
72
|
+
if (result) {
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
35
75
|
}
|
|
36
76
|
}
|
|
37
77
|
return false;
|
|
38
78
|
}
|
|
39
|
-
async
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
async getByNameAtRoot(name) {
|
|
48
|
-
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');
|
|
49
|
-
const json = await response.json();
|
|
50
|
-
for (const sb of json.items) {
|
|
51
|
-
if (sb.name === name) {
|
|
52
|
-
if (sb.isFolder === false) {
|
|
53
|
-
const partialView = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + sb.path);
|
|
54
|
-
return await partialView.json();
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
const partialViewFolder = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);
|
|
58
|
-
return await partialViewFolder.json();
|
|
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);
|
|
59
86
|
}
|
|
87
|
+
return await this.delete(partialView.path);
|
|
88
|
+
}
|
|
89
|
+
else if (partialView.hasChildren) {
|
|
90
|
+
await this.recurseChildren(name, partialView.path, true);
|
|
60
91
|
}
|
|
61
92
|
}
|
|
62
93
|
return null;
|
|
63
94
|
}
|
|
64
|
-
async
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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;
|
|
81
115
|
}
|
|
82
|
-
async
|
|
83
|
-
|
|
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);
|
|
84
133
|
}
|
|
85
134
|
// Folder
|
|
86
135
|
async getFolder(path) {
|
|
87
|
-
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder
|
|
136
|
+
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
|
|
88
137
|
return await response.json();
|
|
89
138
|
}
|
|
90
|
-
async
|
|
91
|
-
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder
|
|
139
|
+
async doesFolderExist(path) {
|
|
140
|
+
const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
|
|
92
141
|
return response.status() === 200;
|
|
93
142
|
}
|
|
94
|
-
async
|
|
95
|
-
const
|
|
96
|
-
const json = await response.json();
|
|
97
|
-
if (json !== null) {
|
|
98
|
-
return json;
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
async createFolder(name, parentPath = "") {
|
|
143
|
+
async createFolder(name, parentPath) {
|
|
144
|
+
const parentValue = parentPath ? { 'path': parentPath } : null;
|
|
103
145
|
const partialViewFolderData = {
|
|
104
146
|
"name": name,
|
|
105
|
-
"
|
|
147
|
+
"parent": parentValue
|
|
106
148
|
};
|
|
107
149
|
const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder', partialViewFolderData);
|
|
108
|
-
// Returns the
|
|
109
|
-
const
|
|
110
|
-
return
|
|
150
|
+
// Returns the path of the created folder
|
|
151
|
+
const folderPath = response.headers().location.split("/").pop();
|
|
152
|
+
return decodeURIComponent(folderPath);
|
|
111
153
|
}
|
|
112
154
|
async deleteFolder(path) {
|
|
113
|
-
return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder
|
|
114
|
-
}
|
|
115
|
-
async
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
for (const child of itemsJson.items) {
|
|
119
|
-
if (child.path !== null) {
|
|
120
|
-
if (child.isFolder == true) {
|
|
121
|
-
if (child.hasChildren == true) {
|
|
122
|
-
await this.recurseFolderChildren(child.path);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + child.path);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/?path=' + child.path);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);
|
|
155
|
+
return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
|
|
156
|
+
}
|
|
157
|
+
async createDefaultPartialView(name) {
|
|
158
|
+
await this.ensureNameNotExists(name);
|
|
159
|
+
return await this.create(name, "<h1>Test</h1>");
|
|
134
160
|
}
|
|
135
161
|
}
|
|
136
162
|
exports.PartialViewApiHelper = PartialViewApiHelper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartialViewApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewApiHelper.ts"],"names":[],"mappings":"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","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 ensureNameNotExistsAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.isFolder == false) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + sb.path);\n } else {\n if (sb.hasChildren == true) {\n return await this.recurseFolderChildren(sb.path);\n } else {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);\n }\n }\n }\n }\n return null;\n }\n\n async nameExistsAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n return true;\n }\n }\n return false;\n }\n\n async exists(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);\n return response.status() === 200;\n }\n\n async get(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);\n return await response.json();\n }\n\n async getByNameAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.isFolder === false) {\n const partialView = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + sb.path);\n return await partialView.json();\n } else {\n const partialViewFolder = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);\n return await partialViewFolder.json();\n }\n }\n }\n return null;\n }\n\n async create(name: string, content: string, parentPath: string = \"\") {\n const partialViewData = {\n \"name\": name,\n \"content\": content,\n \"parentPath\": parentPath\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 return response.headers().location.split(\"=\").pop();\n }\n\n async update(partialView) {\n const partialViewData = {\n \"name\": partialView.name,\n \"content\": partialView.content,\n \"existingPath\": partialView.path\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + 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?path=' + path);\n return await response.json();\n }\n\n async folderExists(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);\n return response.status() === 200;\n }\n\n async getFolderChildren(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/children?path=' + path + '&skip=0&take=10000');\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async createFolder(name: string, parentPath = \"\") {\n const partialViewFolderData =\n {\n \"name\": name,\n \"parentPath\": parentPath\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder', partialViewFolderData);\n // Returns the id of the created partialViewFolder\n const json = await response.json();\n return json.path;\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);\n }\n\n async recurseFolderChildren(path: string) {\n const parentPartialView = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/children?path=' + path + '&skip=0&take=10000');\n const itemsJson = await parentPartialView.json();\n\n for (const child of itemsJson.items) {\n if (child.path !== null) {\n if (child.isFolder == true) {\n if (child.hasChildren == true) {\n await this.recurseFolderChildren(child.path);\n } else {\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + child.path);\n }\n } else {\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/?path=' + child.path);\n }\n }\n }\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"PartialViewApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewApiHelper.ts"],"names":[],"mappings":"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","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}"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Page, Locator } from "@playwright/test";
|
|
2
|
+
import { UiBaseLocators } from "./UiBaseLocators";
|
|
3
|
+
export declare class PartialViewUiHelper extends UiBaseLocators {
|
|
4
|
+
private readonly newEmptyPartialViewBtn;
|
|
5
|
+
private readonly newPartialViewFromSnippetBtn;
|
|
6
|
+
private readonly partialViewNameTxt;
|
|
7
|
+
private readonly partialViewTree;
|
|
8
|
+
constructor(page: Page);
|
|
9
|
+
clickActionsMenuForPartialView(name: string): Promise<void>;
|
|
10
|
+
clickActionsMenuAtRoot(): Promise<void>;
|
|
11
|
+
clickRootFolderCaretButton(): Promise<void>;
|
|
12
|
+
clickNewEmptyPartialViewButton(): Promise<void>;
|
|
13
|
+
clickNewPartialViewFromSnippetButton(): Promise<void>;
|
|
14
|
+
enterPartialViewName(partialViewName: string): Promise<void>;
|
|
15
|
+
enterPartialViewContent(partialViewContent: string): Promise<void>;
|
|
16
|
+
openPartialViewAtRoot(partialViewName: string): Promise<void>;
|
|
17
|
+
deletePartialView(): Promise<void>;
|
|
18
|
+
checkItemNameUnderPartialViewTree(name: string): Locator;
|
|
19
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PartialViewUiHelper = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
const UiBaseLocators_1 = require("./UiBaseLocators");
|
|
6
|
+
class PartialViewUiHelper extends UiBaseLocators_1.UiBaseLocators {
|
|
7
|
+
newEmptyPartialViewBtn;
|
|
8
|
+
newPartialViewFromSnippetBtn;
|
|
9
|
+
partialViewNameTxt;
|
|
10
|
+
partialViewTree;
|
|
11
|
+
constructor(page) {
|
|
12
|
+
super(page);
|
|
13
|
+
this.newEmptyPartialViewBtn = page.getByLabel('New empty partial view');
|
|
14
|
+
this.newPartialViewFromSnippetBtn = page.getByLabel('New partial view from snippet...');
|
|
15
|
+
this.partialViewNameTxt = page.getByLabel('Partial view name');
|
|
16
|
+
this.partialViewTree = page.locator("umb-tree[alias='Umb.Tree.PartialView']");
|
|
17
|
+
}
|
|
18
|
+
async clickActionsMenuForPartialView(name) {
|
|
19
|
+
await this.clickActionsMenuForName(name);
|
|
20
|
+
}
|
|
21
|
+
async clickActionsMenuAtRoot() {
|
|
22
|
+
await this.clickActionsMenuForPartialView("Partial Views");
|
|
23
|
+
}
|
|
24
|
+
async clickRootFolderCaretButton() {
|
|
25
|
+
await this.clickCaretButtonForName("Partial Views");
|
|
26
|
+
}
|
|
27
|
+
async clickNewEmptyPartialViewButton() {
|
|
28
|
+
await this.newEmptyPartialViewBtn.click();
|
|
29
|
+
}
|
|
30
|
+
async clickNewPartialViewFromSnippetButton() {
|
|
31
|
+
await this.newPartialViewFromSnippetBtn.click();
|
|
32
|
+
}
|
|
33
|
+
async enterPartialViewName(partialViewName) {
|
|
34
|
+
await (0, test_1.expect)(this.partialViewNameTxt).toBeVisible();
|
|
35
|
+
await this.partialViewNameTxt.click();
|
|
36
|
+
await this.partialViewNameTxt.clear();
|
|
37
|
+
await this.partialViewNameTxt.fill(partialViewName);
|
|
38
|
+
}
|
|
39
|
+
async enterPartialViewContent(partialViewContent) {
|
|
40
|
+
await this.textAreaInputArea.clear();
|
|
41
|
+
await this.textAreaInputArea.fill(partialViewContent);
|
|
42
|
+
}
|
|
43
|
+
async openPartialViewAtRoot(partialViewName) {
|
|
44
|
+
await this.clickRootFolderCaretButton();
|
|
45
|
+
await this.page.getByLabel(partialViewName).click();
|
|
46
|
+
await (0, test_1.expect)(this.partialViewNameTxt).toBeVisible();
|
|
47
|
+
}
|
|
48
|
+
async deletePartialView() {
|
|
49
|
+
await this.clickDeleteThreeDotsButton();
|
|
50
|
+
await this.clickConfirmToDeleteButton();
|
|
51
|
+
}
|
|
52
|
+
checkItemNameUnderPartialViewTree(name) {
|
|
53
|
+
return this.partialViewTree.getByText(name);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.PartialViewUiHelper = PartialViewUiHelper;
|
|
57
|
+
//# sourceMappingURL=PartialViewUiHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartialViewUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAsD;AACtD,qDAAgD;AAEhD,MAAa,mBAAoB,SAAQ,+BAAc;IACpC,sBAAsB,CAAU;IAChC,4BAA4B,CAAU;IACtC,kBAAkB,CAAU;IAC5B,eAAe,CAAU;IAE1C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACxE,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;QACxF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,IAAY;QAC/C,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,MAAM,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,8BAA8B;QAClC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,oCAAoC;QACxC,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,eAAuB;QAChD,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,kBAA0B;QACtD,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,eAAuB;QACjD,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;QACpD,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAiC,CAAC,IAAY;QAC5C,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AA5DD,kDA4DC","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 partialViewNameTxt: Locator;\n private readonly partialViewTree: Locator;\n\n constructor(page: Page) {\n super(page);\n this.newEmptyPartialViewBtn = page.getByLabel('New empty partial view');\n this.newPartialViewFromSnippetBtn = page.getByLabel('New partial view from snippet...');\n this.partialViewNameTxt = page.getByLabel('Partial view name');\n this.partialViewTree = page.locator(\"umb-tree[alias='Umb.Tree.PartialView']\");\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.clickCaretButtonForName(\"Partial Views\");\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.partialViewNameTxt).toBeVisible();\n await this.partialViewNameTxt.click();\n await this.partialViewNameTxt.clear();\n await this.partialViewNameTxt.fill(partialViewName);\n }\n\n async enterPartialViewContent(partialViewContent: string) {\n await this.textAreaInputArea.clear();\n await this.textAreaInputArea.fill(partialViewContent);\n }\n\n async openPartialViewAtRoot(partialViewName: string) {\n await this.clickRootFolderCaretButton();\n await this.page.getByLabel(partialViewName).click();\n await expect(this.partialViewNameTxt).toBeVisible();\n }\n\n async deletePartialView() {\n await this.clickDeleteThreeDotsButton();\n await this.clickConfirmToDeleteButton();\n }\n\n checkItemNameUnderPartialViewTree(name: string){\n return this.partialViewTree.getByText(name);\n }\n}"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { UiBaseLocators } from "./UiBaseLocators";
|
|
3
|
+
export declare class ProfilingUiHelper extends UiBaseLocators {
|
|
4
|
+
private readonly profilingTab;
|
|
5
|
+
private readonly activateProfilerByDefaultSlider;
|
|
6
|
+
private readonly activateProfilerByDefaultCheckbox;
|
|
7
|
+
constructor(page: Page);
|
|
8
|
+
clickProfilingTab(): Promise<void>;
|
|
9
|
+
clickActivateProfilerByDefaultSlider(): Promise<void>;
|
|
10
|
+
isActivateProfilerByDefaultSliderChecked(isChecked: boolean): Promise<void>;
|
|
11
|
+
}
|