Skip to content

Commit 5a611b8

Browse files
committed
test(Select): improve visual tests
1 parent 752caf4 commit 5a611b8

File tree

270 files changed

+47
-23
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

270 files changed

+47
-23
lines changed

src/components/Select/__tests__/Select.visual.test.tsx

+46-22
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import React from 'react';
33
import {test} from '~playwright/core';
44

55
import {createSmokeScenarios} from '../../../stories/tests-factory/create-smoke-scenarios';
6-
import type {SelectProps} from '../Select';
76
import {Select} from '../Select';
87
import {SelectQa} from '../constants';
8+
import type {SelectProps} from '../types';
99

1010
import {
1111
errorPlacementCases,
@@ -88,21 +88,21 @@ test.describe('Select', {tag: '@Select'}, () => {
8888
await root.getByTestId(SelectTestQA.trigger).hover();
8989

9090
await expectScreenshot({
91-
screenshotPostfix: 'after hover on trigger',
91+
nameSuffix: 'after hover on trigger',
9292
});
9393

9494
await root.getByTestId(SelectTestQA.trigger).click();
9595

9696
await expectScreenshot({
9797
component: page,
98-
screenshotPostfix: 'after click on trigger',
98+
nameSuffix: 'after click on trigger',
9999
});
100100

101101
await page.getByTestId(getSelectOptionTestQA('val2')).hover();
102102

103103
await expectScreenshot({
104104
component: page,
105-
screenshotPostfix: 'after hover on item',
105+
nameSuffix: 'after hover on item',
106106
});
107107
});
108108
});
@@ -113,8 +113,11 @@ test.describe('Select', {tag: '@Select'}, () => {
113113
hasClear: true,
114114
},
115115
{},
116+
{
117+
scenarioName: 'clear button',
118+
},
116119
).forEach(([title, details, props]) => {
117-
test(`clear button ${title}`, details, async ({mount, expectScreenshot}) => {
120+
test(title, details, async ({mount, expectScreenshot}) => {
118121
const root = await mount(
119122
<Select {...props}>
120123
<Select.Option
@@ -130,13 +133,13 @@ test.describe('Select', {tag: '@Select'}, () => {
130133
await root.getByTestId(SelectTestQA.trigger).hover();
131134

132135
await expectScreenshot({
133-
screenshotPostfix: 'after hover on trigger',
136+
nameSuffix: 'after hover on trigger',
134137
});
135138

136139
await root.getByTestId(SelectQa.CLEAR).hover();
137140

138141
await expectScreenshot({
139-
screenshotPostfix: 'after hover on clear button',
142+
nameSuffix: 'after hover on clear button',
140143
});
141144
});
142145
});
@@ -148,18 +151,27 @@ test.describe('Select', {tag: '@Select'}, () => {
148151
{
149152
placeholder: placeholderLabelCases,
150153
},
154+
{
155+
scenarioName: 'empty state',
156+
},
151157
).forEach(([title, details, props]) => {
152-
test(`empty state ${title}`, details, async ({mount, expectScreenshot}) => {
158+
test(title, details, async ({mount, expectScreenshot}) => {
153159
await mount(<Select {...props} />);
154160

155161
await expectScreenshot();
156162
});
157163
});
158164

159-
createSmokeScenarios(defaultProps, {
160-
popupPlacement: popupPlacementCases,
161-
}).forEach(([title, details, props]) => {
162-
test(`popup placement ${title}`, details, async ({mount, page, expectScreenshot}) => {
165+
createSmokeScenarios(
166+
defaultProps,
167+
{
168+
popupPlacement: popupPlacementCases,
169+
},
170+
{
171+
scenarioName: 'popup placement',
172+
},
173+
).forEach(([title, details, props]) => {
174+
test(title, details, async ({mount, page, expectScreenshot}) => {
163175
await page.setViewportSize({width: 500, height: 500});
164176

165177
const root = await mount(
@@ -196,8 +208,11 @@ test.describe('Select', {tag: '@Select'}, () => {
196208
{
197209
errorPlacement: errorPlacementCases,
198210
},
211+
{
212+
scenarioName: 'error state',
213+
},
199214
).forEach(([title, details, props]) => {
200-
test(`error state ${title}`, details, async ({mount, page, expectScreenshot}) => {
215+
test(title, details, async ({mount, page, expectScreenshot}) => {
201216
await page.setViewportSize({width: 500, height: 500});
202217

203218
await mount(
@@ -229,8 +244,11 @@ test.describe('Select', {tag: '@Select'}, () => {
229244
hasCounter: hasCounterCases,
230245
validationState: validationStateCases,
231246
},
247+
{
248+
scenarioName: 'multiple',
249+
},
232250
).forEach(([title, details, props]) => {
233-
test(`multiple ${title}`, details, async ({mount, page, expectScreenshot}) => {
251+
test(title, details, async ({mount, page, expectScreenshot}) => {
234252
await page.setViewportSize({width: 500, height: 500});
235253

236254
const root = await mount(
@@ -279,29 +297,35 @@ test.describe('Select', {tag: '@Select'}, () => {
279297
await root.getByTestId(SelectTestQA.trigger).hover();
280298

281299
await expectScreenshot({
282-
screenshotPostfix: 'after hover on trigger',
300+
nameSuffix: 'after hover on trigger',
283301
});
284302

285303
await root.getByTestId(SelectTestQA.trigger).click();
286304

287305
await expectScreenshot({
288306
component: page,
289-
screenshotPostfix: 'after click on trigger',
307+
nameSuffix: 'after click on trigger',
290308
});
291309

292310
await page.getByTestId(getSelectOptionTestQA('val2')).hover();
293311

294312
await expectScreenshot({
295313
component: page,
296-
screenshotPostfix: 'after hover on item',
314+
nameSuffix: 'after hover on item',
297315
});
298316
});
299317
});
300318

301-
createSmokeScenarios(defaultProps, {
302-
filterPlaceholder: filterPlaceholderCases,
303-
}).forEach(([title, details, props]) => {
304-
test(`with filter ${title}`, details, async ({mount, page, expectScreenshot}) => {
319+
createSmokeScenarios(
320+
defaultProps,
321+
{
322+
filterPlaceholder: filterPlaceholderCases,
323+
},
324+
{
325+
scenarioName: 'with filter',
326+
},
327+
).forEach(([title, details, props]) => {
328+
test(title, details, async ({mount, page, expectScreenshot}) => {
305329
await page.setViewportSize({width: 500, height: 500});
306330

307331
const root = await mount(<TestSelectWithFilter {...props} />);
@@ -318,7 +342,7 @@ test.describe('Select', {tag: '@Select'}, () => {
318342

319343
await expectScreenshot({
320344
component: page,
321-
screenshotPostfix: 'after type filter value',
345+
nameSuffix: 'after type filter value',
322346
});
323347
});
324348
});

src/components/Select/__tests__/helpers.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const TestSelectWithFilter = (props: Partial<SelectProps<string>>) => {
1010
const [value, setValue] = React.useState<string[]>([]);
1111
const [filter, setFilter] = React.useState('');
1212
const filterable = true;
13-
const options = useSelectOptions({
13+
const options = useSelectOptions<string>({
1414
options: [
1515
{
1616
label: 'Group 1',

0 commit comments

Comments
 (0)