diff --git a/.gitignore b/.gitignore
index 06f9ddacd02..48d1ac96cff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,9 @@ packages/*/test/visual/screenshots/failed
packages/*/test/visual/*/screenshots/*/failed
packages/icons/test/visual/screenshots/failed
+# Generated Lit test files
+packages/*/test/*.generated.*
+
# Generated theme folders .ts files
packages/**/theme/**/*.d.ts
diff --git a/package.json b/package.json
index a8b768ab27a..21cce8430af 100644
--- a/package.json
+++ b/package.json
@@ -5,8 +5,8 @@
"scripts": {
"analyze": "polymer analyze packages/**/vaadin-*.js > analysis.json && node scripts/prepareDocs.js && node scripts/buildWebtypes.js && node scripts/generateLumoAutoCompleteCss.js && ./scripts/buildThemeTypings.sh",
"build:ts": "tsc --build tsconfig.build.json",
- "debug": "web-test-runner --watch",
- "debug:it": "web-test-runner --watch --config web-test-runner-it.config.js",
+ "debug": "yarn test --watch",
+ "debug:it": "yarn test --watch --config web-test-runner-it.config.js",
"dist": "rimraf dist && yarn analyze && rollup -c rollup.config.js && cp analysis.json dist",
"docs": "yarn analyze && web-dev-server --node-resolve --open",
"icons": "lerna run icons",
@@ -18,16 +18,16 @@
"prepare": "husky",
"serve:dist": "web-dev-server --app-index dist/index.html --open",
"start": "web-dev-server --node-resolve --open /dev",
- "test": "web-test-runner",
- "test:firefox": "web-test-runner --config web-test-runner-firefox.config.js",
- "test:it": "web-test-runner --config web-test-runner-it.config.js",
- "test:lumo": "web-test-runner --config web-test-runner-lumo.config.js",
- "test:material": "web-test-runner --config web-test-runner-material.config.js",
- "test:snapshots": "web-test-runner --config web-test-runner-snapshots.config.js",
- "test:webkit": "web-test-runner --config web-test-runner-webkit.config.js",
- "update:lumo": "TEST_ENV=update web-test-runner --config web-test-runner-lumo.config.js",
- "update:material": "TEST_ENV=update web-test-runner --config web-test-runner-material.config.js",
- "update:snapshots": "web-test-runner --config web-test-runner-snapshots.config.js --update-snapshots"
+ "test": "node scripts/generateLitTests.js && web-test-runner",
+ "test:firefox": "yarn test --config web-test-runner-firefox.config.js",
+ "test:it": "yarn test --config web-test-runner-it.config.js",
+ "test:lumo": "yarn test --config web-test-runner-lumo.config.js",
+ "test:material": "yarn test --config web-test-runner-material.config.js",
+ "test:snapshots": "yarn test --config web-test-runner-snapshots.config.js",
+ "test:webkit": "yarn test --config web-test-runner-webkit.config.js",
+ "update:lumo": "TEST_ENV=update yarn test --config web-test-runner-lumo.config.js",
+ "update:material": "TEST_ENV=update yarn test --config web-test-runner-material.config.js",
+ "update:snapshots": "yarn test --config web-test-runner-snapshots.config.js --update-snapshots"
},
"devDependencies": {
"@fontsource/roboto": "^4.5.8",
diff --git a/packages/a11y-base/test/focus-trap-controller.test.js b/packages/a11y-base/test/focus-trap-controller.test.js
index c9a3bbb24f3..67539939cee 100644
--- a/packages/a11y-base/test/focus-trap-controller.test.js
+++ b/packages/a11y-base/test/focus-trap-controller.test.js
@@ -58,9 +58,7 @@ async function tab() {
}
async function shiftTab() {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
return document.activeElement;
}
diff --git a/packages/app-layout/test/helpers.js b/packages/app-layout/test/helpers.js
index 1e39d559854..07809134714 100644
--- a/packages/app-layout/test/helpers.js
+++ b/packages/app-layout/test/helpers.js
@@ -9,7 +9,5 @@ export async function tab() {
}
export async function shiftTab() {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
}
diff --git a/packages/button/test/button-lit.test.ts b/packages/button/test/button-lit.test.ts
deleted file mode 100644
index 78e9b5d98bb..00000000000
--- a/packages/button/test/button-lit.test.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../src/vaadin-lit-button.js';
-import './button.common.js';
diff --git a/packages/button/test/button-polymer.test.ts b/packages/button/test/button-polymer.test.ts
deleted file mode 100644
index 1f22c1d5226..00000000000
--- a/packages/button/test/button-polymer.test.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-button.js';
-import './button.common.js';
diff --git a/packages/button/test/button.common.ts b/packages/button/test/button.test.ts
similarity index 99%
rename from packages/button/test/button.common.ts
rename to packages/button/test/button.test.ts
index 59cfc3b0f37..dd72e60858c 100644
--- a/packages/button/test/button.common.ts
+++ b/packages/button/test/button.test.ts
@@ -2,6 +2,7 @@ import { expect } from '@vaadin/chai-plugins';
import { resetMouse, sendKeys, sendMouse } from '@vaadin/test-runner-commands';
import { fire, fixtureSync, middleOfNode, nextRender, nextUpdate } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-button.js';
import type { Button } from '../vaadin-button.js';
describe('vaadin-button', () => {
diff --git a/packages/checkbox-group/test/checkbox-group.common.js b/packages/checkbox-group/test/checkbox-group.common.js
index d53b29967d1..e91bc8335fc 100644
--- a/packages/checkbox-group/test/checkbox-group.common.js
+++ b/packages/checkbox-group/test/checkbox-group.common.js
@@ -287,9 +287,7 @@ describe('vaadin-checkbox-group', () => {
await sendKeys({ press: 'Tab' });
// Move focus out of the checkbox group.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(checkboxes[0].hasAttribute('focused')).to.be.false;
expect(group.hasAttribute('focused')).to.be.false;
diff --git a/packages/checkbox-group/test/validation.common.js b/packages/checkbox-group/test/validation.common.js
index a109f6ea3f3..a383c8d875a 100644
--- a/packages/checkbox-group/test/validation.common.js
+++ b/packages/checkbox-group/test/validation.common.js
@@ -82,9 +82,7 @@ describe('validation', () => {
expect(validateSpy.called).to.be.false;
// Move focus out of the checkbox group.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(validateSpy.calledOnce).to.be.true;
});
@@ -132,9 +130,7 @@ describe('validation', () => {
await sendKeys({ press: 'Tab' });
// Move focus out of the checkbox group.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(validateSpy.called).to.be.false;
});
diff --git a/packages/checkbox/test/validation.common.js b/packages/checkbox/test/validation.common.js
index 44d3ef60460..749c02ff9b4 100644
--- a/packages/checkbox/test/validation.common.js
+++ b/packages/checkbox/test/validation.common.js
@@ -108,9 +108,7 @@ describe('validation', () => {
await sendKeys({ press: 'Tab' });
// Blur the checkbox.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(validateSpy.called).to.be.false;
});
diff --git a/packages/component-base/test/virtualizer-reorder-elements.test.js b/packages/component-base/test/virtualizer-reorder-elements.test.js
index 22c47705191..c34071b2eb5 100644
--- a/packages/component-base/test/virtualizer-reorder-elements.test.js
+++ b/packages/component-base/test/virtualizer-reorder-elements.test.js
@@ -152,9 +152,7 @@ describe('reorder elements', () => {
// Tab upwards
for (let i = tabToIndex - 1; i >= 0; i--) {
await nextFrame();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
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 54df497ef16..a7f6ffeb0b3 100644
--- a/packages/context-menu/test/a11y.common.js
+++ b/packages/context-menu/test/a11y.common.js
@@ -79,9 +79,7 @@ describe('a11y', () => {
it('should move focus to the prev element outside the menu on Shift+Tab pressed inside', async () => {
contextMenuButton.click();
await nextRender();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(getDeepActiveElement()).to.equal(firstGlobalFocusable);
});
diff --git a/packages/dashboard/test/dashboard-keyboard.test.ts b/packages/dashboard/test/dashboard-keyboard.test.ts
index 8441fc8d8fb..d0b4a6bba6e 100644
--- a/packages/dashboard/test/dashboard-keyboard.test.ts
+++ b/packages/dashboard/test/dashboard-keyboard.test.ts
@@ -88,9 +88,7 @@ describe('dashboard - keyboard interaction', () => {
await sendKeys({ press: 'Space' });
// Focus the focus-button with shift + tab
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
// Click the focus-button
await sendKeys({ press: 'Space' });
@@ -158,9 +156,7 @@ describe('dashboard - keyboard interaction', () => {
it('should blur deselected widget on shift tab', async () => {
const widget = getElementFromCell(dashboard, 0, 0)!;
await sendKeys({ press: 'Escape' });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(widget.hasAttribute('selected')).to.be.false;
expect(widget.hasAttribute('focused')).to.be.false;
expect(widget.contains(document.activeElement)).to.be.false;
@@ -233,29 +229,23 @@ describe('dashboard - keyboard interaction', () => {
it('should increase the widget row span on shift + arrow down', async () => {
// Set minimum row height to enable vertical resizing
setMinimumRowHeight(dashboard, 100);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'ArrowDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+ArrowDown' });
expect((dashboard.items[0] as DashboardItem).rowspan).to.equal(2);
});
it('should decrease the widget row span on shift + arrow up', async () => {
// Set minimum row height to enable vertical resizing
setMinimumRowHeight(dashboard, 100);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'ArrowDown' });
+ await sendKeys({ press: 'Shift+ArrowDown' });
await updateComplete(dashboard);
- await sendKeys({ press: 'ArrowUp' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+ArrowUp' });
expect((dashboard.items[0] as DashboardItem).rowspan).to.equal(1);
});
it('should dispatch an item resized event shift + arrow down', async () => {
const spy = sinon.spy();
dashboard.addEventListener('dashboard-item-resized', spy);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'ArrowDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+ArrowDown' });
expect(spy.calledOnce).to.be.true;
expect(spy.firstCall.args[0].detail.item).to.eql({ id: 0 });
expect(spy.firstCall.args[0].detail.items).to.eql(dashboard.items);
@@ -266,23 +256,17 @@ describe('dashboard - keyboard interaction', () => {
const spy = sinon.spy();
// @ts-ignore unexpected event type
dashboard.addEventListener('item-resize', spy);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'ArrowDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+ArrowDown' });
expect(spy.called).to.be.false;
});
it('should not increase the widget row span on shift + arrow down if row min height is not defined', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'ArrowDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+ArrowDown' });
expect((dashboard.items[0] as DashboardItem).rowspan).to.not.equal(2);
});
it('should not move the widget on arrow down if ctrl key is pressed', async () => {
- await sendKeys({ down: 'Control' });
- await sendKeys({ press: 'ArrowDown' });
- await sendKeys({ up: 'Control' });
+ await sendKeys({ press: 'Control+ArrowDown' });
expect(dashboard.items).to.eql([{ id: 0 }, { id: 1 }, { items: [{ id: 2 }, { id: 3 }] }]);
});
@@ -341,9 +325,7 @@ describe('dashboard - keyboard interaction', () => {
it('should release focus trap on deselect', async () => {
const widget = getElementFromCell(dashboard, 0, 0)!;
await sendKeys({ press: 'Escape' });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(widget.contains(document.activeElement)).to.be.false;
});
@@ -369,18 +351,14 @@ describe('dashboard - keyboard interaction', () => {
});
it('should increase the widget column span on shift + arrow forwards', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: arrowForwards });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: `Shift+${arrowForwards}` });
expect((dashboard.items[0] as DashboardItem).colspan).to.equal(2);
});
it('should decrease the widget column span on shift + arrow backwards', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: arrowForwards });
+ await sendKeys({ press: `Shift+${arrowForwards}` });
await updateComplete(dashboard);
- await sendKeys({ press: arrowBackwards });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: `Shift+${arrowBackwards}` });
expect((dashboard.items[0] as DashboardItem).colspan).to.equal(1);
});
});
@@ -412,9 +390,7 @@ describe('dashboard - keyboard interaction', () => {
it('should blur deselected selected on shift tab', async () => {
await sendKeys({ press: 'Escape' });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(section.hasAttribute('selected')).to.be.false;
expect(section.hasAttribute('focused')).to.be.false;
expect(section.contains(document.activeElement)).to.be.false;
@@ -446,16 +422,12 @@ describe('dashboard - keyboard interaction', () => {
it('should release focus trap on deselect', async () => {
await sendKeys({ press: 'Escape' });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(section.contains(document.activeElement)).to.be.false;
});
it('should not increase the section row span on shift + arrow down', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'ArrowDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+ArrowDown' });
expect(dashboard.items).to.eql([{ id: 0 }, { id: 1 }, { items: [{ id: 2 }, { id: 3 }] }]);
});
});
@@ -565,10 +537,8 @@ describe('dashboard - keyboard interaction', () => {
await sendKeys({ press: 'Space' });
await nextFrame();
// Focus backward button, click it
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
+ await sendKeys({ press: 'Shift+Tab' });
await nextFrame();
expect(getMoveBackwardButton(widget).matches(':focus')).to.be.true;
@@ -598,10 +568,8 @@ describe('dashboard - keyboard interaction', () => {
await sendKeys({ press: 'Space' });
await nextFrame();
// Focus backwards button, click it
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
+ await sendKeys({ press: 'Shift+Tab' });
await sendKeys({ press: 'Space' });
await nextFrame();
diff --git a/packages/date-picker/test/fullscreen.common.js b/packages/date-picker/test/fullscreen.common.js
index 2dc7b5543aa..08e8d670c27 100644
--- a/packages/date-picker/test/fullscreen.common.js
+++ b/packages/date-picker/test/fullscreen.common.js
@@ -157,9 +157,7 @@ describe('fullscreen mode', () => {
it('should move focus to Cancel button on date cell Shift Tab', async () => {
const spy = sinon.spy(overlayContent._cancelButton, 'focus');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(spy.calledOnce).to.be.true;
});
@@ -169,9 +167,7 @@ describe('fullscreen mode', () => {
const spy = sinon.spy(cell, 'focus');
// Move focus to Cancel button
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await sendKeys({ press: 'Tab' });
diff --git a/packages/date-picker/test/keyboard-input.common.js b/packages/date-picker/test/keyboard-input.common.js
index 9c7dbd05693..a1b1a79c437 100644
--- a/packages/date-picker/test/keyboard-input.common.js
+++ b/packages/date-picker/test/keyboard-input.common.js
@@ -258,9 +258,7 @@ describe('keyboard', () => {
const spy = sinon.spy(input, 'focus');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(spy.calledOnce).to.be.true;
});
@@ -273,9 +271,7 @@ describe('keyboard', () => {
});
it('should move focus to Cancel button on input Shift Tab', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(overlayContent._cancelButton.hasAttribute('focused')).to.be.true;
});
@@ -283,9 +279,7 @@ describe('keyboard', () => {
const spy = sinon.spy(overlayContent, 'revealDate');
overlayContent._todayButton.focus();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await aTimeout(1);
expect(spy.called).to.be.true;
@@ -328,9 +322,7 @@ describe('keyboard', () => {
overlayContent._todayButton.focus();
// Move focus to the calendar
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await waitForScrollToFinish(datePicker);
diff --git a/packages/date-picker/test/keyboard-navigation.common.js b/packages/date-picker/test/keyboard-navigation.common.js
index 685a2daba44..08ce25e56e6 100644
--- a/packages/date-picker/test/keyboard-navigation.common.js
+++ b/packages/date-picker/test/keyboard-navigation.common.js
@@ -342,17 +342,13 @@ describe('keyboard navigation', () => {
});
it('should focus next year with shift and pagedown', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageDown' });
await waitForScrollToFinish(overlay);
expect(overlay.focusedDate).to.eql(new Date(2001, 0, 1));
});
it('should focus previous year with shift and pageup', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageUp' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageUp' });
await waitForScrollToFinish(overlay);
expect(overlay.focusedDate).to.eql(new Date(1999, 0, 1));
});
@@ -361,9 +357,7 @@ describe('keyboard navigation', () => {
const spy = sinon.spy();
overlay.addEventListener('scroll-animation-finished', spy);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageUp' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageUp' });
await waitForScrollToFinish(overlay);
const e = spy.firstCall.args[0];
@@ -382,9 +376,7 @@ describe('keyboard navigation', () => {
const spy = sinon.spy();
overlay.addEventListener('scroll-animation-finished', spy);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageDown' });
await waitForScrollToFinish(overlay);
const e = spy.firstCall.args[0];
@@ -455,9 +447,7 @@ describe('keyboard navigation', () => {
it('should focus max date with shift and pagedown', async () => {
overlay.maxDate = new Date(2000, 11, 28);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageDown' });
await waitForScrollToFinish(overlay);
const cell = getFocusedCell(overlay);
@@ -467,9 +457,7 @@ describe('keyboard navigation', () => {
it('should focus min date with shift and pageup', async () => {
overlay.minDate = new Date(1999, 5, 3);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageUp' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageUp' });
await waitForScrollToFinish(overlay);
const cell = getFocusedCell(overlay);
@@ -501,9 +489,7 @@ describe('keyboard navigation', () => {
overlay.minDate = new Date(1999, 11, 25);
await nextRender(overlay);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageUp' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageUp' });
await waitForScrollToFinish(overlay);
const cell = getFocusedCell(overlay);
@@ -515,9 +501,7 @@ describe('keyboard navigation', () => {
overlay.maxDate = new Date(1999, 11, 25);
await nextRender(overlay);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'PageDown' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+PageDown' });
await waitForScrollToFinish(overlay);
const cell = getFocusedCell(overlay);
diff --git a/packages/date-time-picker/test/validation.common.js b/packages/date-time-picker/test/validation.common.js
index 5de7229c119..e3aee4cb42d 100644
--- a/packages/date-time-picker/test/validation.common.js
+++ b/packages/date-time-picker/test/validation.common.js
@@ -101,9 +101,7 @@ const fixtures = {
await aTimeout(1);
// Move focus to date-picker
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(validateSpy.called).to.be.false;
});
diff --git a/packages/field-highlighter/test/field-components.test.js b/packages/field-highlighter/test/field-components.test.js
index 1e7c2ada313..40d355bae18 100644
--- a/packages/field-highlighter/test/field-components.test.js
+++ b/packages/field-highlighter/test/field-components.test.js
@@ -453,18 +453,14 @@ describe('field components', () => {
it('should dispatch vaadin-highlight-hide event on Shift Tab to date picker', async () => {
time.focus();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(hideSpy.callCount).to.equal(1);
expect(hideSpy.firstCall.args[0].detail.fieldIndex).to.equal(1);
});
it('should dispatch second vaadin-highlight-show event on Shift Tab to date picker', async () => {
time.focus();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(showSpy.callCount).to.equal(2);
expect(showSpy.getCalls()[1].args[0].detail.fieldIndex).to.equal(0);
});
diff --git a/packages/grid-pro/test/edit-column.common.js b/packages/grid-pro/test/edit-column.common.js
index 0dc00ea4494..2edee8178c2 100644
--- a/packages/grid-pro/test/edit-column.common.js
+++ b/packages/grid-pro/test/edit-column.common.js
@@ -63,16 +63,12 @@ describe('edit column', () => {
await nextFrame();
// Press Shift + Tab to edit the select cell
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(getCellEditor(selectCell)).to.be.ok;
await nextFrame();
// Press Shift + Tab to edit the text cell
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(getCellEditor(textCell)).to.be.ok;
});
});
@@ -148,9 +144,7 @@ describe('edit column', () => {
const firstCell = getContainerCell(grid.$.items, 1, 1);
dblclick(firstCell._content);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(grid.$.table.scrollLeft).to.closeTo(1, 1);
});
@@ -458,22 +452,16 @@ describe('edit column', () => {
await sendKeys({ press: 'Enter' });
expect(getCellEditor(cell)).to.be.ok;
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
cell = getContainerCell(grid.$.items, 3, 1);
expect(getCellEditor(cell)).to.be.ok;
// Should skip non-editable rows
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
cell = getContainerCell(grid.$.items, 1, 3);
expect(getCellEditor(cell)).to.be.ok;
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
cell = getContainerCell(grid.$.items, 1, 2);
expect(getCellEditor(cell)).to.be.ok;
});
@@ -514,9 +502,7 @@ describe('edit column', () => {
expect(getCellEditor(cell)).to.be.ok;
expect(grid.querySelector('vaadin-grid-pro-edit-text-field')).to.be.ok;
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(grid.querySelector('vaadin-grid-pro-edit-text-field')).to.not.be.ok;
const target = cell._focusButton || cell;
expect(grid.shadowRoot.activeElement).to.equal(target);
@@ -546,9 +532,7 @@ describe('edit column', () => {
await sendKeys({ press: 'Enter' });
expect(getCellEditor(cell)).to.be.ok;
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Enter' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Enter' });
cell = getContainerCell(grid.$.items, 1, 1);
expect(getCellEditor(cell)).to.be.ok;
});
@@ -574,9 +558,7 @@ describe('edit column', () => {
expect(getCellEditor(cell)).to.be.ok;
expect(grid.querySelector('vaadin-grid-pro-edit-text-field')).to.be.ok;
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Enter' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Enter' });
expect(grid.querySelector('vaadin-grid-pro-edit-text-field')).to.not.be.ok;
const target = cell._focusButton || cell;
expect(grid.shadowRoot.activeElement).to.equal(target);
diff --git a/packages/grid-pro/test/keyboard-navigation.common.js b/packages/grid-pro/test/keyboard-navigation.common.js
index c7ae7cc5785..825e0610ba3 100644
--- a/packages/grid-pro/test/keyboard-navigation.common.js
+++ b/packages/grid-pro/test/keyboard-navigation.common.js
@@ -56,9 +56,7 @@ describe('keyboard navigation', () => {
const secondCell = getContainerCell(grid.$.items, 1, 0);
const spy = sinon.spy(secondCell, 'focus');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(spy.calledOnce).to.be.true;
});
@@ -80,9 +78,7 @@ describe('keyboard navigation', () => {
const secondCell = getContainerCell(grid.$.items, 1, 1);
const spy = sinon.spy(secondCell, 'focus');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(spy.calledOnce).to.be.true;
});
@@ -115,9 +111,7 @@ describe('keyboard navigation', () => {
const secondCell = getContainerCell(grid.$.items, 0, 0);
const spy = sinon.spy(secondCell, 'focus');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Enter' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Enter' });
expect(spy.calledOnce).to.be.true;
});
@@ -126,9 +120,7 @@ describe('keyboard navigation', () => {
firstCell.focus();
await sendKeys({ press: 'Enter' });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Enter' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Enter' });
expect(getCellEditor(firstCell)).to.be.not.ok;
});
@@ -190,9 +182,7 @@ describe('keyboard navigation', () => {
dblclick(firstCell._content);
const secondCell = getContainerCell(grid.$.items, 1, 0);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(getCellEditor(secondCell)).to.be.ok;
});
@@ -210,9 +200,7 @@ describe('keyboard navigation', () => {
dblclick(firstCell._content);
const secondCell = getContainerCell(grid.$.items, 1, 1);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(getCellEditor(secondCell)).to.be.ok;
});
@@ -242,9 +230,7 @@ describe('keyboard navigation', () => {
await sendKeys({ press: 'Enter' });
const secondCell = getContainerCell(grid.$.items, 0, 0);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Enter' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Enter' });
expect(getCellEditor(secondCell)).to.be.ok;
});
@@ -263,9 +249,7 @@ describe('keyboard navigation', () => {
const firstCell = getContainerCell(grid.$.items, 1, 0);
dblclick(firstCell._content);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Enter' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Enter' });
expect(getCellEditor(firstCell)).to.be.not.ok;
});
});
diff --git a/packages/grid/test/accessibility-lit.test.js b/packages/grid/test/accessibility-lit.test.js
deleted file mode 100644
index 6d07f9aa142..00000000000
--- a/packages/grid/test/accessibility-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './accessibility.common.js';
diff --git a/packages/grid/test/accessibility-polymer.test.js b/packages/grid/test/accessibility-polymer.test.js
deleted file mode 100644
index d0132c10b48..00000000000
--- a/packages/grid/test/accessibility-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './accessibility.common.js';
diff --git a/packages/grid/test/accessibility.common.js b/packages/grid/test/accessibility.test.js
similarity index 99%
rename from packages/grid/test/accessibility.common.js
rename to packages/grid/test/accessibility.test.js
index e2578656caf..cf6a1bf83cb 100644
--- a/packages/grid/test/accessibility.common.js
+++ b/packages/grid/test/accessibility.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
+import '../all-imports.js';
import { flushGrid } from './helpers.js';
describe('accessibility', () => {
diff --git a/packages/grid/test/array-data-provider-lit.test.js b/packages/grid/test/array-data-provider-lit.test.js
deleted file mode 100644
index bc92c6d304e..00000000000
--- a/packages/grid/test/array-data-provider-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './array-data-provider.common.js';
diff --git a/packages/grid/test/array-data-provider-polymer.test.js b/packages/grid/test/array-data-provider-polymer.test.js
deleted file mode 100644
index 59af8042566..00000000000
--- a/packages/grid/test/array-data-provider-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './array-data-provider.common.js';
diff --git a/packages/grid/test/array-data-provider.common.js b/packages/grid/test/array-data-provider.test.js
similarity index 99%
rename from packages/grid/test/array-data-provider.common.js
rename to packages/grid/test/array-data-provider.test.js
index 9f1606b1a61..b0d82b11f7d 100644
--- a/packages/grid/test/array-data-provider.common.js
+++ b/packages/grid/test/array-data-provider.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { click, fixtureSync, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { flushGrid, getBodyCellContent, getRows } from './helpers.js';
describe('array data provider', () => {
diff --git a/packages/grid/test/basic-lit.test.js b/packages/grid/test/basic-lit.test.js
deleted file mode 100644
index 3c2dd168d97..00000000000
--- a/packages/grid/test/basic-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/vaadin-lit-grid.js';
-import './basic.common.js';
diff --git a/packages/grid/test/basic-polymer.test.js b/packages/grid/test/basic-polymer.test.js
deleted file mode 100644
index dd340b6c36a..00000000000
--- a/packages/grid/test/basic-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './basic.common.js';
diff --git a/packages/grid/test/basic.common.js b/packages/grid/test/basic.test.js
similarity index 99%
rename from packages/grid/test/basic.common.js
rename to packages/grid/test/basic.test.js
index 9372d3b2ef7..00565589237 100644
--- a/packages/grid/test/basic.common.js
+++ b/packages/grid/test/basic.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, nextFrame, oneEvent } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import {
flushGrid,
getBodyCellContent,
diff --git a/packages/grid/test/column-auto-width-lit.test.js b/packages/grid/test/column-auto-width-lit.test.js
deleted file mode 100644
index b0a896af7e9..00000000000
--- a/packages/grid/test/column-auto-width-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './column-auto-width.common.js';
diff --git a/packages/grid/test/column-auto-width-polymer.test.js b/packages/grid/test/column-auto-width-polymer.test.js
deleted file mode 100644
index 49f817843d8..00000000000
--- a/packages/grid/test/column-auto-width-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './column-auto-width.common.js';
diff --git a/packages/grid/test/column-auto-width.common.js b/packages/grid/test/column-auto-width.test.js
similarity index 99%
rename from packages/grid/test/column-auto-width.common.js
rename to packages/grid/test/column-auto-width.test.js
index 2f78782f282..40614945e02 100644
--- a/packages/grid/test/column-auto-width.common.js
+++ b/packages/grid/test/column-auto-width.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, nextFrame, oneEvent } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { flushGrid, getContainerCell, getHeaderCell } from './helpers.js';
function getCellIntrinsicWidth(cell) {
diff --git a/packages/grid/test/column-group-lit.test.js b/packages/grid/test/column-group-lit.test.js
deleted file mode 100644
index 66f9784951e..00000000000
--- a/packages/grid/test/column-group-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './column-group.common.js';
diff --git a/packages/grid/test/column-group-polymer.test.js b/packages/grid/test/column-group-polymer.test.js
deleted file mode 100644
index 71032c498eb..00000000000
--- a/packages/grid/test/column-group-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './column-group.common.js';
diff --git a/packages/grid/test/column-group.common.js b/packages/grid/test/column-group.test.js
similarity index 99%
rename from packages/grid/test/column-group.common.js
rename to packages/grid/test/column-group.test.js
index ad7a40eda45..41c71b45283 100644
--- a/packages/grid/test/column-group.common.js
+++ b/packages/grid/test/column-group.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame, nextRender } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { flushGrid, getContainerCell } from './helpers.js';
describe('column group', () => {
diff --git a/packages/grid/test/column-groups-lit.test.js b/packages/grid/test/column-groups-lit.test.js
deleted file mode 100644
index 5e9fc601bdc..00000000000
--- a/packages/grid/test/column-groups-lit.test.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import '../theme/lumo/vaadin-grid-styles.js';
-import '../src/vaadin-lit-grid.js';
-import '../src/vaadin-lit-grid-column-group.js';
-import './column-groups.common.js';
diff --git a/packages/grid/test/column-groups-polymer.test.js b/packages/grid/test/column-groups-polymer.test.js
deleted file mode 100644
index 76ec52bf5ab..00000000000
--- a/packages/grid/test/column-groups-polymer.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../vaadin-grid.js';
-import '../vaadin-grid-column-group.js';
-import './column-groups.common.js';
diff --git a/packages/grid/test/column-groups.common.js b/packages/grid/test/column-groups.test.js
similarity index 99%
rename from packages/grid/test/column-groups.common.js
rename to packages/grid/test/column-groups.test.js
index 56956acd71e..4b7d3377a0b 100644
--- a/packages/grid/test/column-groups.common.js
+++ b/packages/grid/test/column-groups.test.js
@@ -1,6 +1,8 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame, nextRender, nextResize } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
+import '../vaadin-grid-column-group.js';
import {
attributeRenderer,
flushGrid,
diff --git a/packages/grid/test/column-lit.test.js b/packages/grid/test/column-lit.test.js
deleted file mode 100644
index 7a3ec09ea98..00000000000
--- a/packages/grid/test/column-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './column.common.js';
diff --git a/packages/grid/test/column-polymer.test.js b/packages/grid/test/column-polymer.test.js
deleted file mode 100644
index 481374932d4..00000000000
--- a/packages/grid/test/column-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './column.common.js';
diff --git a/packages/grid/test/column-rendering-lit.test.js b/packages/grid/test/column-rendering-lit.test.js
deleted file mode 100644
index cde7252d24c..00000000000
--- a/packages/grid/test/column-rendering-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './column-rendering.common.js';
diff --git a/packages/grid/test/column-rendering-polymer.test.js b/packages/grid/test/column-rendering-polymer.test.js
deleted file mode 100644
index 3dad79f2636..00000000000
--- a/packages/grid/test/column-rendering-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './column-rendering.common.js';
diff --git a/packages/grid/test/column-rendering.common.js b/packages/grid/test/column-rendering.test.js
similarity index 99%
rename from packages/grid/test/column-rendering.common.js
rename to packages/grid/test/column-rendering.test.js
index 7b125bfb93a..69f80af67a7 100644
--- a/packages/grid/test/column-rendering.common.js
+++ b/packages/grid/test/column-rendering.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, keyDownOn, nextFrame, nextResize, oneEvent } from '@vaadin/testing-helpers';
import Sinon from 'sinon';
+import '../all-imports.js';
import { flushGrid, getCellContent, getHeaderCellContent } from './helpers.js';
['ltr', 'rtl'].forEach((dir) => {
diff --git a/packages/grid/test/column-reordering-lit.test.js b/packages/grid/test/column-reordering-lit.test.js
deleted file mode 100644
index c5673d161c4..00000000000
--- a/packages/grid/test/column-reordering-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './column-reordering.common.js';
diff --git a/packages/grid/test/column-reordering-polymer.test.js b/packages/grid/test/column-reordering-polymer.test.js
deleted file mode 100644
index f7bfd7b2f38..00000000000
--- a/packages/grid/test/column-reordering-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './column-reordering.common.js';
diff --git a/packages/grid/test/column-reordering.common.js b/packages/grid/test/column-reordering.test.js
similarity index 99%
rename from packages/grid/test/column-reordering.common.js
rename to packages/grid/test/column-reordering.test.js
index 2d7579191d0..558101eb816 100644
--- a/packages/grid/test/column-reordering.common.js
+++ b/packages/grid/test/column-reordering.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { isTouch } from '@vaadin/component-base/src/browser-utils.js';
import {
attributeRenderer,
diff --git a/packages/grid/test/column-resizing-lit.test.js b/packages/grid/test/column-resizing-lit.test.js
deleted file mode 100644
index deeea2a180f..00000000000
--- a/packages/grid/test/column-resizing-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './column-resizing.common.js';
diff --git a/packages/grid/test/column-resizing-polymer.test.js b/packages/grid/test/column-resizing-polymer.test.js
deleted file mode 100644
index 6824c7d7463..00000000000
--- a/packages/grid/test/column-resizing-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './column-resizing.common.js';
diff --git a/packages/grid/test/column-resizing.common.js b/packages/grid/test/column-resizing.test.js
similarity index 99%
rename from packages/grid/test/column-resizing.common.js
rename to packages/grid/test/column-resizing.test.js
index 0aee5e22ea4..538287790e2 100644
--- a/packages/grid/test/column-resizing.common.js
+++ b/packages/grid/test/column-resizing.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, listenOnce, nextFrame, nextRender } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import {
dragAndDropOver,
fire,
diff --git a/packages/grid/test/column.common.js b/packages/grid/test/column.test.js
similarity index 99%
rename from packages/grid/test/column.common.js
rename to packages/grid/test/column.test.js
index 0c4aa154daa..df3a96963e1 100644
--- a/packages/grid/test/column.common.js
+++ b/packages/grid/test/column.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame, nextRender } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import {
flushGrid,
diff --git a/packages/grid/test/data-provider-lit.test.js b/packages/grid/test/data-provider-lit.test.js
deleted file mode 100644
index 28b5cbc55b4..00000000000
--- a/packages/grid/test/data-provider-lit.test.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import './data-provider.styles.js';
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './data-provider.common.js';
diff --git a/packages/grid/test/data-provider-polymer.test.js b/packages/grid/test/data-provider-polymer.test.js
deleted file mode 100644
index 691bb423d33..00000000000
--- a/packages/grid/test/data-provider-polymer.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import './data-provider.styles.js';
-import '../all-imports.js';
-import './data-provider.common.js';
diff --git a/packages/grid/test/data-provider.common.js b/packages/grid/test/data-provider.test.js
similarity index 99%
rename from packages/grid/test/data-provider.common.js
rename to packages/grid/test/data-provider.test.js
index 2241c56304d..2d6eaaa8337 100644
--- a/packages/grid/test/data-provider.common.js
+++ b/packages/grid/test/data-provider.test.js
@@ -1,6 +1,8 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import './data-provider.styles.js';
+import '../all-imports.js';
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import {
flushGrid,
diff --git a/packages/grid/test/deprecated-api-lit.test.js b/packages/grid/test/deprecated-api-lit.test.js
deleted file mode 100644
index ef3f71a335d..00000000000
--- a/packages/grid/test/deprecated-api-lit.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../src/vaadin-lit-grid.js';
-import './deprecated-api.common.js';
diff --git a/packages/grid/test/deprecated-api-polymer.test.js b/packages/grid/test/deprecated-api-polymer.test.js
deleted file mode 100644
index 8d9416d8e9e..00000000000
--- a/packages/grid/test/deprecated-api-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './deprecated-api.common.js';
diff --git a/packages/grid/test/deprecated-api.common.js b/packages/grid/test/deprecated-api.test.js
similarity index 99%
rename from packages/grid/test/deprecated-api.common.js
rename to packages/grid/test/deprecated-api.test.js
index 87459beca43..5c8c09d2d93 100644
--- a/packages/grid/test/deprecated-api.common.js
+++ b/packages/grid/test/deprecated-api.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { flushGrid } from './helpers.js';
describe('deprecated API', () => {
diff --git a/packages/grid/test/disabled-lit.test.js b/packages/grid/test/disabled-lit.test.js
deleted file mode 100644
index 80ad4b33e73..00000000000
--- a/packages/grid/test/disabled-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './disabled.common.js';
diff --git a/packages/grid/test/disabled-polymer.test.js b/packages/grid/test/disabled-polymer.test.js
deleted file mode 100644
index e5f96be0906..00000000000
--- a/packages/grid/test/disabled-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './disabled.common.js';
diff --git a/packages/grid/test/disabled.common.js b/packages/grid/test/disabled.test.js
similarity index 95%
rename from packages/grid/test/disabled.common.js
rename to packages/grid/test/disabled.test.js
index aa03d182745..78e515516f5 100644
--- a/packages/grid/test/disabled.common.js
+++ b/packages/grid/test/disabled.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { sendKeys } from '@vaadin/test-runner-commands';
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
+import '../all-imports.js';
import { flushGrid } from './helpers.js';
describe('disabled', () => {
@@ -82,9 +83,7 @@ describe('disabled', () => {
it('should skip disabled grid when navigating on Shift Tab', async () => {
inputAfter.focus();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(document.activeElement).to.equal(inputBefore);
});
diff --git a/packages/grid/test/drag-and-drop-lit.test.js b/packages/grid/test/drag-and-drop-lit.test.js
deleted file mode 100644
index 66eed4163f7..00000000000
--- a/packages/grid/test/drag-and-drop-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './drag-and-drop.common.js';
diff --git a/packages/grid/test/drag-and-drop-polymer.test.js b/packages/grid/test/drag-and-drop-polymer.test.js
deleted file mode 100644
index b78798e6c29..00000000000
--- a/packages/grid/test/drag-and-drop-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './drag-and-drop.common.js';
diff --git a/packages/grid/test/drag-and-drop.common.js b/packages/grid/test/drag-and-drop.test.js
similarity index 99%
rename from packages/grid/test/drag-and-drop.common.js
rename to packages/grid/test/drag-and-drop.test.js
index 9d09d950001..3ecd344665f 100644
--- a/packages/grid/test/drag-and-drop.common.js
+++ b/packages/grid/test/drag-and-drop.test.js
@@ -2,6 +2,7 @@ import { expect } from '@vaadin/chai-plugins';
import { resetMouse, sendMouse } from '@vaadin/test-runner-commands';
import { aTimeout, fixtureSync, listenOnce, nextFrame, oneEvent } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { hover } from '@vaadin/button/test/visual/helpers.js';
import { flushGrid, getBodyCellContent, getFirstCell, getRowBodyCells, getRows } from './helpers.js';
diff --git a/packages/grid/test/dynamic-item-size-lit.test.js b/packages/grid/test/dynamic-item-size-lit.test.js
deleted file mode 100644
index e23fad4bb68..00000000000
--- a/packages/grid/test/dynamic-item-size-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './dynamic-item-size.common.js';
diff --git a/packages/grid/test/dynamic-item-size-polymer.test.js b/packages/grid/test/dynamic-item-size-polymer.test.js
deleted file mode 100644
index 519b045e39c..00000000000
--- a/packages/grid/test/dynamic-item-size-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './dynamic-item-size.common.js';
diff --git a/packages/grid/test/dynamic-item-size.common.js b/packages/grid/test/dynamic-item-size.test.js
similarity index 97%
rename from packages/grid/test/dynamic-item-size.common.js
rename to packages/grid/test/dynamic-item-size.test.js
index 745c09ed269..3a0f5e4701e 100644
--- a/packages/grid/test/dynamic-item-size.common.js
+++ b/packages/grid/test/dynamic-item-size.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
+import '../vaadin-grid.js';
import { css } from 'lit';
import { flushGrid, getFirstVisibleItem, infiniteDataProvider } from './helpers.js';
diff --git a/packages/grid/test/event-context-lit.test.js b/packages/grid/test/event-context-lit.test.js
deleted file mode 100644
index 2619312022e..00000000000
--- a/packages/grid/test/event-context-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './event-context.common.js';
diff --git a/packages/grid/test/event-context-polymer.test.js b/packages/grid/test/event-context-polymer.test.js
deleted file mode 100644
index 23eb1db785a..00000000000
--- a/packages/grid/test/event-context-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './event-context.common.js';
diff --git a/packages/grid/test/event-context.common.js b/packages/grid/test/event-context.test.js
similarity index 99%
rename from packages/grid/test/event-context.common.js
rename to packages/grid/test/event-context.test.js
index 41fc0f3795b..7a6567f5a4b 100644
--- a/packages/grid/test/event-context.common.js
+++ b/packages/grid/test/event-context.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { click, fixtureSync } from '@vaadin/testing-helpers';
+import '../all-imports.js';
import { flushGrid, getContainerCell } from './helpers.js';
describe('event context', () => {
diff --git a/packages/grid/test/extension-lit.test.js b/packages/grid/test/extension-lit.test.js
deleted file mode 100644
index 86634c8ff9e..00000000000
--- a/packages/grid/test/extension-lit.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../src/vaadin-lit-grid.js';
-import './extension.common.js';
diff --git a/packages/grid/test/extension-polymer.test.js b/packages/grid/test/extension-polymer.test.js
deleted file mode 100644
index b064aa1bb58..00000000000
--- a/packages/grid/test/extension-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../src/vaadin-grid.js';
-import './extension.common.js';
diff --git a/packages/grid/test/extension.common.js b/packages/grid/test/extension.test.js
similarity index 92%
rename from packages/grid/test/extension.common.js
rename to packages/grid/test/extension.test.js
index 67dda571ec3..dddbe934f0d 100644
--- a/packages/grid/test/extension.common.js
+++ b/packages/grid/test/extension.test.js
@@ -1,7 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
+import { Grid } from '../src/vaadin-grid.js';
-const Grid = customElements.get('vaadin-grid');
customElements.define('vaadin-custom-grid', class CustomGrid extends Grid {});
describe('extended grid', () => {
diff --git a/packages/grid/test/filtering-lit.test.js b/packages/grid/test/filtering-lit.test.js
deleted file mode 100644
index e197ec8440d..00000000000
--- a/packages/grid/test/filtering-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './filtering.common.js';
diff --git a/packages/grid/test/filtering-polymer.test.js b/packages/grid/test/filtering-polymer.test.js
deleted file mode 100644
index bd1a4a8849f..00000000000
--- a/packages/grid/test/filtering-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './filtering.common.js';
diff --git a/packages/grid/test/filtering.common.js b/packages/grid/test/filtering.test.js
similarity index 99%
rename from packages/grid/test/filtering.common.js
rename to packages/grid/test/filtering.test.js
index 1b7b555f223..25727bb0106 100644
--- a/packages/grid/test/filtering.common.js
+++ b/packages/grid/test/filtering.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fire, fixtureSync, nextFrame, nextRender, oneEvent } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { html, LitElement } from 'lit';
import { flushGrid, getBodyCellContent, getHeaderCellContent, getVisibleItems, scrollToEnd } from './helpers.js';
diff --git a/packages/grid/test/frozen-columns-lit.test.js b/packages/grid/test/frozen-columns-lit.test.js
deleted file mode 100644
index 676d47839f7..00000000000
--- a/packages/grid/test/frozen-columns-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './frozen-columns.common.js';
diff --git a/packages/grid/test/frozen-columns-polymer.test.js b/packages/grid/test/frozen-columns-polymer.test.js
deleted file mode 100644
index 34fc19474d5..00000000000
--- a/packages/grid/test/frozen-columns-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './frozen-columns.common.js';
diff --git a/packages/grid/test/frozen-columns.common.js b/packages/grid/test/frozen-columns.test.js
similarity index 99%
rename from packages/grid/test/frozen-columns.common.js
rename to packages/grid/test/frozen-columns.test.js
index 274a790e511..48cdc3e8fde 100644
--- a/packages/grid/test/frozen-columns.common.js
+++ b/packages/grid/test/frozen-columns.test.js
@@ -2,6 +2,7 @@ import { expect } from '@vaadin/chai-plugins';
import { resetMouse, sendMouse } from '@vaadin/test-runner-commands';
import { fixtureSync, listenOnce, nextRender, nextResize } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { isElementFocused } from '@vaadin/a11y-base/src/focus-utils.js';
import { setNormalizedScrollLeft } from '@vaadin/component-base/src/dir-utils.js';
import { flushGrid, getRowCells, getRows, infiniteDataProvider, isWithinParentConstraints } from './helpers.js';
diff --git a/packages/grid/test/grid-wrapper-lit.test.js b/packages/grid/test/grid-wrapper-lit.test.js
deleted file mode 100644
index 2f394b687d4..00000000000
--- a/packages/grid/test/grid-wrapper-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './grid-wrapper.common.js';
diff --git a/packages/grid/test/grid-wrapper-polymer.test.js b/packages/grid/test/grid-wrapper-polymer.test.js
deleted file mode 100644
index 00557852c1c..00000000000
--- a/packages/grid/test/grid-wrapper-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './grid-wrapper.common.js';
diff --git a/packages/grid/test/grid-wrapper.common.js b/packages/grid/test/grid-wrapper.test.js
similarity index 98%
rename from packages/grid/test/grid-wrapper.common.js
rename to packages/grid/test/grid-wrapper.test.js
index 156b85ff294..9f1aae4850c 100644
--- a/packages/grid/test/grid-wrapper.common.js
+++ b/packages/grid/test/grid-wrapper.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
+import '../all-imports.js';
import { flushGrid, getBodyCellContent } from './helpers.js';
class GridWrapper extends HTMLElement {
diff --git a/packages/grid/test/hidden-grid-lit.test.js b/packages/grid/test/hidden-grid-lit.test.js
deleted file mode 100644
index 1cd88cf94c5..00000000000
--- a/packages/grid/test/hidden-grid-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './hidden-grid.common.js';
diff --git a/packages/grid/test/hidden-grid-polymer.test.js b/packages/grid/test/hidden-grid-polymer.test.js
deleted file mode 100644
index e230c8f8625..00000000000
--- a/packages/grid/test/hidden-grid-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './hidden-grid.common.js';
diff --git a/packages/grid/test/hidden-grid.common.js b/packages/grid/test/hidden-grid.test.js
similarity index 98%
rename from packages/grid/test/hidden-grid.common.js
rename to packages/grid/test/hidden-grid.test.js
index f96a808ce99..7ed192f5acc 100644
--- a/packages/grid/test/hidden-grid.common.js
+++ b/packages/grid/test/hidden-grid.test.js
@@ -2,6 +2,7 @@ import { expect } from '@vaadin/chai-plugins';
import { sendKeys } from '@vaadin/test-runner-commands';
import { fixtureSync, nextFrame, nextRender, oneEvent } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { fire, flushGrid, getBodyCellContent, getHeaderCell, infiniteDataProvider } from './helpers.js';
describe('hidden grid', () => {
diff --git a/packages/grid/test/keyboard-interaction-mode-lit.test.js b/packages/grid/test/keyboard-interaction-mode-lit.test.js
deleted file mode 100644
index 08cf6d39eb8..00000000000
--- a/packages/grid/test/keyboard-interaction-mode-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './keyboard-interaction-mode.common.js';
diff --git a/packages/grid/test/keyboard-interaction-mode-polymer.test.js b/packages/grid/test/keyboard-interaction-mode-polymer.test.js
deleted file mode 100644
index 5ac05ed2d82..00000000000
--- a/packages/grid/test/keyboard-interaction-mode-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './keyboard-interaction-mode.common.js';
diff --git a/packages/grid/test/keyboard-interaction-mode.common.js b/packages/grid/test/keyboard-interaction-mode.test.js
similarity index 98%
rename from packages/grid/test/keyboard-interaction-mode.common.js
rename to packages/grid/test/keyboard-interaction-mode.test.js
index 2589f8753d5..3d290ad5d8b 100644
--- a/packages/grid/test/keyboard-interaction-mode.common.js
+++ b/packages/grid/test/keyboard-interaction-mode.test.js
@@ -2,6 +2,7 @@ import { expect } from '@vaadin/chai-plugins';
import { sendKeys } from '@vaadin/test-runner-commands';
import { aTimeout, fixtureSync, keyDownOn, nextFrame, nextRender } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { getDeepActiveElement } from '@vaadin/a11y-base/src/focus-utils.js';
import { flushGrid, getCellContent, getFocusedCellIndex, getFocusedRowIndex } from './helpers.js';
@@ -278,9 +279,7 @@ describe('keyboard interaction mode', () => {
const previousInput = getCellInput(0, 1);
// Shift+Tab to previous input
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(document.activeElement).to.equal(previousInput);
});
@@ -550,9 +549,7 @@ describe('keyboard interaction mode', () => {
// Tab upwards
for (let i = tabToIndex - 1; i >= 0; i--) {
await rendered();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await rendered();
const focusedRow = document.activeElement.parentElement.assignedSlot.parentElement.parentElement;
expect(focusedRow.index).to.equal(i);
diff --git a/packages/grid/test/keyboard-navigation-cell-button-lit.test.js b/packages/grid/test/keyboard-navigation-cell-button-lit.test.js
deleted file mode 100644
index b2f44f6b90e..00000000000
--- a/packages/grid/test/keyboard-navigation-cell-button-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './keyboard-navigation-cell-button.common.js';
diff --git a/packages/grid/test/keyboard-navigation-cell-button-polymer.test.js b/packages/grid/test/keyboard-navigation-cell-button-polymer.test.js
deleted file mode 100644
index 83be3d32fdd..00000000000
--- a/packages/grid/test/keyboard-navigation-cell-button-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './keyboard-navigation-cell-button.common.js';
diff --git a/packages/grid/test/keyboard-navigation-cell-button.common.js b/packages/grid/test/keyboard-navigation-cell-button.test.js
similarity index 99%
rename from packages/grid/test/keyboard-navigation-cell-button.common.js
rename to packages/grid/test/keyboard-navigation-cell-button.test.js
index ec575664efb..2e0f57fc22b 100644
--- a/packages/grid/test/keyboard-navigation-cell-button.common.js
+++ b/packages/grid/test/keyboard-navigation-cell-button.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { arrowLeft, arrowRight, aTimeout, fixtureSync } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { flushGrid } from './helpers.js';
let grid;
diff --git a/packages/grid/test/keyboard-navigation-lit.test.js b/packages/grid/test/keyboard-navigation-lit.test.js
deleted file mode 100644
index 51e6d0649ae..00000000000
--- a/packages/grid/test/keyboard-navigation-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './keyboard-navigation.common.js';
diff --git a/packages/grid/test/keyboard-navigation-polymer.test.js b/packages/grid/test/keyboard-navigation-polymer.test.js
deleted file mode 100644
index f91b7005314..00000000000
--- a/packages/grid/test/keyboard-navigation-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './keyboard-navigation.common.js';
diff --git a/packages/grid/test/keyboard-navigation-row-focus-lit.test.js b/packages/grid/test/keyboard-navigation-row-focus-lit.test.js
deleted file mode 100644
index b7db4c1ced3..00000000000
--- a/packages/grid/test/keyboard-navigation-row-focus-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './keyboard-navigation-row-focus.common.js';
diff --git a/packages/grid/test/keyboard-navigation-row-focus-polymer.test.js b/packages/grid/test/keyboard-navigation-row-focus-polymer.test.js
deleted file mode 100644
index 7d658df946c..00000000000
--- a/packages/grid/test/keyboard-navigation-row-focus-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../src/all-imports.js';
-import './keyboard-navigation-row-focus.common.js';
diff --git a/packages/grid/test/keyboard-navigation-row-focus.common.js b/packages/grid/test/keyboard-navigation-row-focus.test.js
similarity index 99%
rename from packages/grid/test/keyboard-navigation-row-focus.common.js
rename to packages/grid/test/keyboard-navigation-row-focus.test.js
index 9610cc79921..3abc915c99f 100644
--- a/packages/grid/test/keyboard-navigation-row-focus.common.js
+++ b/packages/grid/test/keyboard-navigation-row-focus.test.js
@@ -8,6 +8,7 @@ import {
nextRender,
up as mouseUp,
} from '@vaadin/testing-helpers';
+import '../src/all-imports.js';
import { flushGrid, getCellContent, getFocusedCellIndex, getFocusedRowIndex } from './helpers.js';
let grid, header, footer, body;
diff --git a/packages/grid/test/keyboard-navigation.common.js b/packages/grid/test/keyboard-navigation.test.js
similarity index 99%
rename from packages/grid/test/keyboard-navigation.common.js
rename to packages/grid/test/keyboard-navigation.test.js
index 83ea2bf7c6a..f7be970a960 100644
--- a/packages/grid/test/keyboard-navigation.common.js
+++ b/packages/grid/test/keyboard-navigation.test.js
@@ -15,6 +15,7 @@ import {
up as mouseUp,
} from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import {
attributeRenderer,
flushGrid,
diff --git a/packages/grid/test/light-dom-observing-lit.test.js b/packages/grid/test/light-dom-observing-lit.test.js
deleted file mode 100644
index 9a5230ff9dc..00000000000
--- a/packages/grid/test/light-dom-observing-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './light-dom-observing.common.js';
diff --git a/packages/grid/test/light-dom-observing-polymer.test.js b/packages/grid/test/light-dom-observing-polymer.test.js
deleted file mode 100644
index 10e12c0a4af..00000000000
--- a/packages/grid/test/light-dom-observing-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './light-dom-observing.common.js';
diff --git a/packages/grid/test/light-dom-observing.common.js b/packages/grid/test/light-dom-observing.test.js
similarity index 99%
rename from packages/grid/test/light-dom-observing.common.js
rename to packages/grid/test/light-dom-observing.test.js
index 6c868aeec1b..1162b4f2625 100644
--- a/packages/grid/test/light-dom-observing.common.js
+++ b/packages/grid/test/light-dom-observing.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame, nextRender } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import {
attributeRenderer,
diff --git a/packages/grid/test/lit-lit.test.js b/packages/grid/test/lit-lit.test.js
deleted file mode 100644
index a8eb05f5c40..00000000000
--- a/packages/grid/test/lit-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './lit.common.js';
diff --git a/packages/grid/test/lit-polymer.test.js b/packages/grid/test/lit-polymer.test.js
deleted file mode 100644
index 52c86798717..00000000000
--- a/packages/grid/test/lit-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './lit.common.js';
diff --git a/packages/grid/test/lit-renderer-directives-lit.test.js b/packages/grid/test/lit-renderer-directives-lit.test.js
deleted file mode 100644
index 9bb274f7dff..00000000000
--- a/packages/grid/test/lit-renderer-directives-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './lit-renderer-directives.common.js';
diff --git a/packages/grid/test/lit-renderer-directives-polymer.test.js b/packages/grid/test/lit-renderer-directives-polymer.test.js
deleted file mode 100644
index acfd540689d..00000000000
--- a/packages/grid/test/lit-renderer-directives-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './lit-renderer-directives.common.js';
diff --git a/packages/grid/test/lit-renderer-directives.common.js b/packages/grid/test/lit-renderer-directives.test.js
similarity index 99%
rename from packages/grid/test/lit-renderer-directives.common.js
rename to packages/grid/test/lit-renderer-directives.test.js
index 96a904824c2..027aa4f40dd 100644
--- a/packages/grid/test/lit-renderer-directives.common.js
+++ b/packages/grid/test/lit-renderer-directives.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { html, render } from 'lit';
import { columnBodyRenderer, columnFooterRenderer, columnHeaderRenderer, gridRowDetailsRenderer } from '../lit.js';
import { getCellContent, getContainerCell } from './helpers.js';
diff --git a/packages/grid/test/lit-renderers-lit.test.js b/packages/grid/test/lit-renderers-lit.test.js
deleted file mode 100644
index 6ababa0ea43..00000000000
--- a/packages/grid/test/lit-renderers-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './lit-renderers.common.js';
diff --git a/packages/grid/test/lit-renderers-polymer.test.js b/packages/grid/test/lit-renderers-polymer.test.js
deleted file mode 100644
index 6fa5f7d1690..00000000000
--- a/packages/grid/test/lit-renderers-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './lit-renderers.common.js';
diff --git a/packages/grid/test/lit-renderers.common.js b/packages/grid/test/lit-renderers.test.js
similarity index 99%
rename from packages/grid/test/lit-renderers.common.js
rename to packages/grid/test/lit-renderers.test.js
index d278bbffd04..eaf6546cb99 100644
--- a/packages/grid/test/lit-renderers.common.js
+++ b/packages/grid/test/lit-renderers.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
+import '../all-imports.js';
import { html, render } from 'lit';
import { flushGrid } from './helpers.js';
diff --git a/packages/grid/test/lit.common.js b/packages/grid/test/lit.test.js
similarity index 99%
rename from packages/grid/test/lit.common.js
rename to packages/grid/test/lit.test.js
index 7abd524cbcf..ad9bf6dd33f 100644
--- a/packages/grid/test/lit.common.js
+++ b/packages/grid/test/lit.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, nextFrame } from '@vaadin/testing-helpers';
+import '../all-imports.js';
import { html, render } from 'lit';
import { flush } from '@vaadin/component-base/src/debounce.js';
import { getBodyCellContent, getPhysicalItems } from './helpers.js';
diff --git a/packages/grid/test/min-height-lit.test.js b/packages/grid/test/min-height-lit.test.js
deleted file mode 100644
index 6e917cea80c..00000000000
--- a/packages/grid/test/min-height-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './min-height.common.js';
diff --git a/packages/grid/test/min-height-polymer.test.js b/packages/grid/test/min-height-polymer.test.js
deleted file mode 100644
index a40277f3724..00000000000
--- a/packages/grid/test/min-height-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './min-height.common.js';
diff --git a/packages/grid/test/min-height.common.js b/packages/grid/test/min-height.test.js
similarity index 99%
rename from packages/grid/test/min-height.common.js
rename to packages/grid/test/min-height.test.js
index 55ef8ea167b..49b19b4a2db 100644
--- a/packages/grid/test/min-height.common.js
+++ b/packages/grid/test/min-height.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextResize } from '@vaadin/testing-helpers';
+import '../vaadin-grid.js';
import { flushGrid, infiniteDataProvider } from './helpers.js';
describe('min-height', () => {
diff --git a/packages/grid/test/missing-imports-lit.test.js b/packages/grid/test/missing-imports-lit.test.js
deleted file mode 100644
index c4ea9e85d25..00000000000
--- a/packages/grid/test/missing-imports-lit.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../src/vaadin-lit-grid.js';
-import './missing-imports.common.js';
diff --git a/packages/grid/test/missing-imports-polymer.test.js b/packages/grid/test/missing-imports-polymer.test.js
deleted file mode 100644
index 611b72ef664..00000000000
--- a/packages/grid/test/missing-imports-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../src/vaadin-grid.js';
-import './missing-imports.common.js';
diff --git a/packages/grid/test/missing-imports.common.js b/packages/grid/test/missing-imports.test.js
similarity index 98%
rename from packages/grid/test/missing-imports.common.js
rename to packages/grid/test/missing-imports.test.js
index 796b2c35511..2b5372c73ca 100644
--- a/packages/grid/test/missing-imports.common.js
+++ b/packages/grid/test/missing-imports.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../src/vaadin-grid.js';
import { flushGrid, infiniteDataProvider } from './helpers.js';
describe('missing imports', () => {
diff --git a/packages/grid/test/physical-count-lit.test.js b/packages/grid/test/physical-count-lit.test.js
deleted file mode 100644
index d96b6c13511..00000000000
--- a/packages/grid/test/physical-count-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './physical-count.common.js';
diff --git a/packages/grid/test/physical-count-polymer.test.js b/packages/grid/test/physical-count-polymer.test.js
deleted file mode 100644
index ae69baedb8f..00000000000
--- a/packages/grid/test/physical-count-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './physical-count.common.js';
diff --git a/packages/grid/test/physical-count.common.js b/packages/grid/test/physical-count.test.js
similarity index 98%
rename from packages/grid/test/physical-count.common.js
rename to packages/grid/test/physical-count.test.js
index 39b156583f5..dc68acdf66c 100644
--- a/packages/grid/test/physical-count.common.js
+++ b/packages/grid/test/physical-count.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
+import '../vaadin-grid.js';
import { css } from 'lit';
import {
flushGrid,
diff --git a/packages/grid/test/renderers-lit.test.js b/packages/grid/test/renderers-lit.test.js
deleted file mode 100644
index aa5bf7f5e70..00000000000
--- a/packages/grid/test/renderers-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './renderers.common.js';
diff --git a/packages/grid/test/renderers-polymer.test.js b/packages/grid/test/renderers-polymer.test.js
deleted file mode 100644
index 22913705869..00000000000
--- a/packages/grid/test/renderers-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './renderers.common.js';
diff --git a/packages/grid/test/renderers.common.js b/packages/grid/test/renderers.test.js
similarity index 99%
rename from packages/grid/test/renderers.common.js
rename to packages/grid/test/renderers.test.js
index d322d7503e3..5704dfab4ed 100644
--- a/packages/grid/test/renderers.common.js
+++ b/packages/grid/test/renderers.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, isIOS, keyDownOn, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { flushGrid, getBodyCellContent, getCell, getContainerCell } from './helpers.js';
function getHeaderCell(grid, index = 0) {
diff --git a/packages/grid/test/resizing-lit.test.js b/packages/grid/test/resizing-lit.test.js
deleted file mode 100644
index 129015ef50d..00000000000
--- a/packages/grid/test/resizing-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './resizing.common.js';
diff --git a/packages/grid/test/resizing-material-lit.test.js b/packages/grid/test/resizing-material-lit.test.js
deleted file mode 100644
index b29b495d28d..00000000000
--- a/packages/grid/test/resizing-material-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/material/vaadin-grid-styles.js';
-import '../src/lit-all-imports.js';
-import './resizing-material.common.js';
diff --git a/packages/grid/test/resizing-material-polymer.test.js b/packages/grid/test/resizing-material-polymer.test.js
deleted file mode 100644
index 86459681987..00000000000
--- a/packages/grid/test/resizing-material-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../theme/material/vaadin-grid.js';
-import './resizing-material.common.js';
diff --git a/packages/grid/test/resizing-material.common.js b/packages/grid/test/resizing-material.test.js
similarity index 94%
rename from packages/grid/test/resizing-material.common.js
rename to packages/grid/test/resizing-material.test.js
index c8bfba930d7..83eefc0f3d1 100644
--- a/packages/grid/test/resizing-material.common.js
+++ b/packages/grid/test/resizing-material.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
+import '../theme/material/vaadin-grid.js';
import { flushGrid, infiniteDataProvider } from './helpers.js';
describe('resizing material grid', () => {
diff --git a/packages/grid/test/resizing-polymer.test.js b/packages/grid/test/resizing-polymer.test.js
deleted file mode 100644
index 6aca71c384a..00000000000
--- a/packages/grid/test/resizing-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './resizing.common.js';
diff --git a/packages/grid/test/resizing.common.js b/packages/grid/test/resizing.test.js
similarity index 99%
rename from packages/grid/test/resizing.common.js
rename to packages/grid/test/resizing.test.js
index 6afd687a703..b519789ac48 100644
--- a/packages/grid/test/resizing.common.js
+++ b/packages/grid/test/resizing.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, nextFrame, nextResize, oneEvent } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import {
flushGrid,
diff --git a/packages/grid/test/row-details-lit.test.js b/packages/grid/test/row-details-lit.test.js
deleted file mode 100644
index 461f4955e93..00000000000
--- a/packages/grid/test/row-details-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './row-details.common.js';
diff --git a/packages/grid/test/row-details-polymer.test.js b/packages/grid/test/row-details-polymer.test.js
deleted file mode 100644
index 43ec461ce5d..00000000000
--- a/packages/grid/test/row-details-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './row-details.common.js';
diff --git a/packages/grid/test/row-details.common.js b/packages/grid/test/row-details.test.js
similarity index 99%
rename from packages/grid/test/row-details.common.js
rename to packages/grid/test/row-details.test.js
index 4b0f7f2c9aa..4d6f174d1cd 100644
--- a/packages/grid/test/row-details.common.js
+++ b/packages/grid/test/row-details.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, click, fixtureSync, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import {
buildDataSet,
diff --git a/packages/grid/test/row-height-lit.test.js b/packages/grid/test/row-height-lit.test.js
deleted file mode 100644
index 5164ae6dcc0..00000000000
--- a/packages/grid/test/row-height-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './row-height.common.js';
diff --git a/packages/grid/test/row-height-polymer.test.js b/packages/grid/test/row-height-polymer.test.js
deleted file mode 100644
index b138a24d4e9..00000000000
--- a/packages/grid/test/row-height-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './row-height.common.js';
diff --git a/packages/grid/test/row-height.common.js b/packages/grid/test/row-height.test.js
similarity index 99%
rename from packages/grid/test/row-height.common.js
rename to packages/grid/test/row-height.test.js
index a059dba0fba..879f9ac605b 100644
--- a/packages/grid/test/row-height.common.js
+++ b/packages/grid/test/row-height.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, nextFrame, oneEvent } from '@vaadin/testing-helpers';
+import '../vaadin-grid.js';
import { flushGrid, getRowCells, getRows, infiniteDataProvider, scrollToEnd } from './helpers.js';
const fixtures = {
diff --git a/packages/grid/test/scroll-into-view-lit.test.js b/packages/grid/test/scroll-into-view-lit.test.js
deleted file mode 100644
index 3d107320356..00000000000
--- a/packages/grid/test/scroll-into-view-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './scroll-into-view.common.js';
diff --git a/packages/grid/test/scroll-into-view-polymer.test.js b/packages/grid/test/scroll-into-view-polymer.test.js
deleted file mode 100644
index 7866627fed4..00000000000
--- a/packages/grid/test/scroll-into-view-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './scroll-into-view.common.js';
diff --git a/packages/grid/test/scroll-into-view.common.js b/packages/grid/test/scroll-into-view.test.js
similarity index 99%
rename from packages/grid/test/scroll-into-view.common.js
rename to packages/grid/test/scroll-into-view.test.js
index 90288212673..c7ae26e7881 100644
--- a/packages/grid/test/scroll-into-view.common.js
+++ b/packages/grid/test/scroll-into-view.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { sendKeys, sendMouse } from '@vaadin/test-runner-commands';
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
+import '../vaadin-grid.js';
import { flushGrid, getContainerCell, getLastVisibleItem, getPhysicalItems } from './helpers.js';
describe('scroll into view', () => {
diff --git a/packages/grid/test/scroll-restoration-lit.test.js b/packages/grid/test/scroll-restoration-lit.test.js
deleted file mode 100644
index 5e9f1048a97..00000000000
--- a/packages/grid/test/scroll-restoration-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './scroll-restoration.common.js';
diff --git a/packages/grid/test/scroll-restoration-polymer.test.js b/packages/grid/test/scroll-restoration-polymer.test.js
deleted file mode 100644
index 02e06e11f70..00000000000
--- a/packages/grid/test/scroll-restoration-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './scroll-restoration.common.js';
diff --git a/packages/grid/test/scroll-restoration.common.js b/packages/grid/test/scroll-restoration.test.js
similarity index 98%
rename from packages/grid/test/scroll-restoration.common.js
rename to packages/grid/test/scroll-restoration.test.js
index 3d25520acca..db91163592a 100644
--- a/packages/grid/test/scroll-restoration.common.js
+++ b/packages/grid/test/scroll-restoration.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { aTimeout, fixtureSync, isFirefox } from '@vaadin/testing-helpers';
+import '../vaadin-grid.js';
import { fire, flushGrid, infiniteDataProvider } from './helpers.js';
if (isFirefox) {
diff --git a/packages/grid/test/scroll-to-index-lit.test.js b/packages/grid/test/scroll-to-index-lit.test.js
deleted file mode 100644
index 10c6b8dd040..00000000000
--- a/packages/grid/test/scroll-to-index-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './scroll-to-index.common.js';
diff --git a/packages/grid/test/scroll-to-index-polymer.test.js b/packages/grid/test/scroll-to-index-polymer.test.js
deleted file mode 100644
index 5ed33de1b9d..00000000000
--- a/packages/grid/test/scroll-to-index-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './scroll-to-index.common.js';
diff --git a/packages/grid/test/scroll-to-index.common.js b/packages/grid/test/scroll-to-index.test.js
similarity index 99%
rename from packages/grid/test/scroll-to-index.common.js
rename to packages/grid/test/scroll-to-index.test.js
index cc34ff9b870..c488030b9a8 100644
--- a/packages/grid/test/scroll-to-index.common.js
+++ b/packages/grid/test/scroll-to-index.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, listenOnce, nextFrame, oneEvent } from '@vaadin/testing-helpers';
+import '../all-imports.js';
import {
flushGrid,
getFirstVisibleItem,
diff --git a/packages/grid/test/scrolling-mode-lit.test.js b/packages/grid/test/scrolling-mode-lit.test.js
deleted file mode 100644
index 90a47065054..00000000000
--- a/packages/grid/test/scrolling-mode-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './scrolling-mode.common.js';
diff --git a/packages/grid/test/scrolling-mode-polymer.test.js b/packages/grid/test/scrolling-mode-polymer.test.js
deleted file mode 100644
index d798f69acba..00000000000
--- a/packages/grid/test/scrolling-mode-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './scrolling-mode.common.js';
diff --git a/packages/grid/test/scrolling-mode.common.js b/packages/grid/test/scrolling-mode.test.js
similarity index 99%
rename from packages/grid/test/scrolling-mode.common.js
rename to packages/grid/test/scrolling-mode.test.js
index 3cfe9d4c75e..42158718270 100644
--- a/packages/grid/test/scrolling-mode.common.js
+++ b/packages/grid/test/scrolling-mode.test.js
@@ -1,5 +1,6 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, listenOnce, nextFrame, nextRender, nextResize } from '@vaadin/testing-helpers';
+import '../vaadin-grid.js';
import { flushGrid, infiniteDataProvider, scrollToEnd } from './helpers.js';
describe('scrolling mode', () => {
diff --git a/packages/grid/test/selectable-provider-lit.test.js b/packages/grid/test/selectable-provider-lit.test.js
deleted file mode 100644
index 46ad9a70290..00000000000
--- a/packages/grid/test/selectable-provider-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './selectable-provider.common.js';
diff --git a/packages/grid/test/selectable-provider-polymer.test.js b/packages/grid/test/selectable-provider-polymer.test.js
deleted file mode 100644
index 9ed89370082..00000000000
--- a/packages/grid/test/selectable-provider-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './selectable-provider.common.js';
diff --git a/packages/grid/test/selectable-provider.common.js b/packages/grid/test/selectable-provider.test.js
similarity index 99%
rename from packages/grid/test/selectable-provider.common.js
rename to packages/grid/test/selectable-provider.test.js
index 9ac9a3dd8a5..0ce0bc20bce 100644
--- a/packages/grid/test/selectable-provider.common.js
+++ b/packages/grid/test/selectable-provider.test.js
@@ -2,6 +2,7 @@ import { expect } from '@vaadin/chai-plugins';
import { sendKeys } from '@vaadin/test-runner-commands';
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import {
fire,
flushGrid,
diff --git a/packages/grid/test/selection-column-lazy-import-lit.test.js b/packages/grid/test/selection-column-lazy-import-lit.test.js
deleted file mode 100644
index a024626bfdd..00000000000
--- a/packages/grid/test/selection-column-lazy-import-lit.test.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { fixtureSync } from '@vaadin/testing-helpers/dist/fixture.js';
-
-it('should not throw when grid with items imported lazily after selection column', async () => {
- fixtureSync(`
-
-
-
- `);
-
- // The order of imports matters in this test
- await import('../src/vaadin-lit-grid-selection-column.js');
- await import('../src/vaadin-lit-grid.js');
-});
diff --git a/packages/grid/test/selection-column-lazy-import-polymer.test.js b/packages/grid/test/selection-column-lazy-import.test.js
similarity index 100%
rename from packages/grid/test/selection-column-lazy-import-polymer.test.js
rename to packages/grid/test/selection-column-lazy-import.test.js
diff --git a/packages/grid/test/selection-lit.test.js b/packages/grid/test/selection-lit.test.js
deleted file mode 100644
index ec44b61514f..00000000000
--- a/packages/grid/test/selection-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './selection.common.js';
diff --git a/packages/grid/test/selection-polymer.test.js b/packages/grid/test/selection-polymer.test.js
deleted file mode 100644
index e68306691ec..00000000000
--- a/packages/grid/test/selection-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './selection.common.js';
diff --git a/packages/grid/test/selection.common.js b/packages/grid/test/selection.test.js
similarity index 98%
rename from packages/grid/test/selection.common.js
rename to packages/grid/test/selection.test.js
index 7dd10d41e14..1031c2f9304 100644
--- a/packages/grid/test/selection.common.js
+++ b/packages/grid/test/selection.test.js
@@ -2,6 +2,7 @@ import { expect } from '@vaadin/chai-plugins';
import { resetMouse, sendKeys, sendMouse } from '@vaadin/test-runner-commands';
import { click, fixtureSync, listenOnce, mousedown, nextFrame, nextRender } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import {
fire,
flushGrid,
@@ -966,14 +967,10 @@ describe('multi selection column', () => {
it('should fire the event when toggling an item with Shift + Space', async () => {
checkboxes[0].focus();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Space' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Space' });
assertEvent({ item: grid.items[0], selected: true, shiftKey: true });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Space' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Space' });
assertEvent({ item: grid.items[0], selected: false, shiftKey: true });
});
@@ -1016,14 +1013,10 @@ describe('multi selection column', () => {
it('should fire the event when toggling an item with Shift + Space', async () => {
getRowCells(rows[0])[1].focus();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Space' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Space' });
assertEvent({ item: grid.items[0], selected: true, shiftKey: true });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Space' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Space' });
assertEvent({ item: grid.items[0], selected: false, shiftKey: true });
});
diff --git a/packages/grid/test/sorting-lit.test.js b/packages/grid/test/sorting-lit.test.js
deleted file mode 100644
index 92b1526e7b0..00000000000
--- a/packages/grid/test/sorting-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './sorting.common.js';
diff --git a/packages/grid/test/sorting-polymer.test.js b/packages/grid/test/sorting-polymer.test.js
deleted file mode 100644
index a20f93c4dea..00000000000
--- a/packages/grid/test/sorting-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './sorting.common.js';
diff --git a/packages/grid/test/sorting.common.js b/packages/grid/test/sorting.test.js
similarity index 99%
rename from packages/grid/test/sorting.common.js
rename to packages/grid/test/sorting.test.js
index 7dc0b63636d..487151bce2a 100644
--- a/packages/grid/test/sorting.common.js
+++ b/packages/grid/test/sorting.test.js
@@ -1,6 +1,8 @@
import { expect } from '@vaadin/chai-plugins';
import { click, fixtureSync, keyUpOn, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
+import { Grid } from '../src/vaadin-grid.js';
import {
buildDataSet,
flushGrid,
@@ -11,8 +13,6 @@ import {
shiftClick,
} from './helpers.js';
-const Grid = customElements.get('vaadin-grid');
-
describe('sorting', () => {
describe('sorter', () => {
let sorter, title, button, orderIndicator;
diff --git a/packages/grid/test/styling-lit.test.js b/packages/grid/test/styling-lit.test.js
deleted file mode 100644
index 5a4a35536e0..00000000000
--- a/packages/grid/test/styling-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './styling.common.js';
diff --git a/packages/grid/test/styling-polymer.test.js b/packages/grid/test/styling-polymer.test.js
deleted file mode 100644
index 4e8e6736469..00000000000
--- a/packages/grid/test/styling-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../vaadin-grid.js';
-import './styling.common.js';
diff --git a/packages/grid/test/styling.common.js b/packages/grid/test/styling.test.js
similarity index 99%
rename from packages/grid/test/styling.common.js
rename to packages/grid/test/styling.test.js
index dc5906bd228..d75b164ac67 100644
--- a/packages/grid/test/styling.common.js
+++ b/packages/grid/test/styling.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame, nextRender } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../vaadin-grid.js';
import { flushGrid, getContainerCell, getRows, infiniteDataProvider, scrollToEnd } from './helpers.js';
describe('styling', () => {
diff --git a/packages/grid/test/tree-toggle-lit.test.js b/packages/grid/test/tree-toggle-lit.test.js
deleted file mode 100644
index 8692b6c96c6..00000000000
--- a/packages/grid/test/tree-toggle-lit.test.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '../theme/lumo/lit-all-imports.js';
-import '../src/lit-all-imports.js';
-import './tree-toggle.common.js';
diff --git a/packages/grid/test/tree-toggle-polymer.test.js b/packages/grid/test/tree-toggle-polymer.test.js
deleted file mode 100644
index 2fccc2ad8ea..00000000000
--- a/packages/grid/test/tree-toggle-polymer.test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '../all-imports.js';
-import './tree-toggle.common.js';
diff --git a/packages/grid/test/tree-toggle.common.js b/packages/grid/test/tree-toggle.test.js
similarity index 99%
rename from packages/grid/test/tree-toggle.common.js
rename to packages/grid/test/tree-toggle.test.js
index 813ee4b6cde..f7292125ff0 100644
--- a/packages/grid/test/tree-toggle.common.js
+++ b/packages/grid/test/tree-toggle.test.js
@@ -1,6 +1,7 @@
import { expect } from '@vaadin/chai-plugins';
import { click, fixtureSync, nextFrame } from '@vaadin/testing-helpers';
import sinon from 'sinon';
+import '../all-imports.js';
import { flushGrid, getBodyCellContent } from './helpers.js';
describe('tree toggle', () => {
diff --git a/packages/menu-bar/test/accessible-disabled-buttons.common.js b/packages/menu-bar/test/accessible-disabled-buttons.common.js
index dcee2d6c89d..832e01a97a5 100644
--- a/packages/menu-bar/test/accessible-disabled-buttons.common.js
+++ b/packages/menu-bar/test/accessible-disabled-buttons.common.js
@@ -71,14 +71,10 @@ describe('accessible disabled buttons', () => {
await sendKeys({ press: 'Tab' });
expect(document.activeElement).to.equal(buttons[2]);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(document.activeElement).to.equal(buttons[1]);
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(document.activeElement).to.equal(buttons[0]);
});
});
diff --git a/packages/menu-bar/test/menu-bar.common.js b/packages/menu-bar/test/menu-bar.common.js
index d59f5a2d07e..87c20e18384 100644
--- a/packages/menu-bar/test/menu-bar.common.js
+++ b/packages/menu-bar/test/menu-bar.common.js
@@ -243,9 +243,7 @@ describe('root menu layout', () => {
it('should move focus to prev button on Shift Tab keydown', async () => {
buttons[1].focus();
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(buttons[0].hasAttribute('focused')).to.be.true;
});
diff --git a/packages/menu-bar/test/sub-menu.common.js b/packages/menu-bar/test/sub-menu.common.js
index 950f11b163d..7e5dddad975 100644
--- a/packages/menu-bar/test/sub-menu.common.js
+++ b/packages/menu-bar/test/sub-menu.common.js
@@ -310,9 +310,7 @@ describe('sub-menu', () => {
arrowDown(buttons[3]);
await oneEvent(subMenu, 'opened-changed');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await nextRender(subMenu);
expect(subMenu.opened).to.be.true;
diff --git a/packages/password-field/test/password-field.common.js b/packages/password-field/test/password-field.common.js
index 9c5c983e49d..4e6f2801b09 100644
--- a/packages/password-field/test/password-field.common.js
+++ b/packages/password-field/test/password-field.common.js
@@ -153,9 +153,7 @@ describe('password-field', () => {
});
it('should not set focus-ring attribute when focusing reveal button with Shift Tab', async () => {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(passwordField.hasAttribute('focus-ring')).to.be.false;
});
@@ -165,9 +163,7 @@ describe('password-field', () => {
revealButton.focus();
// Shift+Tab to the input element
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(passwordField.hasAttribute('focus-ring')).to.be.true;
});
@@ -238,9 +234,7 @@ describe('disabled', () => {
let focusInput;
async function shiftTab() {
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
}
beforeEach(() => {
diff --git a/packages/popover/test/a11y.test.js b/packages/popover/test/a11y.test.js
index 24acd107187..b49b4facf31 100644
--- a/packages/popover/test/a11y.test.js
+++ b/packages/popover/test/a11y.test.js
@@ -371,9 +371,7 @@ describe('a11y', () => {
const spy = sinon.spy(target, 'focus');
// Move focus back to the target
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(spy).to.be.calledOnce;
});
@@ -401,9 +399,7 @@ describe('a11y', () => {
const focusable = overlay.querySelector('input');
const spy = sinon.spy(focusable, 'focus');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(spy).to.be.calledOnce;
});
@@ -429,9 +425,7 @@ describe('a11y', () => {
await nextRender();
// Move focus back from the target
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await nextRender();
const activeElement = getDeepActiveElement();
diff --git a/packages/radio-group/test/radio-group.common.js b/packages/radio-group/test/radio-group.common.js
index 5e0cceed67f..a80b0749afe 100644
--- a/packages/radio-group/test/radio-group.common.js
+++ b/packages/radio-group/test/radio-group.common.js
@@ -248,9 +248,7 @@ describe('radio-group', () => {
await sendKeys({ press: 'Tab' });
// Move focus out of the group.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(buttons[0].hasAttribute('focused')).to.be.false;
expect(group.hasAttribute('focused')).to.be.false;
diff --git a/packages/radio-group/test/validation.common.js b/packages/radio-group/test/validation.common.js
index 3b823cabfb4..f669c532e2b 100644
--- a/packages/radio-group/test/validation.common.js
+++ b/packages/radio-group/test/validation.common.js
@@ -83,9 +83,7 @@ describe('validation', () => {
expect(validateSpy.called).to.be.false;
// Move focus out of the group.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(validateSpy.calledOnce).to.be.true;
});
@@ -124,9 +122,7 @@ describe('validation', () => {
await sendKeys({ press: 'Tab' });
// Move focus out of the checkbox group.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(validateSpy.called).to.be.false;
});
diff --git a/packages/rich-text-editor/test/a11y.common.js b/packages/rich-text-editor/test/a11y.common.js
index 43ff2a60112..d488861c60f 100644
--- a/packages/rich-text-editor/test/a11y.common.js
+++ b/packages/rich-text-editor/test/a11y.common.js
@@ -247,9 +247,7 @@ describe('accessibility', () => {
it('should move focus to the first toolbar button after esc followed by shift-tab are pressed', async () => {
await sendKeys({ press: 'Escape' });
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(getDeepActiveElement()).to.equal(buttons[0]);
});
diff --git a/packages/upload/test/file.common.js b/packages/upload/test/file.common.js
index f6b5e71b574..5ea404bcc52 100644
--- a/packages/upload/test/file.common.js
+++ b/packages/upload/test/file.common.js
@@ -133,9 +133,7 @@ describe(' element', () => {
button.focus();
// Move focus back to the upload file.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(fileElement.hasAttribute('focus-ring')).to.be.true;
});
@@ -146,9 +144,7 @@ describe(' element', () => {
await sendKeys({ press: 'Tab' });
// Move focus back to the button.
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(fileElement.hasAttribute('focus-ring')).to.be.false;
});
diff --git a/scripts/generateLitTests.js b/scripts/generateLitTests.js
new file mode 100644
index 00000000000..4b4e0daed52
--- /dev/null
+++ b/scripts/generateLitTests.js
@@ -0,0 +1,22 @@
+const fs = require('fs');
+const glob = require('glob');
+
+const packages = fs.readdirSync('packages');
+
+packages
+ .filter((pkg) => {
+ return fs.existsSync(`packages/${pkg}/vaadin-lit-${pkg}.js`);
+ })
+ .flatMap((pkg) => {
+ return glob.sync(`packages/${pkg}/test/*.test.{js,ts}`);
+ })
+ .filter((testPath) => {
+ return !/(-polymer|-lit)(\.generated)?\.test/u.test(testPath);
+ })
+ .forEach((testPath) => {
+ const generatedLitTestPath = testPath.replace('.test.', '-lit.generated.test.');
+
+ if (!fs.existsSync(generatedLitTestPath)) {
+ fs.symlinkSync(fs.realpathSync(testPath), generatedLitTestPath);
+ }
+ });
diff --git a/test/integration/dialog-accordion.test.js b/test/integration/dialog-accordion.test.js
index 53797fe945d..9b6feaa3d69 100644
--- a/test/integration/dialog-accordion.test.js
+++ b/test/integration/dialog-accordion.test.js
@@ -49,9 +49,7 @@ describe('accordion in dialog', () => {
panels[0].querySelector('input').focus();
// Move focus back to heading
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(document.activeElement).to.equal(panels[0].focusElement);
});
@@ -75,9 +73,7 @@ describe('accordion in dialog', () => {
panels[1].focus();
// Move focus back to first panel
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(document.activeElement).to.equal(panels[0].focusElement);
});
diff --git a/test/integration/dialog-date-picker.test.js b/test/integration/dialog-date-picker.test.js
index ab0fe522d91..b34e7941a13 100644
--- a/test/integration/dialog-date-picker.test.js
+++ b/test/integration/dialog-date-picker.test.js
@@ -51,9 +51,7 @@ describe('date-picker in dialog', () => {
it('should focus the Cancel button on Shift + Tab when inside a dialog', async () => {
// Focus the Cancel button
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(overlayContent._cancelButton.hasAttribute('focused')).to.be.true;
});
@@ -67,9 +65,7 @@ describe('date-picker in dialog', () => {
const spy = sinon.spy(datePicker.inputElement, 'focus');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(spy.calledOnce).to.be.true;
});
@@ -114,9 +110,7 @@ describe('date-picker in dialog', () => {
it('should not close the dialog when closing date-picker on Cancel button Escape', async () => {
// Focus the Cancel button
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await sendKeys({ press: 'Escape' });
diff --git a/test/integration/grid-pro-custom-editor.test.js b/test/integration/grid-pro-custom-editor.test.js
index 1df0f528eae..981c5ef1ac3 100644
--- a/test/integration/grid-pro-custom-editor.test.js
+++ b/test/integration/grid-pro-custom-editor.test.js
@@ -149,9 +149,7 @@ describe('grid-pro custom editor', () => {
await waitForOverlayRender();
// Move focus back to the input
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
// Change single digit to avoid calendar scroll
const input = cell._content.querySelector('input');
@@ -248,9 +246,7 @@ describe('grid-pro custom editor', () => {
expect(cell._content.querySelector('vaadin-date-time-picker')).to.be.ok;
// Move focus to the date-picker
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await nextRender();
expect(cell._content.querySelector('vaadin-date-time-picker')).to.be.ok;
});
@@ -260,9 +256,7 @@ describe('grid-pro custom editor', () => {
await waitForOverlayRender();
// Move focus back to the input
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
// Change single digit to avoid calendar scroll
const input = cell._content.querySelector('input');
@@ -318,9 +312,7 @@ describe('grid-pro custom editor', () => {
expect(cell._content.querySelector('vaadin-custom-field')).to.be.ok;
// Move focus to the first field
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
await nextRender();
expect(cell._content.querySelector('vaadin-custom-field')).to.be.ok;
});
diff --git a/test/integration/menu-bar-tooltip.test.js b/test/integration/menu-bar-tooltip.test.js
index 31b8b5896f9..a2deea9cfcc 100644
--- a/test/integration/menu-bar-tooltip.test.js
+++ b/test/integration/menu-bar-tooltip.test.js
@@ -420,9 +420,7 @@ describe('menu-bar with tooltip', () => {
await sendKeys({ press: 'Tab' });
expect(getTooltipText()).to.equal('Copy tooltip');
- await sendKeys({ down: 'Shift' });
- await sendKeys({ press: 'Tab' });
- await sendKeys({ up: 'Shift' });
+ await sendKeys({ press: 'Shift+Tab' });
expect(getTooltipText()).to.be.null;
});
});
diff --git a/test/test-runner-commands/index.js b/test/test-runner-commands/index.js
index e2837d1a472..41abcd8f7c5 100644
--- a/test/test-runner-commands/index.js
+++ b/test/test-runner-commands/index.js
@@ -1 +1,53 @@
+import { executeServerCommand } from '@web/test-runner-commands';
+
export * from '@web/test-runner-commands';
+
+/**
+ * Extends the `sendKeys` command to support pressing multiple keys
+ * simultaneously when provided in the format "Shift+Tab". This format
+ * is natively supported by Playwright but not by Puppeteer. This wrapper
+ * enables the same syntax to be used in Puppeteer.
+ *
+ * In WebDriver, this functionality is still unavailable because
+ * web-test-runner does not provide an API for holding keys down.
+ *
+ * For more documentation on the original command, please see
+ * https://modern-web.dev/docs/test-runner/commands/#send-keys
+ *
+ * @typedef {{ type: string }} TypePayload
+ * @typedef {{ press: string }} PressPayload
+ * @typedef {{ down: string }} DownPayload
+ * @typedef {{ up: string }} UpPayload
+ * @param payload {TypePayload | PressPayload | DownPayload | UpPayload}
+ *
+ * @example
+ * // Tab to the next element
+ * await sendKeys({ press: 'Tab' });
+ *
+ * @example
+ * // Tab to the previous element
+ * await sendKeys({ press: 'Shift+Tab' });
+ *
+ * @example
+ * await sendKeys({ down: 'Shift' });
+ * // Do something while holding Shift
+ * await sendKeys({ up: 'Shift' });
+ */
+export async function sendKeys(payload) {
+ const { press } = payload;
+ if (press && press.includes('+')) {
+ const keys = press.split('+').map((key) => key.trim());
+
+ for (const key of keys) {
+ await executeServerCommand('send-keys', { down: key });
+ }
+
+ for (const key of keys.reverse()) {
+ await executeServerCommand('send-keys', { up: key });
+ }
+
+ return;
+ }
+
+ await executeServerCommand('send-keys', payload);
+}
diff --git a/web-dev-server.config.js b/web-dev-server.config.js
index ebbf7896537..96794378fb6 100644
--- a/web-dev-server.config.js
+++ b/web-dev-server.config.js
@@ -1,6 +1,30 @@
/* eslint-env node */
const fs = require('fs');
const { esbuildPlugin } = require('@web/dev-server-esbuild');
+const path = require('path');
+
+/** @return {import('@web/test-runner').TestRunnerPlugin} */
+function generatedLitTestsPlugin() {
+ return {
+ name: 'generated-lit-tests',
+ transformImport({ source, context }) {
+ if (context.url.includes('-lit.generated.test.')) {
+ const dependencyPath = path.resolve(path.dirname(context.url), source);
+
+ const litDependencyPath = dependencyPath
+ // /button/vaadin-button.js -> /button/vaadin-lit-button.js
+ .replace(/\/vaadin-(?!lit)([^/]+)/u, '/vaadin-lit-$1')
+ // /grid/all-imports.js -> /grid/lit-all-imports.js
+ .replace(/\/all-imports/u, '/lit-all-imports');
+
+ if (litDependencyPath !== dependencyPath && fs.existsSync(`.${litDependencyPath}`)) {
+ return litDependencyPath;
+ }
+ }
+ return source;
+ },
+ };
+}
const preventFouc = `