Skip to content

Commit 394bbde

Browse files
V15 Added acceptance tests for Tiptap data type (#17675)
* Added tests for Tiptap data type * Removed tests for adding a toolbar item as the drag and drop is not working * Fixed the variable name * Added tests for TinyMCE data type * Added tests for RTE data type * Updated tests for delete toolbar row in Tiptap * Updated tests for rich text editor data type * Updated tests for tiny MCE data type * Updated tests for content with tiny MCE rich text editor * Renamed tests as there are 2 types of rich text editor * Bumped version * Make all data type tests in the pipeline * Updated tests for Tiptap and TinyMCE due to api helper changes * Fixed comments * Update TinyMCE.spec.ts Removed line * Reverted --------- Co-authored-by: Andreas Zerbst <[email protected]>
1 parent 303758d commit 394bbde

File tree

6 files changed

+580
-238
lines changed

6 files changed

+580
-238
lines changed

tests/Umbraco.Tests.AcceptanceTest/package-lock.json

Lines changed: 9 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/Umbraco.Tests.AcceptanceTest/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
"typescript": "^4.8.3"
2121
},
2222
"dependencies": {
23-
"@umbraco/json-models-builders": "^2.0.25",
24-
"@umbraco/playwright-testhelpers": "^15.0.3",
23+
"@umbraco/json-models-builders": "^2.0.26",
24+
"@umbraco/playwright-testhelpers": "^15.0.4",
2525
"camelize": "^1.0.0",
2626
"dotenv": "^16.3.1",
2727
"node-fetch": "^2.6.7"
Lines changed: 13 additions & 225 deletions
Original file line numberDiff line numberDiff line change
@@ -1,235 +1,23 @@
11
import {test} from '@umbraco/playwright-testhelpers';
22
import {expect} from "@playwright/test";
33

4-
const dataTypeName = 'Richtext editor';
5-
let dataTypeDefaultData = null;
6-
let dataTypeData = null;
7-
8-
// Create tests for TinyMCE and TipTap
9-
10-
test.beforeEach(async ({umbracoUi, umbracoApi}) => {
4+
test('tiptap is the default property editor in rich text editor', async ({umbracoApi, umbracoUi}) => {
5+
// Arrange
6+
const dataTypeName = 'Richtext editor';
7+
const tipTapPropertyEditorName = 'Rich Text Editor [Tiptap] Property Editor UI';
8+
const tipTapAlias = 'Umbraco.RichText';
9+
const tipTapUiAlias = 'Umb.PropertyEditorUi.Tiptap';
1110
await umbracoUi.goToBackOffice();
1211
await umbracoUi.dataType.goToSettingsTreeItem('Data Types');
13-
dataTypeDefaultData = await umbracoApi.dataType.getByName(dataTypeName);
14-
});
15-
16-
test.afterEach(async ({umbracoApi}) => {
17-
if (dataTypeDefaultData !== null) {
18-
await umbracoApi.dataType.update(dataTypeDefaultData.id, dataTypeDefaultData);
19-
}
20-
});
21-
22-
test('can enable ignore user start nodes', async ({umbracoApi, umbracoUi}) => {
23-
// Arrange
24-
const expectedDataTypeValues = {
25-
"alias": "ignoreUserStartNodes",
26-
"value": true
27-
};
28-
await umbracoUi.dataType.goToDataType(dataTypeName);
29-
30-
// Act
31-
await umbracoUi.dataType.clickIgnoreUserStartNodesSlider();
32-
await umbracoUi.dataType.clickSaveButton();
33-
34-
// Assert
35-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
36-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
37-
});
38-
39-
// TODO: Remove skip when the front-end is ready. Currently it is impossible to uncheck all the toolbar options.
40-
test.skip('can enable all toolbar options', async ({umbracoApi, umbracoUi}) => {
41-
// Arrange
42-
const toolbarValues: string[] = ["undo", "redo", "cut", "copy"];
43-
const expectedDataTypeValues = [
44-
{
45-
"alias": "toolbar",
46-
"value": toolbarValues
47-
}
48-
];
49-
50-
// Remove all existing values
51-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
52-
dataTypeData.values = [];
53-
await umbracoApi.dataType.update(dataTypeData.id, dataTypeData);
54-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
55-
await umbracoUi.dataType.goToDataType(dataTypeName);
56-
57-
// Act
58-
await umbracoUi.dataType.pickTheToolbarOptionByValue(toolbarValues);
59-
await umbracoUi.dataType.clickSaveButton();
60-
61-
// Assert
62-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
63-
expect(dataTypeData.values).toEqual(expectedDataTypeValues);
64-
});
65-
66-
// TODO: Remove skip when the front-end is ready
67-
test.skip('can add stylesheet', async ({umbracoApi, umbracoUi}) => {
68-
// Arrange
69-
const stylesheetName = 'StylesheetForDataType.css';
70-
await umbracoApi.stylesheet.ensureNameNotExists(stylesheetName);
71-
const stylesheetPath = await umbracoApi.stylesheet.createDefaultStylesheet(stylesheetName);
72-
73-
const expectedDataTypeValues = {
74-
"alias": "stylesheets",
75-
"value": [stylesheetPath]
76-
};
77-
78-
await umbracoUi.dataType.goToDataType(dataTypeName);
7912

8013
// Act
81-
await umbracoUi.dataType.addStylesheet(stylesheetName);
82-
await umbracoUi.dataType.clickSaveButton();
83-
84-
// Assert
85-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
86-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
87-
88-
// Clean
89-
await umbracoApi.stylesheet.ensureNameNotExists(stylesheetName);
90-
});
91-
92-
test('can add dimensions', async ({umbracoApi, umbracoUi}) => {
93-
// Arrange
94-
const width = 100;
95-
const height = 10;
96-
const expectedDataTypeValues = {
97-
"alias": "dimensions",
98-
"value": {
99-
"width": width,
100-
"height": height
101-
}
102-
};
10314
await umbracoUi.dataType.goToDataType(dataTypeName);
10415

105-
// Act
106-
await umbracoUi.dataType.enterDimensionsValue(width.toString(), height.toString());
107-
await umbracoUi.dataType.clickSaveButton();
108-
109-
// Assert
110-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
111-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
112-
});
113-
114-
test('can add maximum size for inserted images', async ({umbracoApi, umbracoUi}) => {
115-
// Arrange
116-
const maxImageSize = 300;
117-
const expectedDataTypeValues = {
118-
"alias": "maxImageSize",
119-
"value": maxImageSize
120-
};
121-
await umbracoUi.dataType.goToDataType(dataTypeName);
122-
123-
// Act
124-
await umbracoUi.dataType.enterMaximumSizeForImages(maxImageSize.toString());
125-
await umbracoUi.dataType.clickSaveButton();
126-
12716
// Assert
128-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
129-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
130-
});
131-
132-
test('can select overlay size', async ({umbracoApi, umbracoUi}) => {
133-
// Arrange
134-
const overlaySizeValue = 'large';
135-
const expectedDataTypeValues = {
136-
"alias": "overlaySize",
137-
"value": overlaySizeValue
138-
};
139-
await umbracoUi.dataType.goToDataType(dataTypeName);
140-
141-
// Act
142-
await umbracoUi.dataType.chooseOverlaySizeByValue(overlaySizeValue);
143-
await umbracoUi.dataType.clickSaveButton();
144-
145-
// Assert
146-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
147-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
148-
});
149-
150-
// No hide label for TipTap
151-
test.skip('can enable hide label', async ({umbracoApi, umbracoUi}) => {
152-
// Arrange
153-
const expectedDataTypeValues = {
154-
"alias": "hideLabel",
155-
"value": true
156-
};
157-
await umbracoUi.dataType.goToDataType(dataTypeName);
158-
159-
// Act
160-
await umbracoUi.dataType.clickHideLabelSlider();
161-
await umbracoUi.dataType.clickSaveButton();
162-
163-
// Assert
164-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
165-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
166-
});
167-
168-
test('can add image upload folder', async ({umbracoApi, umbracoUi}) => {
169-
// Arrange
170-
const mediaFolderName = 'TestMediaFolder';
171-
await umbracoApi.media.ensureNameNotExists(mediaFolderName);
172-
const mediaFolderId = await umbracoApi.media.createDefaultMediaFolder(mediaFolderName);
173-
const expectedDataTypeValues = {
174-
"alias": "mediaParentId",
175-
"value": mediaFolderId
176-
};
177-
await umbracoUi.dataType.goToDataType(dataTypeName);
178-
179-
// Act
180-
await umbracoUi.dataType.addImageUploadFolder(mediaFolderName);
181-
await umbracoUi.dataType.clickSaveButton();
182-
183-
// Assert
184-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
185-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
186-
187-
// Clean
188-
await umbracoApi.media.ensureNameNotExists(mediaFolderName);
189-
});
190-
191-
// There is no inline editing mode for TipTap
192-
test.skip('can enable inline editing mode', async ({umbracoApi, umbracoUi}) => {
193-
// Arrange
194-
const mode = 'Inline';
195-
const expectedDataTypeValues = {
196-
"alias": "mode",
197-
"value": mode
198-
};
199-
await umbracoUi.dataType.goToDataType(dataTypeName);
200-
201-
// Act
202-
await umbracoUi.dataType.clickInlineRadioButton();
203-
await umbracoUi.dataType.clickSaveButton();
204-
205-
// Assert
206-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
207-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
208-
});
209-
210-
test('can add an available block', async ({umbracoApi, umbracoUi}) => {
211-
// Arrange
212-
const elementTypeName = 'TestElementType';
213-
await umbracoApi.documentType.ensureNameNotExists(elementTypeName);
214-
const elementTypeId = await umbracoApi.documentType.createEmptyElementType(elementTypeName);
215-
const expectedDataTypeValues = {
216-
alias: "blocks",
217-
value: [
218-
{
219-
contentElementTypeKey: elementTypeId,
220-
}
221-
]
222-
};
223-
await umbracoUi.dataType.goToDataType(dataTypeName);
224-
225-
// Act
226-
await umbracoUi.dataType.addAvailableBlocks(elementTypeName);
227-
await umbracoUi.dataType.clickSaveButton();
228-
229-
// Assert
230-
dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
231-
expect(dataTypeData.values).toContainEqual(expectedDataTypeValues);
232-
233-
// Clean
234-
await umbracoApi.documentType.delete(elementTypeId);
235-
});
17+
await umbracoUi.dataType.doesPropertyEditorHaveName(tipTapPropertyEditorName);
18+
await umbracoUi.dataType.doesPropertyEditorHaveSchemaAlias(tipTapAlias);
19+
await umbracoUi.dataType.doesPropertyEditorHaveAlias(tipTapUiAlias);
20+
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
21+
expect(dataTypeData.editorAlias).toBe(tipTapAlias);
22+
expect(dataTypeData.editorUiAlias).toBe(tipTapUiAlias);
23+
});

0 commit comments

Comments
 (0)