diff --git a/core/src/components/icon/test/basic/icon.e2e-legacy.ts b/core/src/components/icon/test/basic/icon.e2e-legacy.ts
deleted file mode 100644
index fd6cb493aa..0000000000
--- a/core/src/components/icon/test/basic/icon.e2e-legacy.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { expect } from '@playwright/test';
-import { test } from '@utils/test/playwright';
-
-test.describe('icon: basic', () => {
- test('should render icon when passed', async ({ page, skip }) => {
- skip.rtl();
- skip.mode('ios');
-
- await page.setContent(`
-
- `);
-
- const icon = page.locator('ion-icon');
- await expect(icon).toHaveScreenshot(`icon-${page.getSnapshotSettings()}.png`);
- });
-});
diff --git a/core/src/components/icon/test/basic/icon.e2e.ts b/core/src/components/icon/test/basic/icon.e2e.ts
new file mode 100644
index 0000000000..35e592b737
--- /dev/null
+++ b/core/src/components/icon/test/basic/icon.e2e.ts
@@ -0,0 +1,18 @@
+import { expect } from '@playwright/test';
+import { configs, test } from '@utils/test/playwright';
+
+configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
+ test.describe(title('icon: basic'), () => {
+ test('should render icon when passed', async ({ page }) => {
+ await page.setContent(
+ `
+
+ `,
+ config
+ );
+
+ const icon = page.locator('ion-icon');
+ await expect(icon).toHaveScreenshot(screenshot(`icon`));
+ });
+ });
+});
diff --git a/core/src/components/icon/test/basic/icon.e2e-legacy.ts-snapshots/icon-md-ltr-Mobile-Chrome-linux.png b/core/src/components/icon/test/basic/icon.e2e.ts-snapshots/icon-md-ltr-Mobile-Chrome-linux.png
similarity index 100%
rename from core/src/components/icon/test/basic/icon.e2e-legacy.ts-snapshots/icon-md-ltr-Mobile-Chrome-linux.png
rename to core/src/components/icon/test/basic/icon.e2e.ts-snapshots/icon-md-ltr-Mobile-Chrome-linux.png
diff --git a/core/src/components/icon/test/basic/icon.e2e-legacy.ts-snapshots/icon-md-ltr-Mobile-Firefox-linux.png b/core/src/components/icon/test/basic/icon.e2e.ts-snapshots/icon-md-ltr-Mobile-Firefox-linux.png
similarity index 100%
rename from core/src/components/icon/test/basic/icon.e2e-legacy.ts-snapshots/icon-md-ltr-Mobile-Firefox-linux.png
rename to core/src/components/icon/test/basic/icon.e2e.ts-snapshots/icon-md-ltr-Mobile-Firefox-linux.png
diff --git a/core/src/components/icon/test/basic/icon.e2e-legacy.ts-snapshots/icon-md-ltr-Mobile-Safari-linux.png b/core/src/components/icon/test/basic/icon.e2e.ts-snapshots/icon-md-ltr-Mobile-Safari-linux.png
similarity index 100%
rename from core/src/components/icon/test/basic/icon.e2e-legacy.ts-snapshots/icon-md-ltr-Mobile-Safari-linux.png
rename to core/src/components/icon/test/basic/icon.e2e.ts-snapshots/icon-md-ltr-Mobile-Safari-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts b/core/src/components/icon/test/dir/icon.e2e-legacy.ts
deleted file mode 100644
index 7315df675e..0000000000
--- a/core/src/components/icon/test/dir/icon.e2e-legacy.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { expect } from '@playwright/test';
-import { test } from '@utils/test/playwright';
-
-test.describe('icon: rtl', () => {
- test('should flip icon when rtl is active', async ({ page, skip }) => {
- skip.mode('ios');
-
- await page.setContent(`
-
- `);
-
- const icon = page.locator('ion-icon');
- await expect(icon).toHaveScreenshot(`icon-flip-${page.getSnapshotSettings()}.png`);
- });
- test('should not flip icon when rtl is active', async ({ page, skip }) => {
- skip.mode('ios');
-
- await page.setContent(`
-
- `);
-
- const icon = page.locator('ion-icon');
- await expect(icon).toHaveScreenshot(`icon-no-flip-${page.getSnapshotSettings()}.png`);
- });
-});
diff --git a/core/src/components/icon/test/dir/icon.e2e.ts b/core/src/components/icon/test/dir/icon.e2e.ts
new file mode 100644
index 0000000000..1d1ddbdb0f
--- /dev/null
+++ b/core/src/components/icon/test/dir/icon.e2e.ts
@@ -0,0 +1,29 @@
+import { expect } from '@playwright/test';
+import { configs, test } from '@utils/test/playwright';
+
+configs({ modes: ['md'] }).forEach(({ title, screenshot, config }) => {
+ test.describe(title('icon: rtl'), () => {
+ test('should flip icon when rtl is active', async ({ page }) => {
+ await page.setContent(
+ `
+
+ `,
+ config
+ );
+
+ const icon = page.locator('ion-icon');
+ await expect(icon).toHaveScreenshot(screenshot(`icon-flip`));
+ });
+ test('should not flip icon when rtl is active', async ({ page }) => {
+ await page.setContent(
+ `
+
+ `,
+ config
+ );
+
+ const icon = page.locator('ion-icon');
+ await expect(icon).toHaveScreenshot(screenshot(`icon-no-flip`));
+ });
+ });
+});
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-ltr-Mobile-Chrome-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-ltr-Mobile-Chrome-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-ltr-Mobile-Chrome-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-ltr-Mobile-Chrome-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-ltr-Mobile-Firefox-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-ltr-Mobile-Firefox-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-ltr-Mobile-Firefox-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-ltr-Mobile-Firefox-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-ltr-Mobile-Safari-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-ltr-Mobile-Safari-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-ltr-Mobile-Safari-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-ltr-Mobile-Safari-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-rtl-Mobile-Chrome-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-rtl-Mobile-Chrome-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-rtl-Mobile-Chrome-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-rtl-Mobile-Chrome-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-rtl-Mobile-Firefox-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-rtl-Mobile-Firefox-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-rtl-Mobile-Firefox-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-rtl-Mobile-Firefox-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-rtl-Mobile-Safari-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-rtl-Mobile-Safari-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-flip-md-rtl-Mobile-Safari-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-flip-md-rtl-Mobile-Safari-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-ltr-Mobile-Chrome-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-ltr-Mobile-Chrome-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-ltr-Mobile-Chrome-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-ltr-Mobile-Chrome-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-ltr-Mobile-Firefox-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-ltr-Mobile-Firefox-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-ltr-Mobile-Firefox-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-ltr-Mobile-Firefox-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-ltr-Mobile-Safari-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-ltr-Mobile-Safari-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-ltr-Mobile-Safari-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-ltr-Mobile-Safari-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-rtl-Mobile-Chrome-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-rtl-Mobile-Chrome-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-rtl-Mobile-Chrome-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-rtl-Mobile-Chrome-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-rtl-Mobile-Firefox-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-rtl-Mobile-Firefox-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-rtl-Mobile-Firefox-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-rtl-Mobile-Firefox-linux.png
diff --git a/core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-rtl-Mobile-Safari-linux.png b/core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-rtl-Mobile-Safari-linux.png
similarity index 100%
rename from core/src/components/icon/test/dir/icon.e2e-legacy.ts-snapshots/icon-no-flip-md-rtl-Mobile-Safari-linux.png
rename to core/src/components/icon/test/dir/icon.e2e.ts-snapshots/icon-no-flip-md-rtl-Mobile-Safari-linux.png