Skip to content

Commit 03853e9

Browse files
committed
test: add visual tests for date-picker base styles
1 parent 7ef75ad commit 03853e9

28 files changed

+144
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
import { resetMouse, sendKeys, sendMouseToElement } from '@vaadin/test-runner-commands';
2+
import { fixtureSync, mousedown } from '@vaadin/testing-helpers';
3+
import { visualDiff } from '@web/test-runner-visual-regression';
4+
import '../common.js';
5+
import '../../../src/vaadin-lit-date-picker.js';
6+
7+
describe('date-picker', () => {
8+
let div, element;
9+
10+
beforeEach(() => {
11+
div = document.createElement('div');
12+
div.style.display = 'inline-block';
13+
div.style.padding = '10px';
14+
element = fixtureSync('<vaadin-date-picker></vaadin-date-picker>', div);
15+
});
16+
17+
describe('states', () => {
18+
it('basic', async () => {
19+
await visualDiff(div, 'state-basic');
20+
});
21+
22+
it('disabled', async () => {
23+
element.disabled = true;
24+
await visualDiff(div, 'state-disabled');
25+
});
26+
27+
it('readonly', async () => {
28+
element.readonly = true;
29+
await visualDiff(div, 'state-readonly');
30+
});
31+
32+
describe('focus', () => {
33+
afterEach(async () => {
34+
await resetMouse();
35+
// After tests which use sendKeys() the focus-utils.js -> isKeyboardActive is set to true.
36+
// Click once here on body to reset it so other tests are not affected by it.
37+
// An unwanted focus-ring would be shown in other tests otherwise.
38+
mousedown(document.body);
39+
});
40+
41+
it('keyboard focus', async () => {
42+
await sendKeys({ press: 'Tab' });
43+
await visualDiff(div, 'state-focus-keyboard');
44+
});
45+
46+
it('pointer focus', async () => {
47+
element.autoOpenDisabled = true;
48+
await sendMouseToElement({ type: 'click', element });
49+
await visualDiff(div, 'state-focus-pointer');
50+
});
51+
});
52+
});
53+
54+
describe('features', () => {
55+
['ltr', 'rtl'].forEach((dir) => {
56+
describe(dir, () => {
57+
before(() => {
58+
document.documentElement.setAttribute('dir', dir);
59+
});
60+
61+
after(() => {
62+
document.documentElement.removeAttribute('dir');
63+
});
64+
65+
it('label', async () => {
66+
element.label = 'Label';
67+
await visualDiff(div, `${dir}-label`);
68+
});
69+
70+
it('placeholder', async () => {
71+
element.placeholder = 'Placeholder';
72+
await visualDiff(div, `${dir}-placeholder`);
73+
});
74+
75+
it('value', async () => {
76+
element.value = '1991-12-20';
77+
await visualDiff(div, `${dir}-value`);
78+
});
79+
80+
it('clear button', async () => {
81+
element.value = '1991-12-20';
82+
element.clearButtonVisible = true;
83+
await visualDiff(div, `${dir}-clear-button`);
84+
});
85+
86+
it('required', async () => {
87+
element.label = 'Label';
88+
element.required = true;
89+
await visualDiff(div, `${dir}-required`);
90+
});
91+
92+
it('error message', async () => {
93+
element.label = 'Label';
94+
element.errorMessage = 'This field is required';
95+
element.required = true;
96+
element.validate();
97+
await visualDiff(div, `${dir}-error-message`);
98+
});
99+
100+
it('helper text', async () => {
101+
element.helperText = 'Helper text';
102+
await visualDiff(div, `${dir}-helper-text`);
103+
});
104+
105+
it('helper above field', async () => {
106+
element.label = 'Label';
107+
element.helperText = 'Helper text';
108+
element.setAttribute('theme', 'helper-above-field');
109+
await visualDiff(div, `${dir}-helper-above-field`);
110+
});
111+
112+
it('prefix slot', async () => {
113+
const span = document.createElement('span');
114+
span.setAttribute('slot', 'prefix');
115+
span.textContent = '$';
116+
element.appendChild(span);
117+
await visualDiff(div, `${dir}-prefix`);
118+
});
119+
120+
describe('dropdown', () => {
121+
function openOverlay() {
122+
element.opened = true;
123+
div.style.height = `${element.offsetHeight + element.$.overlay.$.overlay.offsetHeight}px`;
124+
div.style.width = `${element.$.overlay.$.overlay.offsetWidth}px`;
125+
}
126+
127+
it('default', async () => {
128+
element.value = '2000-01-01';
129+
openOverlay();
130+
await visualDiff(div, `${dir}-dropdown`);
131+
});
132+
133+
it('week numbers', async () => {
134+
element.value = '2000-01-01';
135+
element.showWeekNumbers = true;
136+
element.i18n = { firstDayOfWeek: 1 };
137+
openOverlay();
138+
await visualDiff(div, `${dir}-week-numbers`);
139+
});
140+
});
141+
});
142+
});
143+
});
144+
});
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)