Skip to content

Commit 6ffdc74

Browse files
authored
test: add visual tests for select base styles (#9014)
1 parent acc535e commit 6ffdc74

17 files changed

+147
-0
lines changed
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
import { sendKeys } from '@vaadin/test-runner-commands';
2+
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
3+
import { visualDiff } from '@web/test-runner-visual-regression';
4+
import '../common.js';
5+
import '@vaadin/item/src/vaadin-lit-item.js';
6+
import '@vaadin/list-box/src/vaadin-lit-list-box.js';
7+
import '../../../src/vaadin-lit-select.js';
8+
9+
describe('select', () => {
10+
let div, element;
11+
12+
beforeEach(() => {
13+
div = document.createElement('div');
14+
div.style.display = 'inline-block';
15+
div.style.padding = '10px';
16+
element = fixtureSync('<vaadin-select></vaadin-select>', div);
17+
element.items = [
18+
{ label: 'item 1', value: 'value-1' },
19+
{ label: 'item 2', value: 'value-2' },
20+
{ label: 'item 3', value: 'value-3' },
21+
];
22+
});
23+
24+
describe('states', () => {
25+
it('basic', async () => {
26+
await visualDiff(div, 'state-basic');
27+
});
28+
29+
it('placeholder', async () => {
30+
element.placeholder = 'Placeholder';
31+
await visualDiff(div, 'state-placeholder');
32+
});
33+
34+
it('disabled', async () => {
35+
element.disabled = true;
36+
await visualDiff(div, 'state-disabled');
37+
});
38+
39+
it('readonly', async () => {
40+
element.readonly = true;
41+
await visualDiff(div, 'state-readonly');
42+
});
43+
44+
it('required', async () => {
45+
element.label = 'Label';
46+
element.required = true;
47+
await visualDiff(div, 'state-required');
48+
});
49+
50+
it('focus', async () => {
51+
await sendKeys({ press: 'Tab' });
52+
await visualDiff(div, 'state-focus');
53+
});
54+
55+
it('opened', async () => {
56+
div.style.height = '200px';
57+
div.style.width = '200px';
58+
await sendKeys({ press: 'Tab' });
59+
element.opened = true;
60+
await nextFrame();
61+
await visualDiff(div, 'state-opened');
62+
});
63+
});
64+
65+
describe('value', () => {
66+
it('value', async () => {
67+
element.value = 'value-1';
68+
await visualDiff(div, 'value');
69+
});
70+
71+
it('disabled value', async () => {
72+
element.disabled = true;
73+
element.value = 'value-1';
74+
await visualDiff(div, 'value-disabled');
75+
});
76+
77+
it('opened value', async () => {
78+
div.style.height = '200px';
79+
div.style.width = '200px';
80+
element.value = 'value-1';
81+
await sendKeys({ press: 'Tab' });
82+
element.opened = true;
83+
await nextFrame();
84+
await visualDiff(div, 'value-opened');
85+
});
86+
87+
it('overflow', async () => {
88+
element.renderer = (root) => {
89+
root.innerHTML = `
90+
<vaadin-list-box>
91+
<vaadin-item value="long">Very long item text content</vaadin-item>
92+
</vaadin-list-box>
93+
`;
94+
};
95+
element.value = 'long';
96+
await visualDiff(div, 'value-overflow');
97+
});
98+
99+
it('multiline', async () => {
100+
element.renderer = (root) => {
101+
root.innerHTML = `
102+
<vaadin-list-box>
103+
<vaadin-item value="custom">
104+
<div>
105+
Line 1
106+
<br>
107+
Line 2
108+
</div>
109+
</vaadin-item>
110+
</vaadin-list-box>
111+
`;
112+
};
113+
element.value = 'custom';
114+
await visualDiff(div, 'value-multiline');
115+
});
116+
});
117+
118+
describe('features', () => {
119+
it('error message', async () => {
120+
element.label = 'Label';
121+
element.errorMessage = 'This field is required';
122+
element.required = true;
123+
element.validate();
124+
await visualDiff(div, 'feature-error-message');
125+
});
126+
127+
it('helper text', async () => {
128+
element.helperText = 'Helper text';
129+
await visualDiff(div, 'feature-helper-text');
130+
});
131+
132+
it('helper above field', async () => {
133+
element.label = 'Label';
134+
element.helperText = 'Helper text';
135+
element.setAttribute('theme', 'helper-above-field');
136+
await visualDiff(div, 'feature-helper-above-field');
137+
});
138+
139+
it('prefix', async () => {
140+
const span = document.createElement('span');
141+
span.setAttribute('slot', 'prefix');
142+
span.textContent = '$';
143+
element.appendChild(span);
144+
await visualDiff(div, 'feature-prefix');
145+
});
146+
});
147+
});

0 commit comments

Comments
 (0)