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(`
- Before
+
Open context menu
- After
+
`);
- [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 button 1 button 2
+ 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(`
- button
+
`);
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(`
- button
+
`);
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"