@shopware-ag/meteor-component-library
Version:
The meteor component library is a Vue component library developed by Shopware. It is based on the [Meteor Design System](https://shopware.design/).
151 lines (129 loc) • 3.4 kB
text/typescript
import { expect, fn, userEvent, within } from "@storybook/test";
import meta, { type MtUrlFieldMeta, type MtUrlFieldStory } from "./mt-url-field.stories";
import { waitUntil } from "@/_internal/test-helper";
export default {
...meta,
title: "Interaction Tests/Form/mt-url-field",
} as MtUrlFieldMeta;
export const VisualTestFocused: MtUrlFieldStory = {
name: "Focused",
args: {
modelValue: "https://example.com",
},
async play({ canvasElement }) {
const canvas = within(canvasElement);
await userEvent.click(canvas.getByRole("textbox"));
},
};
export const VisualTestPlaceholder: MtUrlFieldStory = {
name: "With placeholder",
args: {
placeholder: "Placeholder",
},
};
export const VisualTestRequired: MtUrlFieldStory = {
name: "Required",
args: {
required: true,
},
};
export const VisualTestHttps: MtUrlFieldStory = {
name: "shows HTTPS mode",
args: {
modelValue: "https://example.com",
},
};
export const VisualTestHttp: MtUrlFieldStory = {
name: "shows HTTP mode",
args: {
modelValue: "http://example.com",
},
};
export const VisualTestDisabled: MtUrlFieldStory = {
name: "Disabled",
args: {
modelValue: "https://example.com",
disabled: true,
},
};
export const VisualTestLinkedInheritance: MtUrlFieldStory = {
name: "Linked inheritance",
args: {
modelValue: "https://example.com",
isInheritanceField: true,
isInherited: true,
},
};
export const VisualTestUnlinkedInheritance: MtUrlFieldStory = {
name: "Linked inheritance",
args: {
modelValue: "https://example.com",
isInheritanceField: true,
isInherited: false,
},
};
export const VisualTestSuffix: MtUrlFieldStory = {
name: "With suffix",
args: {
modelValue: "https://example.com",
suffix: "suffix",
},
};
export const VisualTestError: MtUrlFieldStory = {
name: "Error",
args: {
modelValue: "https://example.com",
error: {
detail: "This is an error",
},
},
};
export const VisualTestSmall: MtUrlFieldStory = {
name: "Small",
args: {
modelValue: "https://example.com",
size: "small",
},
};
export const VisualTestHelpText: MtUrlFieldStory = {
name: "Helptext",
args: {
modelValue: "https://example.com",
helpText: "This is help text",
},
};
export const VisualTestHint: MtUrlFieldStory = {
name: "Hint",
args: {
hint: "This is a hint",
},
};
export const VisualTestCopyToClipboard: MtUrlFieldStory = {
name: "Copy to clipboard",
args: {
modelValue: "https://www.example.com",
copyable: true,
},
async play({ canvasElement }) {
const handler = fn();
navigator.clipboard.writeText = handler;
const canvas = within(canvasElement);
await userEvent.click(canvas.getByRole("button", { name: "Copy URL to clipboard" }));
},
};
export const changeModelValueFromOutside: MtUrlFieldStory = {
name: "Change modelValue from outside",
args: {
modelValue: "https://initial.com",
},
async play({ args, canvasElement }) {
const canvas = within(canvasElement);
// Verify initial value
const input = canvas.getByRole("textbox") as HTMLInputElement;
expect(input.value).toBe("initial.com");
// Change the modelValue from outside
args.modelValue = "https://changed.com";
await waitUntil(() => input.value === "changed.com");
expect(input.value).toBe("changed.com");
},
};