diff --git a/core/src/components/breadcrumbs/breadcrumbs.tsx b/core/src/components/breadcrumbs/breadcrumbs.tsx
index 62b149ac60..266d3ad7c4 100644
--- a/core/src/components/breadcrumbs/breadcrumbs.tsx
+++ b/core/src/components/breadcrumbs/breadcrumbs.tsx
@@ -162,6 +162,11 @@ export class Breadcrumbs implements ComponentInterface {
return Array.from(this.el.querySelectorAll('ion-breadcrumb'));
};
+ private slotChanged = () => {
+ this.resetActiveBreadcrumb();
+ this.breadcrumbsInit();
+ };
+
render() {
const { color, collapsed } = this;
const mode = getIonMode(this);
@@ -175,7 +180,7 @@ export class Breadcrumbs implements ComponentInterface {
'breadcrumbs-collapsed': collapsed,
})}
>
-
+
);
}
diff --git a/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts
new file mode 100644
index 0000000000..13716acf92
--- /dev/null
+++ b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts
@@ -0,0 +1,75 @@
+import { expect } from '@playwright/test';
+import { test } from '@utils/test/playwright';
+
+test.describe('breadcrumbs: reactive', () => {
+ test.beforeEach(async ({ page, skip }) => {
+ skip.rtl();
+ skip.mode('ios');
+
+ await page.goto(`/src/components/breadcrumbs/test/reactive`);
+ });
+
+ test.describe('adding a breadcrumb item', () => {
+ test('should update the active item', async ({ page }) => {
+ const breadcrumbItems = page.locator('ion-breadcrumb');
+
+ const addItemButton = page.locator('ion-button#add-btn');
+
+ await expect(breadcrumbItems).toHaveCount(4);
+
+ await addItemButton.click();
+ await page.waitForChanges();
+
+ await expect(breadcrumbItems).toHaveCount(5);
+
+ const previousActiveItem = breadcrumbItems.nth(3);
+ const lastBreadcrumbItem = breadcrumbItems.nth(4);
+
+ await expect(previousActiveItem).not.toHaveClass(/breadcrumb-active/);
+ await expect(lastBreadcrumbItem).toHaveClass(/breadcrumb-active/);
+ });
+
+ test('should not have visual regressions', async ({ page }) => {
+ await page.setIonViewport();
+
+ const breadcrumbs = page.locator('ion-breadcrumbs');
+
+ await page.click('#add-btn');
+ await page.waitForChanges();
+
+ expect(await breadcrumbs.screenshot()).toMatchSnapshot(
+ `breadcrumbs-reactive-add-diff-${page.getSnapshotSettings()}.png`
+ );
+ });
+ });
+
+ test.describe('removing a breadcrumb item', () => {
+ test('should update the active item', async ({ page }) => {
+ const breadcrumbItems = page.locator('ion-breadcrumb');
+
+ await expect(breadcrumbItems).toHaveCount(4);
+
+ await page.click('#remove-btn');
+ await page.waitForChanges();
+
+ await expect(breadcrumbItems).toHaveCount(3);
+
+ const lastBreadcrumbItem = breadcrumbItems.nth(2);
+
+ await expect(lastBreadcrumbItem).toHaveClass(/breadcrumb-active/);
+ });
+
+ test('should not have visual regressions', async ({ page }) => {
+ await page.setIonViewport();
+
+ const breadcrumbs = page.locator('ion-breadcrumbs');
+
+ await page.click('#remove-btn');
+ await page.waitForChanges();
+
+ expect(await breadcrumbs.screenshot()).toMatchSnapshot(
+ `breadcrumbs-reactive-remove-diff-${page.getSnapshotSettings()}.png`
+ );
+ });
+ });
+});
diff --git a/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Chrome-linux.png b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Chrome-linux.png
new file mode 100644
index 0000000000..6912847e30
Binary files /dev/null and b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Chrome-linux.png differ
diff --git a/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Firefox-linux.png b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Firefox-linux.png
new file mode 100644
index 0000000000..c687a53119
Binary files /dev/null and b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Firefox-linux.png differ
diff --git a/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Safari-linux.png b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Safari-linux.png
new file mode 100644
index 0000000000..bf715ca932
Binary files /dev/null and b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-add-diff-md-ltr-Mobile-Safari-linux.png differ
diff --git a/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Chrome-linux.png b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Chrome-linux.png
new file mode 100644
index 0000000000..d79d3f9aee
Binary files /dev/null and b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Chrome-linux.png differ
diff --git a/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Firefox-linux.png b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Firefox-linux.png
new file mode 100644
index 0000000000..dfbd156466
Binary files /dev/null and b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Firefox-linux.png differ
diff --git a/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Safari-linux.png b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Safari-linux.png
new file mode 100644
index 0000000000..2fcf3c9636
Binary files /dev/null and b/core/src/components/breadcrumbs/test/reactive/breadcrumbs.e2e.ts-snapshots/breadcrumbs-reactive-remove-diff-md-ltr-Mobile-Safari-linux.png differ
diff --git a/core/src/components/breadcrumbs/test/reactive/index.html b/core/src/components/breadcrumbs/test/reactive/index.html
new file mode 100644
index 0000000000..23faf99adf
--- /dev/null
+++ b/core/src/components/breadcrumbs/test/reactive/index.html
@@ -0,0 +1,55 @@
+
+
+
+
+ Breadcrumbs - Reactive
+
+
+
+
+
+
+
+
+
+
+
+
+ Breadcrumbs - Reactive
+
+
+
+
+
+ Home
+ Trips
+ Tokyo 2021
+ Photos
+
+
+ Add Item
+ Remove Item
+
+
+
+
+
+