diff --git a/src/lib/components/dialog/dialog.test.ts b/src/lib/components/dialog/dialog.test.ts index a658e15..77c42c5 100644 --- a/src/lib/components/dialog/dialog.test.ts +++ b/src/lib/components/dialog/dialog.test.ts @@ -5,11 +5,6 @@ import NestedTestComponent from "./_NestedTestComponent.svelte"; import { suppressConsoleLogs } from "$lib/test-utils/suppress-console-logs"; import { render } from "@testing-library/svelte"; import TestRenderer from "$lib/test-utils/TestRenderer.svelte"; -import Button from "$lib/internal/elements/Button.svelte"; -import Div from "$lib/internal/elements/Div.svelte"; -import Form from "$lib/internal/elements/Form.svelte"; -import P from "$lib/internal/elements/P.svelte"; -import Input from "$lib/internal/elements/Input.svelte"; import { assertActiveElement, assertDialog, @@ -62,19 +57,15 @@ describe("Safe guards", () => { it( "should be possible to render a Dialog without crashing", suppressConsoleLogs(async () => { - render(TestRenderer, { - allProps: [ - Dialog, - { open: false, onClose: console.log }, - [ - [Button, {}, "Trigger"], - [DialogOverlay], - [DialogTitle], - [P, {}, "Contents"], - [DialogDescription], - ], - ], - }); + render(svelte` + + + + +

Contents

+ +
+ `) assertDialog({ state: DialogState.InvisibleUnmounted }); }) @@ -221,16 +212,13 @@ describe("Rendering", () => { it('should be possible to always render the Dialog if we provide it a `static` prop (and disable focus trapping based on `open`)', () => { let focusCounter = jest.fn() - render( - TestRenderer, { - allProps: [ - [Button, {}, "Trigger"], - [Dialog, { open: false, onClose: console.log, static: true }, [ - [P, {}, "Contents"], - [TestTabSentinel, { onFocus: focusCounter }] - ]], - ] - }) + render(svelte` + + +

Contents

+ +
+ `) // Let's verify that the Dialog is already there @@ -240,14 +228,11 @@ describe("Rendering", () => { it('should be possible to use a different render strategy for the Dialog', async () => { let focusCounter = jest.fn() - render( - TestRenderer, { - allProps: [ - [ManagedDialog, { unmount: false, buttonText: "Trigger", buttonProps: { id: "trigger" } }, [ - [Input, { onFocus: focusCounter }], - ]], - ] - }) + render(svelte` + + + + `) assertDialog({ state: DialogState.InvisibleHidden }) expect(focusCounter).toHaveBeenCalledTimes(0) @@ -268,17 +253,13 @@ describe("Rendering", () => { it( 'should add a scroll lock to the html tag', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [ManagedDialog, { buttonText: "Trigger", buttonProps: { id: "trigger" } }, [ - [Input, { id: "a", type: "text" }], - [Input, { id: "b", type: "text" }], - [Input, { id: "c", type: "text" }], - ]], - ] - }) - + render(svelte` + + + + + + `) // No overflow yet expect(document.documentElement.style.overflow).toBe('') @@ -455,16 +436,13 @@ describe('Keyboard interactions', () => { it( 'should be possible to close the dialog with Escape, when a field is focused', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [ManagedDialog, { buttonText: "Trigger", buttonProps: { id: "trigger" } }, [ - "Contents", - [Input, { id: "name" }], - [TestTabSentinel], - ]], - ] - }) + render(svelte` + + Contents + + + + `) assertDialog({ state: DialogState.InvisibleUnmounted }) @@ -488,16 +466,13 @@ describe('Keyboard interactions', () => { it( 'should not be possible to close the dialog with Escape, when a field is focused but cancels the event', async () => { - render( - TestRenderer, { - allProps: [ - [ManagedDialog, { buttonText: "Trigger", buttonProps: { id: "trigger" } }, [ - "Contents", - [Input, { id: "name", onKeydown: (e: CustomEvent) => { e.preventDefault(); e.stopPropagation(); } }], - [TestTabSentinel], - ]], - ] - }) + render(svelte` + + Contents + { e.preventDefault(); e.stopPropagation(); } }> + + + `) assertDialog({ state: DialogState.InvisibleUnmounted }) @@ -551,18 +526,15 @@ describe('Mouse interactions', () => { it( 'should not close the Dialog when clicking on contents of the DialogOverlay', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [ManagedDialog, { buttonText: "Trigger", buttonProps: { id: "trigger" } }, [ - [DialogOverlay, {}, [ - [Button, {}, "hi"] - ]], - "Contents", - [TestTabSentinel], - ]], - ] - }) + render(svelte` + + + + + Contents + + + `) // Open dialog await click(document.getElementById('trigger')) @@ -611,16 +583,13 @@ describe('Mouse interactions', () => { it( 'should be possible to close the dialog, and keep focus on the focusable element', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [Button, {}, "Hello"], - [ManagedDialog, { buttonText: "Trigger", buttonProps: { id: "trigger" } }, [ - "Contents", - [TestTabSentinel], - ]], - ] - }) + render(svelte` + + + Contents + + + `) // Open dialog await click(getByText('Trigger')) @@ -643,18 +612,15 @@ describe('Mouse interactions', () => { 'should stop propagating click events when clicking on the DialogOverlay', suppressConsoleLogs(async () => { let wrapperFn = jest.fn() - render( - TestRenderer, { - allProps: [ - [Div, { onClick: wrapperFn }, [ - [ManagedDialog, { initialOpen: true }, [ - "Contents", - [DialogOverlay], - [TestTabSentinel], - ]], - ]] - ] - }) + render(svelte` +
+ + Contents + + + +
+ `) // Verify it is open assertDialog({ state: DialogState.Visible }) @@ -677,18 +643,15 @@ describe('Mouse interactions', () => { 'should be possible to submit a form inside a Dialog', suppressConsoleLogs(async () => { let submitFn = jest.fn() - render( - TestRenderer, { - allProps: [ - [ManagedDialog, { initialOpen: true }, [ - [Form, { onSubmit: submitFn }, [ - [Input, { type: "hidden", value: "abc" }], - [Button, { type: "submit" }, "Submit"] - ]], - [TestTabSentinel], - ]], - ] - }) + render(svelte` + +
+ + +
+ +
+ `) // Verify it is open assertDialog({ state: DialogState.Visible }) @@ -705,17 +668,14 @@ describe('Mouse interactions', () => { 'should stop propagating click events when clicking on an element inside the Dialog', suppressConsoleLogs(async () => { let wrapperFn = jest.fn() - render( - TestRenderer, { - allProps: [ - [Div, { onClick: wrapperFn }, [ - [ManagedDialog, { initialOpen: true, buttonInside: true, buttonText: "Inside" }, [ - "Contents", - [TestTabSentinel], - ]], - ]] - ] - }) + render(svelte` +
+ + Contents + + +
+ `) // Verify it is open assertDialog({ state: DialogState.Visible }) diff --git a/src/lib/components/listbox/listbox.test.ts b/src/lib/components/listbox/listbox.test.ts index e841964..1f38b40 100644 --- a/src/lib/components/listbox/listbox.test.ts +++ b/src/lib/components/listbox/listbox.test.ts @@ -44,9 +44,6 @@ import { import { Transition } from "../transitions"; import TransitionDebug from "$lib/components/disclosure/_TransitionDebug.svelte"; import ManagedListbox from "./_ManagedListbox.svelte"; -import Button from "$lib/internal/elements/Button.svelte"; -import Div from "$lib/internal/elements/Div.svelte"; -import Span from "$lib/internal/elements/Span.svelte"; import svelte from "svelte-inline-compile"; import { writable } from "svelte/store"; @@ -3476,29 +3473,26 @@ describe('Mouse interactions', () => { it( 'should be possible to click outside of the listbox on another listbox button which should close the current listbox and open the new listbox', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [Div, {}, [ - [Listbox, { value: undefined, onChange: console.log }, [ - [ListboxButton, {}, "Trigger"], - [ListboxOptions, {}, [ - [ListboxOption, { value: "a" }, "Option A"], - [ListboxOption, { value: "b" }, "Option B"], - [ListboxOption, { value: "c" }, "Option C"], - ]] - ]], - [Listbox, { value: undefined, onChange: console.log }, [ - [ListboxButton, {}, "Trigger"], - [ListboxOptions, {}, [ - [ListboxOption, { value: "a" }, "Option A"], - [ListboxOption, { value: "b" }, "Option B"], - [ListboxOption, { value: "c" }, "Option C"], - ]] - ]], - ]] - ] - }) + render(svelte` +
+ + Trigger + + Option A + Option B + Option C + + + + Trigger + + Option A + Option B + Option C + + +
+ `) let [button1, button2] = getListboxButtons() @@ -3557,24 +3551,21 @@ describe('Mouse interactions', () => { 'should be possible to click outside of the listbox, on an element which is within a focusable element, which closes the listbox', suppressConsoleLogs(async () => { let focusFn = jest.fn() - render( - TestRenderer, { - allProps: [ - [Div, {}, [ - [Listbox, { value: undefined, onChange: console.log }, [ - [ListboxButton, { onFocus: focusFn }, "Trigger"], - [ListboxOptions, {}, [ - [ListboxOption, { value: "a" }, "Option A"], - [ListboxOption, { value: "b" }, "Option B"], - [ListboxOption, { value: "c" }, "Option C"], - ]] - ]], - [Button, { id: "btn" }, [ - [Span, {}, "Next"] - ]], - ]] - ] - }) + render(svelte` +
+ + Trigger + + Option A + Option B + Option C + + + +
+ `) // Click the listbox button await click(getListboxButton()) diff --git a/src/lib/components/menu/menu.test.ts b/src/lib/components/menu/menu.test.ts index 4c0aeb5..04c7d70 100644 --- a/src/lib/components/menu/menu.test.ts +++ b/src/lib/components/menu/menu.test.ts @@ -6,10 +6,6 @@ import TestRenderer from "$lib/test-utils/TestRenderer.svelte"; import { click, focus, Keys, MouseButton, mouseLeave, mouseMove, press, shift, type, word } from "$lib/test-utils/interactions"; import { Transition, TransitionChild } from "../transitions"; import TransitionDebug from "$lib/components/disclosure/_TransitionDebug.svelte"; -import Button from "$lib/internal/elements/Button.svelte"; -import Div from "$lib/internal/elements/Div.svelte"; -import Form from "$lib/internal/elements/Form.svelte"; -import Span from "$lib/internal/elements/Span.svelte"; import svelte from "svelte-inline-compile"; import { writable } from "svelte/store"; @@ -489,36 +485,32 @@ describe('Rendering composition', () => { it( 'should mark all the elements between MenuItems and MenuItem with role none', suppressConsoleLogs(async () => { - render - render( - TestRenderer, { - allProps: [ - [Menu, {}, [ - [MenuButton, {}, "Trigger"], - [Div, { class: "outer" }, [ - [MenuItems, {}, [ - [Div, { class: "py-1 inner" }, [ - [MenuItem, { as: "button" }, "Item A"], - [MenuItem, { as: "button" }, "Item B"], - ]], - [Div, { class: "py-1 inner" }, [ - [MenuItem, { as: "button" }, "Item C"], - [MenuItem, {}, [ - [Div, {}, [ - [Div, { class: "outer" }, "Item D"] - ]] - ]] - ]], - [Div, { class: "py-1 inner" }, [ - [Form, { class: "inner" }, [ - [MenuItem, { as: "button" }, "Item E"] - ]] - ]] - ]] - ]] - ]], - ] - }) + render(svelte` + + Trigger +
+ +
+ Item A + Item B +
+
+ Item C + +
+
Item D
+
+
+
+
+
+ Item E +
+
+
+
+
+ `) // Open menu await click(getMenuButton()) @@ -2960,29 +2952,26 @@ describe('Mouse interactions', () => { it( 'should be possible to click outside of the menu on another menu button which should close the current menu and open the new menu', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [Div, {}, [ - [Menu, {}, [ - [MenuButton, {}, "Trigger"], - [MenuItems, {}, [ - [MenuItem, { as: "a" }, "Item A"], - [MenuItem, { as: "a" }, "Item B"], - [MenuItem, { as: "a" }, "Item C"], - ]] - ]], - [Menu, {}, [ - [MenuButton, {}, "Trigger"], - [MenuItems, {}, [ - [MenuItem, { as: "a" }, "Item A"], - [MenuItem, { as: "a" }, "Item B"], - [MenuItem, { as: "a" }, "Item C"], - ]] - ]], - ]] - ] - }) + render(svelte` +
+ + Trigger + + Item A + Item B + Item C + + + + Trigger + + Item A + Item B + Item C + + +
+ `) let [button1, button2] = getMenuButtons() @@ -3008,24 +2997,21 @@ describe('Mouse interactions', () => { 'should be possible to click outside of the menu, on an element which is within a focusable element, which closes the menu', suppressConsoleLogs(async () => { let focusFn = jest.fn() - render( - TestRenderer, { - allProps: [ - [Div, {}, [ - [Menu, {}, [ - [MenuButton, { onFocus: focusFn }, "Trigger"], - [MenuItems, {}, [ - [MenuItem, { as: "a" }, "Item A"], - [MenuItem, { as: "a" }, "Item B"], - [MenuItem, { as: "a" }, "Item C"], - ]] - ]], - [Button, { id: "btn" }, [ - [Span, {}, "Next"] - ]] - ]] - ] - }) + render(svelte` +
+ + Trigger + + Item A + Item B + Item C + + + +
+ `) // Click the menu button await click(getMenuButton()) @@ -3433,21 +3419,18 @@ describe('Mouse interactions', () => { suppressConsoleLogs(async () => { let clickHandler = jest.fn() - render( - TestRenderer, { - allProps: [ - [Menu, {}, [ - [MenuButton, {}, "Trigger"], - [MenuItems, {}, [ - [MenuItem, { as: "a", onClick: clickHandler }, "Item A"], - [MenuItem, { as: "a", onClick: clickHandler, disabled: true }, "Item B"], - [MenuItem, { disabled: true }, [ - [Button, { onClick: clickHandler }, "Item C"], - ]] - ]] - ]], - ] - }) + render(svelte` + + Trigger + + Item A + Item B + + + + + + `) // Open menu await click(getMenuButton()) diff --git a/src/lib/components/popover/popover.test.ts b/src/lib/components/popover/popover.test.ts index 38f9b78..f140619 100644 --- a/src/lib/components/popover/popover.test.ts +++ b/src/lib/components/popover/popover.test.ts @@ -5,8 +5,6 @@ import TestRenderer from "$lib/test-utils/TestRenderer.svelte"; import { Popover, PopoverButton, PopoverGroup, PopoverOverlay, PopoverPanel } from "."; import { click, Keys, MouseButton, press, shift } from "$lib/test-utils/interactions"; import A from "$lib/internal/elements/A.svelte"; -import Button from "$lib/internal/elements/Button.svelte"; -import Span from "$lib/internal/elements/Span.svelte"; import { Transition, TransitionChild } from "$lib/components/transitions"; import TransitionDebug from "$lib/components/disclosure/_TransitionDebug.svelte"; import Portal from "$lib/components/portal/Portal.svelte"; @@ -1972,16 +1970,13 @@ describe('Mouse interactions', () => { it( 'should be possible to close the popover, and re-focus the button when we click outside on a non-focusable element', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [Popover, {}, [ - [PopoverButton, {}, "Trigger"], - [PopoverPanel, {}, "Contents"] - ]], - [Span, {}, "I am just text"], - ] - }) + render(svelte` + + Trigger + Contents + + I am just text + `) // Open popover await click(getPopoverButton()) @@ -2003,16 +1998,13 @@ describe('Mouse interactions', () => { it( 'should be possible to close the popover, by clicking outside the popover on another focusable element', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [Popover, {}, [ - [PopoverButton, {}, "Trigger"], - [PopoverPanel, {}, "Contents"] - ]], - [Button, {}, "Different button"], - ] - }) + render(svelte` + + Trigger + Contents + + + `) // Open popover await click(getPopoverButton()) @@ -2035,18 +2027,15 @@ describe('Mouse interactions', () => { 'should be possible to close the popover, by clicking outside the popover on another element inside a focusable element', suppressConsoleLogs(async () => { let focusFn = jest.fn() - render( - TestRenderer, { - allProps: [ - [Popover, {}, [ - [PopoverButton, { onFocus: focusFn }, "Trigger"], - [PopoverPanel, {}, "Contents"] - ]], - [Button, { id: "btn" }, [ - [Span, {}, "Different button"], - ]] - ] - }) + render(svelte` + + Trigger + Contents + + + `) // Open popover await click(getPopoverButton()) @@ -2108,17 +2097,14 @@ describe('Mouse interactions', () => { suppressConsoleLogs(async () => { let clickFn = jest.fn() - render( - TestRenderer, { - allProps: [ - [Popover, {}, [ - [PopoverButton, {}, "Open"], - [PopoverPanel, { static: true }, [ - [Button, { onClick: clickFn }, "btn"], - ]], - ]], - ] - }) + render(svelte` + + Open + + + + + `) // Open the popover await click(getPopoverButton()) @@ -2137,17 +2123,14 @@ describe('Mouse interactions', () => { it( 'should not close the Popover when clicking on a non-focusable element inside a static PopoverPanel', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [Popover, {}, [ - [PopoverButton, {}, "Open"], - [PopoverPanel, { static: true }, [ - [Span, {}, "element"], - ]], - ]], - ] - }) + render(svelte` + + Open + + element + + + `) // Open the popover await click(getPopoverButton()) @@ -2163,17 +2146,14 @@ describe('Mouse interactions', () => { it( 'should close the Popover when clicking outside of a static PopoverPanel', suppressConsoleLogs(async () => { - render( - TestRenderer, { - allProps: [ - [Popover, {}, [ - [PopoverButton, {}, "Open"], - [PopoverPanel, { static: true }, [ - [Span, {}, "element"], - ]], - ]], - ] - }) + render(svelte` + + Open + + element + + + `) // Open the popover await click(getPopoverButton()) diff --git a/src/lib/components/switch/switch.test.ts b/src/lib/components/switch/switch.test.ts index b29c05e..8d8f7a5 100644 --- a/src/lib/components/switch/switch.test.ts +++ b/src/lib/components/switch/switch.test.ts @@ -8,9 +8,6 @@ import { getSwitchLabel, SwitchState, } from "$lib/test-utils/accessibility-assertions"; -import Button from "$lib/internal/elements/Button.svelte"; -import Div from "$lib/internal/elements/Div.svelte"; -import Span from "$lib/internal/elements/Span.svelte"; import ManagedSwitch from "./_ManagedSwitch.svelte"; import { click, Keys, press } from "$lib/test-utils/interactions"; import svelte from "svelte-inline-compile"; @@ -60,13 +57,11 @@ describe("Rendering", () => { }); it("should be possible to use the switch contents as the label", () => { - render(TestRenderer, { - allProps: [ - Switch, - { checked: false, onChange: console.log }, - [Span, {}, "Enable notifications"], - ], - }); + render(svelte` + + Enable notifications + + `) assertSwitch({ state: SwitchState.Off, label: "Enable notifications" }); }); @@ -269,16 +264,12 @@ describe("Keyboard interactions", () => { describe("`Tab` key", () => { it("should be possible to tab away from the Switch", async () => { - render(TestRenderer, { - allProps: [ - Div, - {}, - [ - [Switch, { checked: false, onChange: console.log }], - [Button, { id: "btn" }, "Other element"], - ], - ], - }); + render(svelte` +
+ + +
+ `) // Ensure checkbox is off assertSwitch({ state: SwitchState.Off });