diff --git a/packages/calcite-components/src/components/combobox/combobox.e2e.ts b/packages/calcite-components/src/components/combobox/combobox.e2e.ts
index d0a8bce5a6a..5a6f87dc0a0 100644
--- a/packages/calcite-components/src/components/combobox/combobox.e2e.ts
+++ b/packages/calcite-components/src/components/combobox/combobox.e2e.ts
@@ -1882,6 +1882,27 @@ describe("calcite-combobox", () => {
expect(eventSpy).toHaveReceivedEventTimes(1);
expect((await element.getProperty("selectedItems")).length).toBe(2);
});
+
+ it("should not emit calciteComboboxChange event when value attribute is updated", async () => {
+ const page = await newE2EPage();
+ await page.setContent(
+ html`
+
+
+
+ `,
+ );
+ await page.waitForChanges();
+
+ const eventSpy = await page.spyOnEvent("calciteComboboxChange");
+ const combobox = await page.find("calcite-combobox");
+ expect(await combobox.getProperty("value")).toBe("one");
+
+ combobox.setProperty("value", "two");
+ await page.waitForChanges();
+ expect(eventSpy).toHaveReceivedEventTimes(0);
+ expect(await combobox.getProperty("value")).toBe("two");
+ });
});
describe("calciteComboboxItemChange event correctly updates active item index", () => {
@@ -1945,6 +1966,27 @@ describe("calcite-combobox", () => {
await element.press("Tab");
expect(await page.evaluate(() => document.activeElement.id)).not.toBe("calcite-combobox");
});
+
+ it("should not emit calciteComboboxItemChange event when selected attribute is toggled", async () => {
+ const page = await newE2EPage();
+ await page.setContent(
+ html`
+
+
+
+ `,
+ );
+ await page.waitForChanges();
+
+ const eventSpy = await page.spyOnEvent("calciteComboboxItemChange");
+ const two = await page.find("#two");
+ two.setProperty("selected", "true");
+ await page.waitForChanges();
+ expect(eventSpy).toHaveReceivedEventTimes(0);
+
+ const combobox = await page.find("calcite-combobox");
+ expect((await combobox.getProperty("selectedItems")).length).toBe(1);
+ });
});
describe("allows free entry of text", () => {