From 93be1f922482ab4cf6526f2574845a1d97eada07 Mon Sep 17 00:00:00 2001 From: Sergey Vinogradov Date: Wed, 8 Jan 2025 18:09:44 +0400 Subject: [PATCH] chore: upgrade playwright to 1.48.2 (#8355) Co-authored-by: Tomi Virkki --- .github/workflows/unit-tests.yml | 4 +-- package.json | 3 ++ .../test/checkbox-group.common.js | 16 ++++++---- .../checkbox-group/test/validation.common.js | 20 ++++++++----- packages/checkbox/test/validation.common.js | 9 ++++-- .../combo-box/test/interactions.common.js | 8 ++++- packages/combo-box/test/keyboard.common.js | 28 +++++++---------- .../test/virtualizer-reorder-elements.test.js | 14 ++++----- packages/context-menu/test/a11y.common.js | 12 ++++---- packages/date-picker/test/dropdown.common.js | 7 ++++- .../test/virtual-keyboard-controller.test.js | 7 ++++- .../field-highlighter/test/user-tags.test.js | 2 +- packages/grid/test/drag-and-drop.common.js | 1 + .../test/keyboard-interaction-mode.common.js | 14 ++++----- .../grid/test/keyboard-navigation.common.js | 4 +-- packages/grid/test/scrolling-mode.common.js | 16 ++-------- packages/icon/test/icon-font.common.js | 10 +++++++ .../multi-select-combo-box/test/chips.test.js | 8 +++++ .../test/readonly.test.js | 7 ++++- .../radio-group-keyboard-navigation.common.js | 23 +++++++------- .../radio-group/test/radio-group.common.js | 18 +++++++---- .../radio-group/test/validation.common.js | 18 +++++++---- packages/rich-text-editor/test/a11y.common.js | 13 ++++---- .../rich-text-editor/test/attach.common.js | 1 + .../select/src/vaadin-select-base-mixin.js | 1 + packages/select/test/validation.common.js | 7 ++++- .../virtual-list/test/drag-and-drop.common.js | 1 + yarn.lock | 30 ++++++++++--------- 28 files changed, 178 insertions(+), 124 deletions(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 588794e5a6a..ee21d72df14 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -43,7 +43,7 @@ jobs: run: yarn --frozen-lockfile --no-progress --non-interactive - name: Install Playwright - run: npx playwright install-deps firefox + run: npx playwright install firefox --with-deps - name: Test run: yarn test:firefox @@ -65,7 +65,7 @@ jobs: run: yarn --frozen-lockfile --no-progress --non-interactive - name: Install Playwright - run: npx playwright install-deps webkit + run: npx playwright install webkit --with-deps - name: Test run: yarn test:webkit diff --git a/package.json b/package.json index ebb85a649fb..8079034ea60 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,9 @@ "stylelint-config-vaadin": "^1.0.0-alpha.1", "typescript": "^5.5.2" }, + "resolutions": { + "playwright": "^1.48.2" + }, "lint-staged": { "*.{js,ts}": [ "eslint --fix", diff --git a/packages/checkbox-group/test/checkbox-group.common.js b/packages/checkbox-group/test/checkbox-group.common.js index 4676d46f340..bd34c2f8f8a 100644 --- a/packages/checkbox-group/test/checkbox-group.common.js +++ b/packages/checkbox-group/test/checkbox-group.common.js @@ -258,12 +258,18 @@ describe('vaadin-checkbox-group', () => { }); describe('focused attribute', () => { + let firstGlobalFocusable; + beforeEach(async () => { - group = fixtureSync(` - - - - `); + [firstGlobalFocusable, group] = fixtureSync( + `
+ + + + +
`, + ).children; + firstGlobalFocusable.focus(); await nextFrame(); checkboxes = [...group.querySelectorAll('vaadin-checkbox')]; }); diff --git a/packages/checkbox-group/test/validation.common.js b/packages/checkbox-group/test/validation.common.js index 11dce84da31..839dba007b8 100644 --- a/packages/checkbox-group/test/validation.common.js +++ b/packages/checkbox-group/test/validation.common.js @@ -39,14 +39,20 @@ describe('validation', () => { }); describe('basic', () => { + let firstGlobalFocusable; + beforeEach(async () => { - group = fixtureSync(` - - - - - - `); + [firstGlobalFocusable, group] = fixtureSync( + `
+ + + + + + +
`, + ).children; + firstGlobalFocusable.focus(); await nextRender(); validateSpy = sinon.spy(group, 'validate'); }); diff --git a/packages/checkbox/test/validation.common.js b/packages/checkbox/test/validation.common.js index 6133bdd49b0..a0e8d4bbf83 100644 --- a/packages/checkbox/test/validation.common.js +++ b/packages/checkbox/test/validation.common.js @@ -40,7 +40,12 @@ describe('validation', () => { describe('basic', () => { beforeEach(async () => { - checkbox = fixtureSync(''); + checkbox = fixtureSync( + `
+ + +
`, + ).firstElementChild; await nextRender(); validateSpy = sinon.spy(checkbox, 'validate'); }); @@ -65,9 +70,7 @@ describe('validation', () => { expect(validateSpy.called).to.be.false; // Blur the checkbox. - await sendKeys({ down: 'Shift' }); await sendKeys({ press: 'Tab' }); - await sendKeys({ up: 'Shift' }); expect(validateSpy.calledOnce).to.be.true; }); diff --git a/packages/combo-box/test/interactions.common.js b/packages/combo-box/test/interactions.common.js index b587b31136d..0cadb2a996e 100644 --- a/packages/combo-box/test/interactions.common.js +++ b/packages/combo-box/test/interactions.common.js @@ -22,7 +22,13 @@ describe('interactions', () => { let comboBox, overlay, input; beforeEach(async () => { - comboBox = fixtureSync(''); + comboBox = fixtureSync( + `
+ + +
`, + ).firstElementChild; + await nextRender(); comboBox.items = ['foo', 'bar', 'baz']; input = comboBox.inputElement; diff --git a/packages/combo-box/test/keyboard.common.js b/packages/combo-box/test/keyboard.common.js index d4adca32ca9..583b74bdc40 100644 --- a/packages/combo-box/test/keyboard.common.js +++ b/packages/combo-box/test/keyboard.common.js @@ -15,14 +15,20 @@ import sinon from 'sinon'; import { getViewportItems, getVisibleItemsCount, scrollToIndex, setInputValue } from './helpers.js'; describe('keyboard', () => { - let comboBox, input; + let comboBox, input, lastGlobalFocusable; function getFocusedIndex() { return comboBox._focusedIndex; } beforeEach(async () => { - comboBox = fixtureSync(''); + [comboBox, lastGlobalFocusable] = fixtureSync( + `
+ + +
`, + ).children; + await nextRender(); comboBox.items = ['foo', 'bar', 'baz']; input = comboBox.inputElement; @@ -128,36 +134,22 @@ describe('keyboard', () => { it('should tab to the next focusable', async () => { await sendKeys({ press: 'Tab' }); - - expect(document.activeElement).to.equal(document.body); + expect(document.activeElement).to.equal(lastGlobalFocusable); }); describe('focusable items content', () => { - let focusable; - - beforeEach(() => { - focusable = document.createElement('input'); - }); - - afterEach(() => { - focusable.remove(); - }); - it('should tab to the next focusable when items have focusable content', async () => { comboBox.renderer = (root) => { root.innerHTML = ''; }; - document.body.appendChild(focusable); - // Workaround Playwright sendKeys bug - focusable.focus(); input.focus(); arrowDownKeyDown(input); await aTimeout(0); await sendKeys({ press: 'Tab' }); - expect(document.activeElement).to.equal(focusable); + expect(document.activeElement).to.equal(lastGlobalFocusable); }); }); }); diff --git a/packages/component-base/test/virtualizer-reorder-elements.test.js b/packages/component-base/test/virtualizer-reorder-elements.test.js index e3c72b9354e..f1208967dab 100644 --- a/packages/component-base/test/virtualizer-reorder-elements.test.js +++ b/packages/component-base/test/virtualizer-reorder-elements.test.js @@ -1,5 +1,5 @@ import { expect } from '@vaadin/chai-plugins'; -import { fixtureSync, mousedown, mouseup, nextFrame, oneEvent } from '@vaadin/testing-helpers'; +import { fixtureSync, mousedown, mouseup, nextFrame } from '@vaadin/testing-helpers'; import { sendKeys } from '@web/test-runner-commands'; import sinon from 'sinon'; import { Virtualizer } from '../src/virtualizer.js'; @@ -144,8 +144,7 @@ describe('reorder elements', () => { // Tab downwards for (let i = 1; i <= tabToIndex; i++) { await nextFrame(); - queueMicrotask(async () => await sendKeys({ press: 'Tab' })); - await oneEvent(elementsContainer, 'focusin'); + await sendKeys({ press: 'Tab' }); await nextFrame(); expect(document.activeElement.id).to.equal(`item-${i}`); } @@ -153,12 +152,9 @@ describe('reorder elements', () => { // Tab upwards for (let i = tabToIndex - 1; i >= 0; i--) { await nextFrame(); - queueMicrotask(async () => { - await sendKeys({ down: 'Shift' }); - await sendKeys({ press: 'Tab' }); - await sendKeys({ up: 'Shift' }); - }); - await oneEvent(elementsContainer, 'focusin'); + await sendKeys({ down: 'Shift' }); + await sendKeys({ press: 'Tab' }); + await sendKeys({ up: 'Shift' }); await nextFrame(); expect(document.activeElement.id).to.equal(`item-${i}`); } diff --git a/packages/context-menu/test/a11y.common.js b/packages/context-menu/test/a11y.common.js index 9f1c2562ad5..9b690491846 100644 --- a/packages/context-menu/test/a11y.common.js +++ b/packages/context-menu/test/a11y.common.js @@ -6,19 +6,19 @@ import { getMenuItems } from './helpers.js'; describe('a11y', () => { describe('focus restoration', () => { - let contextMenu, contextMenuButton, beforeButton, afterButton; + let contextMenu, contextMenuButton, firstGlobalFocusable, lastGlobalFocusable; beforeEach(async () => { const wrapper = fixtureSync(`
- + - +
`); - [beforeButton, contextMenu, afterButton] = wrapper.children; + [firstGlobalFocusable, contextMenu, lastGlobalFocusable] = wrapper.children; contextMenu.items = [{ text: 'Item 0' }, { text: 'Item 1', children: [{ text: 'Item 1/0' }] }]; await nextRender(); contextMenuButton = contextMenu.querySelector('button'); @@ -82,14 +82,14 @@ describe('a11y', () => { await sendKeys({ down: 'Shift' }); await sendKeys({ press: 'Tab' }); await sendKeys({ up: 'Shift' }); - expect(getDeepActiveElement()).to.equal(beforeButton); + expect(getDeepActiveElement()).to.equal(firstGlobalFocusable); }); it('should move focus to the next element outside the menu on Tab pressed inside', async () => { contextMenuButton.click(); await nextRender(); await sendKeys({ press: 'Tab' }); - expect(getDeepActiveElement()).to.equal(afterButton); + expect(getDeepActiveElement()).to.equal(lastGlobalFocusable); }); }); }); diff --git a/packages/date-picker/test/dropdown.common.js b/packages/date-picker/test/dropdown.common.js index 0f5a25d60ee..c3c29c47657 100644 --- a/packages/date-picker/test/dropdown.common.js +++ b/packages/date-picker/test/dropdown.common.js @@ -17,7 +17,12 @@ describe('dropdown', () => { let datePicker, input, overlay; beforeEach(async () => { - datePicker = fixtureSync(``); + datePicker = fixtureSync( + `
+ + +
`, + ).firstElementChild; await nextRender(); input = datePicker.inputElement; overlay = datePicker.$.overlay; diff --git a/packages/field-base/test/virtual-keyboard-controller.test.js b/packages/field-base/test/virtual-keyboard-controller.test.js index 66ff3711ccd..c10011ec83a 100644 --- a/packages/field-base/test/virtual-keyboard-controller.test.js +++ b/packages/field-base/test/virtual-keyboard-controller.test.js @@ -37,7 +37,12 @@ describe('virtual-keyboard-controller', () => { let element, input; beforeEach(() => { - element = fixtureSync(''); + element = fixtureSync( + `
+ + +
`, + ).firstElementChild; input = element.inputElement; }); diff --git a/packages/field-highlighter/test/user-tags.test.js b/packages/field-highlighter/test/user-tags.test.js index bb6fea5f99c..672cc2d8a79 100644 --- a/packages/field-highlighter/test/user-tags.test.js +++ b/packages/field-highlighter/test/user-tags.test.js @@ -242,8 +242,8 @@ describe('user-tags', () => { describe('adding users when the field is partially visible and focused', () => { beforeEach(async () => { - container.scrollTop = 220; field.inputElement.focus(); + container.scrollTop = 220; await waitForIntersectionObserver(); addUser(user1); addUser(user2); diff --git a/packages/grid/test/drag-and-drop.common.js b/packages/grid/test/drag-and-drop.common.js index a60ebba8d9f..64a6c22d1ff 100644 --- a/packages/grid/test/drag-and-drop.common.js +++ b/packages/grid/test/drag-and-drop.common.js @@ -1118,6 +1118,7 @@ describe('drag and drop', () => { async function assertDragSucceeds(draggedElement) { await dragElement(draggedElement); + await nextFrame(); expect(grid.$.scroller.style.display).to.equal(''); } diff --git a/packages/grid/test/keyboard-interaction-mode.common.js b/packages/grid/test/keyboard-interaction-mode.common.js index 989190d24e2..98ba62f461f 100644 --- a/packages/grid/test/keyboard-interaction-mode.common.js +++ b/packages/grid/test/keyboard-interaction-mode.common.js @@ -1,5 +1,5 @@ import { expect } from '@vaadin/chai-plugins'; -import { aTimeout, fixtureSync, keyDownOn, nextFrame, nextRender, oneEvent } from '@vaadin/testing-helpers'; +import { aTimeout, fixtureSync, keyDownOn, nextFrame, nextRender } from '@vaadin/testing-helpers'; import { sendKeys } from '@web/test-runner-commands'; import sinon from 'sinon'; import { getDeepActiveElement } from '@vaadin/a11y-base/src/focus-utils.js'; @@ -540,8 +540,7 @@ describe('keyboard interaction mode', () => { // Tab downwards for (let i = 1; i <= tabToIndex; i++) { await rendered(); - queueMicrotask(async () => await sendKeys({ press: 'Tab' })); - await oneEvent(grid, 'focusin'); + await sendKeys({ press: 'Tab' }); await rendered(); const focusedRow = document.activeElement.parentElement.assignedSlot.parentElement.parentElement; @@ -551,12 +550,9 @@ describe('keyboard interaction mode', () => { // Tab upwards for (let i = tabToIndex - 1; i >= 0; i--) { await rendered(); - queueMicrotask(async () => { - await sendKeys({ down: 'Shift' }); - await sendKeys({ press: 'Tab' }); - await sendKeys({ up: 'Shift' }); - }); - await oneEvent(grid, 'focusin'); + await sendKeys({ down: 'Shift' }); + await sendKeys({ press: 'Tab' }); + await sendKeys({ up: 'Shift' }); await rendered(); const focusedRow = document.activeElement.parentElement.assignedSlot.parentElement.parentElement; expect(focusedRow.index).to.equal(i); diff --git a/packages/grid/test/keyboard-navigation.common.js b/packages/grid/test/keyboard-navigation.common.js index f90f81c63f0..6466bbf0ed3 100644 --- a/packages/grid/test/keyboard-navigation.common.js +++ b/packages/grid/test/keyboard-navigation.common.js @@ -2221,7 +2221,7 @@ describe('empty state', () => { } function getEmptyStateFocusables() { - return [...getEmptyState().querySelectorAll('button')]; + return [...getEmptyState().querySelectorAll('input')]; } function getEmptyStateBody() { @@ -2233,7 +2233,7 @@ describe('empty state', () => {
- No items + No items
`); diff --git a/packages/grid/test/scrolling-mode.common.js b/packages/grid/test/scrolling-mode.common.js index 705b9895390..3cfe9d4c75e 100644 --- a/packages/grid/test/scrolling-mode.common.js +++ b/packages/grid/test/scrolling-mode.common.js @@ -1,13 +1,5 @@ import { expect } from '@vaadin/chai-plugins'; -import { - fixtureSync, - isDesktopSafari, - isFirefox, - listenOnce, - nextFrame, - nextRender, - nextResize, -} from '@vaadin/testing-helpers'; +import { fixtureSync, listenOnce, nextFrame, nextRender, nextResize } from '@vaadin/testing-helpers'; import { flushGrid, infiniteDataProvider, scrollToEnd } from './helpers.js'; describe('scrolling mode', () => { @@ -107,11 +99,7 @@ describe('scrolling mode', () => { expect(grid.getAttribute('overflow')).to.equal('top start left'); }); - // This test constantly fails in WebKit when the test is running on CI. - // It perhaps has something to do with the specific version of WebKit - // Playwright uses on CI. It sometimes fails also in Firefox on CI, - // but not as often as in WebKit. - (isDesktopSafari || isFirefox ? it.skip : it)('update on resize', async () => { + it('update on resize', async () => { grid.style.width = '200px'; await nextResize(grid); await nextFrame(); diff --git a/packages/icon/test/icon-font.common.js b/packages/icon/test/icon-font.common.js index b49a066e8ae..f67d624b7b9 100644 --- a/packages/icon/test/icon-font.common.js +++ b/packages/icon/test/icon-font.common.js @@ -47,12 +47,22 @@ describe('vaadin-icon - icon fonts', () => { }); it('should subtract vertical padding from height', async () => { + // Workaround to trigger cqh recalculation in Safari and Firefox + // https://github.com/vaadin/web-components/issues/8397 + async function iconRender(icon) { + icon.style.display = 'block'; + await nextResize(icon); + icon.style.display = ''; + } + icon.style.padding = '5px'; await nextResize(icon); + await iconRender(icon); expect(parseInt(getComputedStyle(icon, ':before').height)).to.be.closeTo(14, 1); icon.style.padding = '7px'; await nextResize(icon); + await iconRender(icon); expect(parseInt(getComputedStyle(icon, ':before').height)).to.be.closeTo(10, 1); }); }); diff --git a/packages/multi-select-combo-box/test/chips.test.js b/packages/multi-select-combo-box/test/chips.test.js index 57082e75260..37021fb6f15 100644 --- a/packages/multi-select-combo-box/test/chips.test.js +++ b/packages/multi-select-combo-box/test/chips.test.js @@ -309,6 +309,14 @@ describe('chips', () => { it('should not mark last chip on Backspace as focused when readonly', async () => { comboBox.readonly = true; + // Prevent navigating to about:blank in WebKit + inputElement.addEventListener( + 'keydown', + (e) => { + e.preventDefault(); + }, + { once: true }, + ); await sendKeys({ press: 'Backspace' }); const chips = getChips(comboBox); expect(chips[1].hasAttribute('focused')).to.be.false; diff --git a/packages/multi-select-combo-box/test/readonly.test.js b/packages/multi-select-combo-box/test/readonly.test.js index d72ef8783cf..9cd8faad5fe 100644 --- a/packages/multi-select-combo-box/test/readonly.test.js +++ b/packages/multi-select-combo-box/test/readonly.test.js @@ -11,7 +11,12 @@ describe('readonly', () => { describe('basic', () => { beforeEach(() => { - comboBox = fixtureSync(``); + comboBox = fixtureSync( + `
+ + +
`, + ).firstElementChild; comboBox.items = ['apple', 'banana', 'lemon', 'orange']; comboBox.selectedItems = ['apple', 'orange']; internal = comboBox.$.comboBox; diff --git a/packages/radio-group/test/radio-group-keyboard-navigation.common.js b/packages/radio-group/test/radio-group-keyboard-navigation.common.js index a9eea4b10ae..fe1fd64bc32 100644 --- a/packages/radio-group/test/radio-group-keyboard-navigation.common.js +++ b/packages/radio-group/test/radio-group-keyboard-navigation.common.js @@ -1,25 +1,26 @@ import { expect } from '@vaadin/chai-plugins'; -import { fixtureSync, isFirefox, nextFrame } from '@vaadin/testing-helpers'; +import { fixtureSync, nextFrame } from '@vaadin/testing-helpers'; import { sendKeys } from '@web/test-runner-commands'; describe('keyboard navigation', () => { let group, buttons; beforeEach(async () => { - group = fixtureSync(` - - - - - - `); + group = fixtureSync( + `
+ + + + + + +
`, + ).firstElementChild; await nextFrame(); buttons = [...group.querySelectorAll('vaadin-radio-button')]; }); describe('Tab', () => { - // There is a bug in the Playwright Firefox build that causes all the radio buttons - // to be available for focus when no radio button has been selected yet. - (isFirefox ? it.skip : it)('should leave focusable only the first button by default', async () => { + it('should leave focusable only the first button by default', async () => { // Focus on the 1st radio button. await sendKeys({ press: 'Tab' }); expect(buttons[0].hasAttribute('focused')).to.be.true; diff --git a/packages/radio-group/test/radio-group.common.js b/packages/radio-group/test/radio-group.common.js index 4613c4ba529..f33156e9381 100644 --- a/packages/radio-group/test/radio-group.common.js +++ b/packages/radio-group/test/radio-group.common.js @@ -194,13 +194,19 @@ describe('radio-group', () => { }); describe('focused state', () => { + let firstGlobalFocusable; + beforeEach(async () => { - group = fixtureSync(` - - - - - `); + [firstGlobalFocusable, group] = fixtureSync( + `
+ + + + + +
`, + ).children; + firstGlobalFocusable.focus(); await nextFrame(); buttons = [...group.querySelectorAll('vaadin-radio-button')]; }); diff --git a/packages/radio-group/test/validation.common.js b/packages/radio-group/test/validation.common.js index fe419b92cfc..46cc4505d9b 100644 --- a/packages/radio-group/test/validation.common.js +++ b/packages/radio-group/test/validation.common.js @@ -44,13 +44,19 @@ describe('validation', () => { }); describe('basic', () => { + let firstGlobalFocusable; + beforeEach(async () => { - group = fixtureSync(` - - - - - `); + [firstGlobalFocusable, group] = fixtureSync( + `
+ + + + + +
`, + ).children; + firstGlobalFocusable.focus(); await nextFrame(); validateSpy = sinon.spy(group, 'validate'); }); diff --git a/packages/rich-text-editor/test/a11y.common.js b/packages/rich-text-editor/test/a11y.common.js index cb17212bdb1..1857968c711 100644 --- a/packages/rich-text-editor/test/a11y.common.js +++ b/packages/rich-text-editor/test/a11y.common.js @@ -178,15 +178,15 @@ describe('accessibility', () => { it('should move focus to next element after esc followed by tab are pressed', async () => { const wrapper = fixtureSync(`
- +
`); await nextRender(); - const [rte, button] = wrapper.children; + const [rte, lastGlobalFocusable] = wrapper.children; editor = rte._editor; editor.focus(); await sendKeys({ press: 'Escape' }); await sendKeys({ press: 'Tab' }); - expect(document.activeElement).to.equal(button); + expect(document.activeElement).to.equal(lastGlobalFocusable); }); it('should move focus to the first toolbar button after esc followed by shift-tab are pressed', async () => { @@ -201,17 +201,18 @@ describe('accessibility', () => { it('should restore default Tab behavior after multiple Esc and then Tab', async () => { const wrapper = fixtureSync(`
- +
`); await nextRender(); - const [rte, button] = wrapper.children; + await nextRender(); + const [rte, lastGlobalFocusable] = wrapper.children; editor = rte._editor; editor.focus(); // Hitting Escape multiple times and Tab should move focus to next element await sendKeys({ press: 'Escape' }); await sendKeys({ press: 'Escape' }); await sendKeys({ press: 'Tab' }); - expect(document.activeElement).to.equal(button); + expect(document.activeElement).to.equal(lastGlobalFocusable); // Checking that default Tab behavior is restored editor.focus(); diff --git a/packages/rich-text-editor/test/attach.common.js b/packages/rich-text-editor/test/attach.common.js index b39f210d82c..1bfd72d37e3 100644 --- a/packages/rich-text-editor/test/attach.common.js +++ b/packages/rich-text-editor/test/attach.common.js @@ -50,6 +50,7 @@ describe('attach/detach', () => { rte.dangerouslySetHtmlValue('

Foo

'); rte.parentNode.shadowRoot.innerHTML = ''; await nextRender(); + await nextRender(); flushValueDebouncer(); expect(rte.htmlValue).to.equal('

Foo

'); }); diff --git a/packages/select/src/vaadin-select-base-mixin.js b/packages/select/src/vaadin-select-base-mixin.js index 5c2767737f7..5b9c6552f02 100644 --- a/packages/select/src/vaadin-select-base-mixin.js +++ b/packages/select/src/vaadin-select-base-mixin.js @@ -64,6 +64,7 @@ export const SelectBaseMixin = (superClass) => value: false, notify: true, reflectToAttribute: true, + sync: true, }, /** diff --git a/packages/select/test/validation.common.js b/packages/select/test/validation.common.js index 8aaccc63aee..df6618a484b 100644 --- a/packages/select/test/validation.common.js +++ b/packages/select/test/validation.common.js @@ -10,7 +10,12 @@ describe('validation', () => { describe('basic', () => { beforeEach(async () => { - select = fixtureSync(''); + select = fixtureSync( + `
+ + +
`, + ).firstElementChild; select.items = [ { label: 'Option 1', value: 'option-1' }, { label: 'Option 2', value: 'option-2' }, diff --git a/packages/virtual-list/test/drag-and-drop.common.js b/packages/virtual-list/test/drag-and-drop.common.js index 4c443504ab8..a3c46391020 100644 --- a/packages/virtual-list/test/drag-and-drop.common.js +++ b/packages/virtual-list/test/drag-and-drop.common.js @@ -38,6 +38,7 @@ describe('drag and drop', () => { async function assertDragSucceeds(draggedElement) { await dragElement(draggedElement); + await nextFrame(); expect(virtualList.$.items.style.display).to.equal(''); } diff --git a/yarn.lock b/yarn.lock index 8340f2aeaeb..0143296262d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6219,6 +6219,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + fsevents@^1.2.7: version "1.2.13" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" @@ -6227,11 +6232,6 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" @@ -10436,17 +10436,19 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -playwright-core@1.24.2: - version "1.24.2" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.24.2.tgz#47bc5adf3dcfcc297a5a7a332449c9009987db26" - integrity sha512-zfAoDoPY/0sDLsgSgLZwWmSCevIg1ym7CppBwllguVBNiHeixZkc1AdMuYUPZC6AdEYc4CxWEyLMBTw2YcmRrA== +playwright-core@1.49.1: + version "1.49.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.49.1.tgz#32c62f046e950f586ff9e35ed490a424f2248015" + integrity sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg== -playwright@^1.22.2: - version "1.24.2" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.24.2.tgz#51e60f128b386023e5ee83deca23453aaf73ba6d" - integrity sha512-iMWDLgaFRT+7dXsNeYwgl8nhLHsUrzFyaRVC+ftr++P1dVs70mPrFKBZrGp1fOKigHV9d1syC03IpPbqLKlPsg== +playwright@^1.22.2, playwright@^1.48.2: + version "1.49.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.49.1.tgz#830266dbca3008022afa7b4783565db9944ded7c" + integrity sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA== dependencies: - playwright-core "1.24.2" + playwright-core "1.49.1" + optionalDependencies: + fsevents "2.3.2" plexer@^2.0.0: version "2.0.0"