diff --git a/packages/select/test/visual/base/screenshots/select/baseline/feature-error-message.png b/packages/select/test/visual/base/screenshots/select/baseline/feature-error-message.png new file mode 100644 index 00000000000..0daff264b29 Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/feature-error-message.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/feature-helper-above-field.png b/packages/select/test/visual/base/screenshots/select/baseline/feature-helper-above-field.png new file mode 100644 index 00000000000..b6ed5532cf3 Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/feature-helper-above-field.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/feature-helper-text.png b/packages/select/test/visual/base/screenshots/select/baseline/feature-helper-text.png new file mode 100644 index 00000000000..a9e8926f4e8 Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/feature-helper-text.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/feature-prefix.png b/packages/select/test/visual/base/screenshots/select/baseline/feature-prefix.png new file mode 100644 index 00000000000..a9476f5bacd Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/feature-prefix.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/state-basic.png b/packages/select/test/visual/base/screenshots/select/baseline/state-basic.png new file mode 100644 index 00000000000..9f63e4c750c Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/state-basic.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/state-disabled.png b/packages/select/test/visual/base/screenshots/select/baseline/state-disabled.png new file mode 100644 index 00000000000..df39e8b0a4e Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/state-disabled.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/state-focus.png b/packages/select/test/visual/base/screenshots/select/baseline/state-focus.png new file mode 100644 index 00000000000..fa38f8d7aeb Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/state-focus.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/state-opened.png b/packages/select/test/visual/base/screenshots/select/baseline/state-opened.png new file mode 100644 index 00000000000..fb568a7a817 Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/state-opened.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/state-placeholder.png b/packages/select/test/visual/base/screenshots/select/baseline/state-placeholder.png new file mode 100644 index 00000000000..999403b71ec Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/state-placeholder.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/state-readonly.png b/packages/select/test/visual/base/screenshots/select/baseline/state-readonly.png new file mode 100644 index 00000000000..53d197ba243 Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/state-readonly.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/state-required.png b/packages/select/test/visual/base/screenshots/select/baseline/state-required.png new file mode 100644 index 00000000000..0d55a89af4f Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/state-required.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/value-disabled.png b/packages/select/test/visual/base/screenshots/select/baseline/value-disabled.png new file mode 100644 index 00000000000..5b90b512e77 Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/value-disabled.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/value-multiline.png b/packages/select/test/visual/base/screenshots/select/baseline/value-multiline.png new file mode 100644 index 00000000000..9d16046a0bd Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/value-multiline.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/value-opened.png b/packages/select/test/visual/base/screenshots/select/baseline/value-opened.png new file mode 100644 index 00000000000..6762f6fcc47 Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/value-opened.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/value-overflow.png b/packages/select/test/visual/base/screenshots/select/baseline/value-overflow.png new file mode 100644 index 00000000000..6a96665f91b Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/value-overflow.png differ diff --git a/packages/select/test/visual/base/screenshots/select/baseline/value.png b/packages/select/test/visual/base/screenshots/select/baseline/value.png new file mode 100644 index 00000000000..7e742f1654e Binary files /dev/null and b/packages/select/test/visual/base/screenshots/select/baseline/value.png differ diff --git a/packages/select/test/visual/base/select.test.js b/packages/select/test/visual/base/select.test.js new file mode 100644 index 00000000000..873bc12a7c5 --- /dev/null +++ b/packages/select/test/visual/base/select.test.js @@ -0,0 +1,147 @@ +import { sendKeys } from '@vaadin/test-runner-commands'; +import { fixtureSync, nextFrame } from '@vaadin/testing-helpers'; +import { visualDiff } from '@web/test-runner-visual-regression'; +import '../common.js'; +import '@vaadin/item/src/vaadin-lit-item.js'; +import '@vaadin/list-box/src/vaadin-lit-list-box.js'; +import '../../../src/vaadin-lit-select.js'; + +describe('select', () => { + let div, element; + + beforeEach(() => { + div = document.createElement('div'); + div.style.display = 'inline-block'; + div.style.padding = '10px'; + element = fixtureSync('', div); + element.items = [ + { label: 'item 1', value: 'value-1' }, + { label: 'item 2', value: 'value-2' }, + { label: 'item 3', value: 'value-3' }, + ]; + }); + + describe('states', () => { + it('basic', async () => { + await visualDiff(div, 'state-basic'); + }); + + it('placeholder', async () => { + element.placeholder = 'Placeholder'; + await visualDiff(div, 'state-placeholder'); + }); + + it('disabled', async () => { + element.disabled = true; + await visualDiff(div, 'state-disabled'); + }); + + it('readonly', async () => { + element.readonly = true; + await visualDiff(div, 'state-readonly'); + }); + + it('required', async () => { + element.label = 'Label'; + element.required = true; + await visualDiff(div, 'state-required'); + }); + + it('focus', async () => { + await sendKeys({ press: 'Tab' }); + await visualDiff(div, 'state-focus'); + }); + + it('opened', async () => { + div.style.height = '200px'; + div.style.width = '200px'; + await sendKeys({ press: 'Tab' }); + element.opened = true; + await nextFrame(); + await visualDiff(div, 'state-opened'); + }); + }); + + describe('value', () => { + it('value', async () => { + element.value = 'value-1'; + await visualDiff(div, 'value'); + }); + + it('disabled value', async () => { + element.disabled = true; + element.value = 'value-1'; + await visualDiff(div, 'value-disabled'); + }); + + it('opened value', async () => { + div.style.height = '200px'; + div.style.width = '200px'; + element.value = 'value-1'; + await sendKeys({ press: 'Tab' }); + element.opened = true; + await nextFrame(); + await visualDiff(div, 'value-opened'); + }); + + it('overflow', async () => { + element.renderer = (root) => { + root.innerHTML = ` + + Very long item text content + + `; + }; + element.value = 'long'; + await visualDiff(div, 'value-overflow'); + }); + + it('multiline', async () => { + element.renderer = (root) => { + root.innerHTML = ` + + +
+ Line 1 +
+ Line 2 +
+
+
+ `; + }; + element.value = 'custom'; + await visualDiff(div, 'value-multiline'); + }); + }); + + describe('features', () => { + it('error message', async () => { + element.label = 'Label'; + element.errorMessage = 'This field is required'; + element.required = true; + element.validate(); + await visualDiff(div, 'feature-error-message'); + }); + + it('helper text', async () => { + element.helperText = 'Helper text'; + await visualDiff(div, 'feature-helper-text'); + }); + + it('helper above field', async () => { + element.label = 'Label'; + element.helperText = 'Helper text'; + element.setAttribute('theme', 'helper-above-field'); + await visualDiff(div, 'feature-helper-above-field'); + }); + + it('prefix', async () => { + const span = document.createElement('span'); + span.setAttribute('slot', 'prefix'); + span.textContent = '$'; + element.appendChild(span); + await visualDiff(div, 'feature-prefix'); + }); + }); +});