11import { Selector } from 'testcafe' ;
22import { createScreenshotsComparer } from 'devextreme-screenshot-comparer' ;
33import Toolbar from 'devextreme-testcafe-models/toolbar/toolbar' ;
4+ import { ToolbarItemComponent } from 'devextreme/common' ;
5+ import { Item , LocateInMenuMode } from 'devextreme/ui/toolbar' ;
46import { testScreenshot } from '../../../helpers/themeUtils' ;
57import url from '../../../helpers/getPageUrl' ;
68import { createWidget } from '../../../helpers/createWidget' ;
@@ -9,11 +11,7 @@ import { appendElementTo, setAttribute, setStyleAttribute } from '../../../helpe
911fixture . disablePageReloads `Toolbar_common`
1012 . page ( url ( __dirname , '../../container.html' ) ) ;
1113
12- const supportedWidgets = [
13- 'dxAutocomplete' , 'dxCheckBox' , 'dxDateBox' , 'dxMenu' , 'dxSelectBox' , 'dxTabs' , 'dxTextBox' , 'dxButtonGroup' , 'dxDropDownButton' ,
14- ] ;
15-
16- [ 'never' , 'always' , 'auto' ] . forEach ( ( locateInMenu ) => {
14+ [ 'never' , 'always' ] . forEach ( ( locateInMenu : LocateInMenuMode ) => {
1715 [ true , false ] . forEach ( ( rtlEnabled ) => {
1816 test ( `Default nested widgets render,items[].locateInMenu=${ locateInMenu } ,rtl=${ rtlEnabled } ` , async ( t ) => {
1917 const { takeScreenshot, compareResults } = createScreenshotsComparer ( t ) ;
@@ -24,8 +22,7 @@ const supportedWidgets = [
2422 const overflowMenu = toolbar . getOverflowMenu ( ) ;
2523
2624 if ( locateInMenu !== 'never' ) {
27- await t
28- . click ( overflowMenu . element ) ;
25+ await t . click ( overflowMenu . element ) ;
2926
3027 targetContainer = overflowMenu . getPopup ( ) . getContent ( ) ;
3128 }
@@ -34,16 +31,6 @@ const supportedWidgets = [
3431
3532 await testScreenshot ( t , takeScreenshot , `Toolbar widgets render${ rtlEnabled ? ' rtl=true' : '' } ,items[]locateInMenu=${ locateInMenu } .png` , {
3633 element : targetContainer ,
37- shouldTestInCompact : true ,
38- compactCallBack : async ( ) => {
39- await toolbar . repaint ( ) ;
40-
41- if ( locateInMenu !== 'never' ) {
42- await t
43- . click ( overflowMenu . element ) ;
44- }
45- await setStyleAttribute ( targetContainer , 'background-color: gold;' ) ;
46- } ,
4734 } ) ;
4835
4936 await t
@@ -53,33 +40,21 @@ const supportedWidgets = [
5340 await appendElementTo ( '#container' , 'div' , 'toolbar' ) ;
5441 await setAttribute ( '#container' , 'style' , 'width: 1184px;' ) ;
5542
56- const toolbarItems = [ ] as any [ ] ;
57- ( supportedWidgets as any [ ] ) . forEach ( ( widgetName ) => {
58- // eslint-disable-next-line @typescript-eslint/init-declarations
59- let iconPosition ;
60- if ( widgetName === 'dxTabs' ) {
61- iconPosition = 'start' ;
62- }
63- const itemConfig = {
64- location : 'before' ,
65- locateInMenu,
66- widget : widgetName ,
67- options : {
68- value : new Date ( 2021 , 9 , 17 ) ,
69- stylingMode : 'contained' ,
70- text : `${ widgetName } ` ,
71- icon : 'refresh' ,
72- items : [ { text : `${ widgetName } ` , icon : 'export' } ] ,
73- iconPosition,
74- } ,
75- } ;
76-
77- if ( locateInMenu === 'never' ) {
78- ( itemConfig . options as any ) . width = 115 ;
79- }
80-
81- toolbarItems . push ( itemConfig ) ;
82- } ) ;
43+ const supportedWidgets : ToolbarItemComponent [ ] = [ 'dxAutocomplete' , 'dxButton' , 'dxCheckBox' , 'dxDateBox' , 'dxMenu' , 'dxSelectBox' , 'dxTabs' , 'dxTextBox' , 'dxButtonGroup' , 'dxDropDownButton' ] ;
44+ const toolbarItems : Item [ ] = supportedWidgets . map ( ( widgetName ) => ( {
45+ location : 'before' ,
46+ locateInMenu,
47+ widget : widgetName ,
48+ options : {
49+ value : new Date ( 2021 , 9 , 17 ) ,
50+ stylingMode : 'contained' ,
51+ text : `${ widgetName } ` ,
52+ icon : 'refresh' ,
53+ items : [ { text : `${ widgetName } ` , icon : 'export' } ] ,
54+ iconPosition : widgetName === 'dxTabs' ? 'start' : undefined ,
55+ width : locateInMenu === 'never' ? 115 : undefined ,
56+ } ,
57+ } ) ) ;
8358
8459 toolbarItems . push ( {
8560 location : 'before' ,
@@ -94,189 +69,45 @@ const supportedWidgets = [
9469 } , '#toolbar' ) ;
9570 } ) ;
9671 } ) ;
72+ } ) ;
9773
98- test ( `Toolbar with dropDownButton,items[].locateInMenu=${ locateInMenu } ` , async ( t ) => {
74+ [ true , false ] . forEach ( ( rtlEnabled ) => {
75+ test ( `Default nested widgets render, rtlEnabled: ${ rtlEnabled } ` , async ( t ) => {
9976 const { takeScreenshot, compareResults } = createScreenshotsComparer ( t ) ;
10077
101- const toolbar = new Toolbar ( '#toolbar' ) ;
102- const overflowMenu = toolbar . getOverflowMenu ( ) ;
103- let targetContainer = Selector ( '#container' ) ;
104-
105- if ( locateInMenu !== 'never' ) {
106- await t
107- . click ( overflowMenu . element ) ;
108-
109- targetContainer = overflowMenu . getPopup ( ) . getContent ( ) ;
110- }
111-
112- await testScreenshot ( t , takeScreenshot , `Toolbar with dropDownButton,items[]locateInMenu=${ locateInMenu === 'auto' ? 'always' : locateInMenu } .png` , {
113- element : targetContainer ,
114- shouldTestInCompact : true ,
115- compactCallBack : async ( ) => {
116- await toolbar . repaint ( ) ;
117-
118- if ( locateInMenu !== 'never' ) {
119- await t
120- . click ( overflowMenu . element ) ;
121- }
122- } ,
78+ await testScreenshot ( t , takeScreenshot , `Toolbar nested widgets render in multiline rtl=${ rtlEnabled } .png` , {
79+ element : '#toolbar' ,
12380 } ) ;
12481
12582 await t
12683 . expect ( compareResults . isValid ( ) )
12784 . ok ( compareResults . errorMessages ( ) ) ;
12885 } ) . before ( async ( ) => {
86+ await setAttribute ( '#container' , 'style' , 'box-sizing: border-box; width: 400px; height: 400px; padding: 8px;' ) ;
12987 await appendElementTo ( '#container' , 'div' , 'toolbar' ) ;
130- await setAttribute ( '#container' , 'style' , 'width: 1184px;' ) ;
13188
132- const toolbarItems = [
133- {
134- location : 'before' ,
135- locateInMenu,
136- widget : 'dxDropDownButton' ,
137- options : {
138- text : 'default' ,
139- } ,
140- } ,
141- {
142- location : 'before' ,
143- locateInMenu,
144- widget : 'dxDropDownButton' ,
145- options : {
146- stylingMode : 'text' ,
147- text : 'opts.stylingMode: text' ,
148- } ,
149- } ,
150- {
151- location : 'before' ,
152- locateInMenu,
153- widget : 'dxDropDownButton' ,
154- options : {
155- stylingMode : 'outlined' ,
156- text : 'opts.stylingMode: outlined' ,
157- } ,
158- } ,
159- {
160- location : 'before' ,
161- locateInMenu,
162- widget : 'dxDropDownButton' ,
163- options : {
164- stylingMode : 'contained' ,
165- text : 'opts.stylingMode: contained' ,
166- } ,
167- } ,
168- {
169- location : 'before' ,
170- locateInMenu,
171- widget : 'dxSwitch' ,
172- options : {
173- stylingMode : 'contained' ,
174- text : 'opts.stylingMode: contained' ,
175- } ,
89+ const supportedWidgets : ToolbarItemComponent [ ] = [ 'dxAutocomplete' , 'dxButton' , 'dxCheckBox' , 'dxDateBox' , 'dxMenu' , 'dxSelectBox' , 'dxTabs' , 'dxTextBox' , 'dxButtonGroup' , 'dxDropDownButton' ] ;
90+ const toolbarItems : Item [ ] = supportedWidgets . map ( ( widgetName ) => ( {
91+ location : 'before' ,
92+ widget : widgetName ,
93+ options : {
94+ value : new Date ( 2021 , 9 , 17 ) ,
95+ stylingMode : 'contained' ,
96+ text : 1 ,
97+ items : [ { text : 1 } , { text : 2 } ] ,
98+ showClearButton : true ,
17699 } ,
177- ] ;
100+ } ) ) ;
101+
102+ toolbarItems . push ( {
103+ location : 'after' ,
104+ text : 'Lorem Ipsum is simply dummy text of the printing and typesetting industry' ,
105+ } ) ;
178106
179107 return createWidget ( 'dxToolbar' , {
108+ multiline : true ,
180109 items : toolbarItems ,
181- width : locateInMenu === 'auto' ? 50 : '100%' ,
110+ rtlEnabled ,
182111 } , '#toolbar' ) ;
183112 } ) ;
184113} ) ;
185-
186- [ 'always' , 'never' ] . forEach ( ( locateInMenu ) => {
187- [ 'text' , 'outlined' , 'contained' ] . forEach ( ( stylingMode ) => {
188- test ( `Toolbar with different types of buttons,items[{locateInMenu=${ locateInMenu } ,stylingMode:${ stylingMode } }]` , async ( t ) => {
189- const { takeScreenshot, compareResults } = createScreenshotsComparer ( t ) ;
190-
191- const toolbar = new Toolbar ( '#toolbar' ) ;
192- const overflowMenu = toolbar . getOverflowMenu ( ) ;
193-
194- let targetContainer = Selector ( '#toolbar' ) ;
195- if ( locateInMenu === 'always' ) {
196- await t
197- . click ( overflowMenu . element ) ;
198-
199- targetContainer = overflowMenu . getPopup ( ) . getContent ( ) ;
200- }
201-
202- await testScreenshot ( t , takeScreenshot , `Toolbar with ${ stylingMode } buttons,items[]locateInMenu=${ locateInMenu } .png` , {
203- element : targetContainer ,
204- shouldTestInCompact : true ,
205- compactCallBack : async ( ) => {
206- await toolbar . repaint ( ) ;
207- if ( locateInMenu === 'always' ) {
208- await t
209- . click ( overflowMenu . element ) ;
210- }
211- } ,
212- } ) ;
213-
214- await t
215- . expect ( compareResults . isValid ( ) )
216- . ok ( compareResults . errorMessages ( ) ) ;
217- } ) . before ( async ( ) => {
218- await appendElementTo ( '#container' , 'div' , 'toolbar' ) ;
219- await setAttribute ( '#container' , 'style' , 'width: 600px;' ) ;
220-
221- const toolbarItems = [
222- {
223- location : 'before' ,
224- locateInMenu,
225- widget : 'dxButton' ,
226- options : {
227- type : 'default' ,
228- text : 'default' ,
229- icon : 'money' ,
230- stylingMode,
231- } ,
232- } ,
233- {
234- location : 'before' ,
235- locateInMenu,
236- widget : 'dxButton' ,
237- options : {
238- icon : 'money' ,
239- stylingMode,
240- } ,
241- } ,
242- {
243- location : 'before' ,
244- locateInMenu,
245- widget : 'dxButton' ,
246- options : {
247- type : 'danger' ,
248- text : 'danger' ,
249- icon : 'money' ,
250- stylingMode,
251- } ,
252- } ,
253- {
254- location : 'before' ,
255- locateInMenu,
256- widget : 'dxButton' ,
257- options : {
258- type : 'normal' ,
259- text : 'normal' ,
260- icon : 'money' ,
261- stylingMode,
262- } ,
263- } ,
264- {
265- location : 'before' ,
266- locateInMenu,
267- widget : 'dxButton' ,
268- options : {
269- type : 'success' ,
270- text : 'success' ,
271- icon : 'money' ,
272- stylingMode,
273- } ,
274- } ,
275- ] ;
276-
277- return createWidget ( 'dxToolbar' , {
278- items : toolbarItems ,
279- } , '#toolbar' ) ;
280- } ) ;
281- } ) ;
282- } ) ;
0 commit comments