From 90157940f63aff0c50d25e7daf31669e33b4616c Mon Sep 17 00:00:00 2001 From: Sarka Chwastkova Date: Tue, 5 Nov 2024 17:11:58 +0100 Subject: [PATCH] test(TooltipPrimitive): add visual tests --- .../TooltipPrimitive.ct-story.tsx | 84 +++++++++++++++++++ .../TooltipPrimitive/TooltipPrimitive.ct.tsx | 50 +++++++++++ 2 files changed, 134 insertions(+) create mode 100644 packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct-story.tsx create mode 100644 packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct.tsx diff --git a/packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct-story.tsx b/packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct-story.tsx new file mode 100644 index 0000000000..aaead8aaa7 --- /dev/null +++ b/packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct-story.tsx @@ -0,0 +1,84 @@ +import React from "react"; +import cx from "clsx"; + +import { PLACEMENTS } from "../../common/placements"; +import Stack from "../../Stack"; +import Text from "../../Text"; +// import TextLink from "../../TextLink"; +// import List, { ListItem } from "../../List"; +import { Icons } from "../.."; +import type { Props, Size } from "./types"; + +import TooltipPrimitive from "."; + +export const tooltipContentCtStory = ( + + + We take security very seriously. Especially when it comes to your personal and sensitive + details. + + {/* + + A common variant, especially in older software, is displaying a description. + + + A common variant, especially in older software, is displaying a description.{" "} + More info. + + */} + +); + +type TooltipPrimitiveProps = Pick; + +export function DefaultTooltipPrimitive({ + placement = PLACEMENTS.BOTTOM, + error, + help, + block, +}: TooltipPrimitiveProps) { + return ( +
+ + + + + +
+ ); +} + +export function TooltipPrimitiveWithImage({ size = "medium" }: { size?: Size }) { + return ( +
+ + + Preview of card help in TooltipPrimitive component + {tooltipContentCtStory} + + } + > + + + +
+ ); +} diff --git a/packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct.tsx b/packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct.tsx new file mode 100644 index 0000000000..d589fca05f --- /dev/null +++ b/packages/orbit-components/src/primitives/TooltipPrimitive/TooltipPrimitive.ct.tsx @@ -0,0 +1,50 @@ +import * as React from "react"; +import { test, expect } from "@playwright/experimental-ct-react"; + +import type { Size } from "./types"; +import { DefaultTooltipPrimitive, TooltipPrimitiveWithImage } from "./TooltipPrimitive.ct-story"; +import type { Placement } from "../../common/placements"; + +test.describe("Tooltip primitive visual tests", () => { + const placements = ["top", "right", "bottom", "left"]; + + placements.forEach(placement => { + test(`screenshot for default - ${placement}`, async ({ mount }) => { + const component = await mount(); + + await component.getByRole("button").hover(); + await expect(component).toHaveScreenshot(); + }); + }); + + const sizes: Size[] = ["small", "medium"]; + sizes.forEach(size => { + test(`screenshot with image inside - ${size}`, async ({ mount }) => { + const component = await mount(); + + await component.getByRole("button").hover(); + await expect(component).toHaveScreenshot(); + }); + }); + + test(`screenshot - error tooltip primitive`, async ({ mount }) => { + const component = await mount(); + + await component.getByRole("button").hover(); + await expect(component).toHaveScreenshot(); + }); + + test(`screenshot - help tooltip primitive`, async ({ mount }) => { + const component = await mount(); + + await component.getByRole("button").hover(); + await expect(component).toHaveScreenshot(); + }); + + test(`screenshot - block tooltip primitive`, async ({ mount }) => { + const component = await mount(); + + await component.getByRole("button").hover(); + await expect(component).toHaveScreenshot(); + }); +});