11import { test } from '@umbraco/playwright-testhelpers' ;
22import { 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