diff --git a/src/components/slider/slider.e2e.ts b/src/components/slider/slider.e2e.ts index 5285cc07ac4..1c6096e1879 100644 --- a/src/components/slider/slider.e2e.ts +++ b/src/components/slider/slider.e2e.ts @@ -270,6 +270,60 @@ describe("calcite-slider", () => { expect(changeEvent).toHaveReceivedEventTimes(1); }); + describe("thumb focus for single value", () => { + const sliderForThumbFocusTests = html``; + + it("should focus thumb when clicked near", async () => { + const page = await newE2EPage(); + await page.setContent(html`${sliderForThumbFocusTests}`); + const slider = await page.find("calcite-slider"); + const [trackX, trackY] = await getElementXY(page, "calcite-slider", ".track"); + + await page.mouse.move(trackX + 50, trackY); + await page.mouse.down(); + await page.mouse.up(); + await page.waitForChanges(); + + let isThumbFocused = await page.$eval("calcite-slider", (slider) => + slider.shadowRoot.activeElement?.classList.contains("thumb--value") + ); + + expect(isThumbFocused).toBe(true); + expect(await slider.getProperty("value")).toBe(50); + + await page.mouse.move(trackX + 40, trackY); + await page.mouse.down(); + await page.mouse.up(); + await page.waitForChanges(); + + isThumbFocused = await page.$eval("calcite-slider", (slider) => + slider.shadowRoot.activeElement?.classList.contains("thumb--value") + ); + + expect(isThumbFocused).toBe(true); + expect(await slider.getProperty("value")).toBe(40); + + await page.mouse.move(trackX + 60, trackY); + await page.mouse.down(); + await page.mouse.up(); + await page.waitForChanges(); + + isThumbFocused = await page.$eval("calcite-slider", (slider) => + slider.shadowRoot.activeElement?.classList.contains("thumb--value") + ); + + expect(isThumbFocused).toBe(true); + expect(await slider.getProperty("value")).toBe(60); + }); + }); + describe("thumb focus in range", () => { const sliderForThumbFocusTests = html`