Skip to content

Commit 38e3e36

Browse files
committed
Toolbar: reduce screenshot test cases
1 parent 7d6a9e0 commit 38e3e36

220 files changed

Lines changed: 240 additions & 936 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 43 additions & 212 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { Selector } from 'testcafe';
22
import { createScreenshotsComparer } from 'devextreme-screenshot-comparer';
33
import Toolbar from 'devextreme-testcafe-models/toolbar/toolbar';
4+
import { ToolbarItemComponent } from 'devextreme/common';
5+
import { Item, LocateInMenuMode } from 'devextreme/ui/toolbar';
46
import { testScreenshot } from '../../../helpers/themeUtils';
57
import url from '../../../helpers/getPageUrl';
68
import { createWidget } from '../../../helpers/createWidget';
@@ -9,11 +11,7 @@ import { appendElementTo, setAttribute, setStyleAttribute } from '../../../helpe
911
fixture.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

Comments
 (0)