@hanzogui/kitchen-sink 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.detoxrc.js +130 -0
- package/.env.production +2 -0
- package/.maestro/config.yaml +4 -0
- package/.maestro/flows/shorthand-variables.yaml +23 -0
- package/.watchmanconfig +1 -0
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/app.json +43 -0
- package/assets/adaptive-icon.png +0 -0
- package/assets/favicon.png +0 -0
- package/assets/icon.png +0 -0
- package/assets/splash.png +0 -0
- package/babel.config.js +25 -0
- package/e2e/CompilerExtraction.test.ts +147 -0
- package/e2e/GroupPressNative.test.ts +167 -0
- package/e2e/MediaQueryGtMd.test.ts +71 -0
- package/e2e/NativePortal.test.ts +113 -0
- package/e2e/PointerEvents.test.ts +116 -0
- package/e2e/PressStyleNative.noRngh.test.ts +191 -0
- package/e2e/PressStyleNative.test.ts +231 -0
- package/e2e/SafeArea.test.ts +57 -0
- package/e2e/SelectAndroidOnPress.test.ts +181 -0
- package/e2e/SelectRemount.test.ts +137 -0
- package/e2e/SheetDragResist.test.ts +370 -0
- package/e2e/SheetKeyboardDrag.test.ts +249 -0
- package/e2e/SheetScrollableDrag.test.ts +560 -0
- package/e2e/ShorthandVariables.test.ts +53 -0
- package/e2e/ThemeChangeBasic.test.ts +123 -0
- package/e2e/ThemeMutation.test.ts +80 -0
- package/e2e/check-rngh-status.test.ts +31 -0
- package/e2e/jest.config.js +19 -0
- package/e2e/utils/colors.ts +75 -0
- package/e2e/utils/navigation.ts +53 -0
- package/eas.json +22 -0
- package/flows/AlertDialog.yaml +17 -0
- package/flows/OpenApp.yaml +25 -0
- package/flows/Select.yaml +13 -0
- package/flows/Sheet.yaml +12 -0
- package/flows/Tabs.yaml +13 -0
- package/flows/Toast.yaml +14 -0
- package/flows/WarmUp.yaml +24 -0
- package/index.html +21 -0
- package/index.js +17 -0
- package/metro.config.js +64 -0
- package/next-router-shim.ts +9 -0
- package/package.json +118 -0
- package/plans/toast-2.md +471 -0
- package/playwright.config.ts +71 -0
- package/plugins/expo-modules-core-swift6.js +76 -0
- package/pod-install.sh +7 -0
- package/public/favicon.svg +70 -0
- package/public/fonts/inter.css +15 -0
- package/public/fonts/noto-cn.otf +0 -0
- package/public/gui-icon.svg +68 -0
- package/run-detox.sh +230 -0
- package/run-native-tests.sh +4 -0
- package/run-tests-parallel.ts +195 -0
- package/screenshots/Screenshotter.test.tsx +48 -0
- package/src/AnimationDemos.tsx +131 -0
- package/src/App.native.tsx +121 -0
- package/src/App.tsx +121 -0
- package/src/Navigation.tsx +98 -0
- package/src/Sandbox.tsx +87 -0
- package/src/TestDynamicEval.tsx +33 -0
- package/src/TestNativeSheet.tsx +100 -0
- package/src/components/TimedRender.tsx +18 -0
- package/src/constants/test-ids.ts +52 -0
- package/src/features/demos/demo-screen.tsx +72 -0
- package/src/features/home/ColorSchemeListItem.tsx +41 -0
- package/src/features/home/TestBuildAButton.tsx +102 -0
- package/src/features/home/TestSeparator.tsx +0 -0
- package/src/features/home/screen.tsx +285 -0
- package/src/features/testcases/screen.tsx +59 -0
- package/src/features/testcases/test-screen.tsx +50 -0
- package/src/generatedV5Theme.ts +112 -0
- package/src/gui.config.ts +411 -0
- package/src/guy.png +0 -0
- package/src/index.tsx +6 -0
- package/src/provider/index.tsx +18 -0
- package/src/test-gui-stack.tsx +11 -0
- package/src/test.tsx +3 -0
- package/src/useKitchenSinkTheme.tsx +15 -0
- package/src/usecases/ActionsSheetComparison.tsx +194 -0
- package/src/usecases/AnimatePresenceEnterExitCase.tsx +255 -0
- package/src/usecases/AnimatePresenceExitTest.tsx +69 -0
- package/src/usecases/AnimatedByProp.tsx +39 -0
- package/src/usecases/AnimationComprehensiveCase.tsx +2515 -0
- package/src/usecases/AnimationValueLoggingCase.tsx +526 -0
- package/src/usecases/AnimationsWithMediaQueriesCase.tsx +110 -0
- package/src/usecases/Benchmark.tsx +148 -0
- package/src/usecases/BenchmarkSelect.tsx +34 -0
- package/src/usecases/ButtonCircular.tsx +3 -0
- package/src/usecases/ButtonCustom.tsx +33 -0
- package/src/usecases/ButtonIconColor.tsx +18 -0
- package/src/usecases/ButtonInverse.tsx +30 -0
- package/src/usecases/ButtonUnstyled.tsx +31 -0
- package/src/usecases/CheckboxDisabledOnPress.tsx +62 -0
- package/src/usecases/ClickDuringEnterCase.tsx +59 -0
- package/src/usecases/CodeExamplesInput.tsx +9 -0
- package/src/usecases/ColorTokenFallback.tsx +52 -0
- package/src/usecases/CompilerExtraction.tsx +380 -0
- package/src/usecases/ComplexVariants.tsx +164 -0
- package/src/usecases/CrashAdaptSheet.tsx +98 -0
- package/src/usecases/CustomStyledAnimatedPopover.tsx +42 -0
- package/src/usecases/CustomStyledAnimatedTooltip.tsx +72 -0
- package/src/usecases/DOMNodeAPIs.tsx +154 -0
- package/src/usecases/DialogFocusScopeCase.tsx +277 -0
- package/src/usecases/DialogFocusScopeDebug.tsx +85 -0
- package/src/usecases/DialogNestedCase.tsx +121 -0
- package/src/usecases/DialogOpenControlled.tsx +49 -0
- package/src/usecases/DialogPointerEventsCase.tsx +58 -0
- package/src/usecases/DialogScopedCase.tsx +106 -0
- package/src/usecases/DialogSheetAdaptCase.tsx +178 -0
- package/src/usecases/DialogSheetAdaptResizeCase.tsx +98 -0
- package/src/usecases/DismissLayerStackingCase.tsx +223 -0
- package/src/usecases/DriverDisableAnimationPropsCase.tsx +44 -0
- package/src/usecases/Example.tsx +10 -0
- package/src/usecases/ExitCompletionCase.tsx +713 -0
- package/src/usecases/FocusVisibleButton.tsx +14 -0
- package/src/usecases/FocusVisibleButtonPointer.tsx +13 -0
- package/src/usecases/FocusVisibleButtonWithFocusStyle.tsx +16 -0
- package/src/usecases/FocusWithinCase.tsx +55 -0
- package/src/usecases/FontTokensInVariants.tsx +14 -0
- package/src/usecases/FormButtonTypeCase.tsx +34 -0
- package/src/usecases/GlobalScopedTriggerIsolationCase.tsx +178 -0
- package/src/usecases/GroupHoverMobile.tsx +39 -0
- package/src/usecases/GroupPressInVariant.tsx +92 -0
- package/src/usecases/GroupPressNative.tsx +200 -0
- package/src/usecases/GroupProp.tsx +96 -0
- package/src/usecases/GroupPseudoVariantOverride.tsx +56 -0
- package/src/usecases/GroupUseCases.tsx +94 -0
- package/src/usecases/HeightMediaQueryOverrideCase.tsx +183 -0
- package/src/usecases/InputAutoFocusAfterMenuCase.tsx +105 -0
- package/src/usecases/InputAutoFocusStyledCase.tsx +39 -0
- package/src/usecases/KeyboardControllerTest.tsx +146 -0
- package/src/usecases/ListItem.tsx +123 -0
- package/src/usecases/MediaQueriesV5.tsx +137 -0
- package/src/usecases/MediaQueryGtMd.tsx +73 -0
- package/src/usecases/MenuAboveDialogCase.tsx +75 -0
- package/src/usecases/MenuAccessibilityCase.tsx +133 -0
- package/src/usecases/MenuAnimatePositionCase.tsx +41 -0
- package/src/usecases/MenuArrowAnimatePresenceCase.tsx +98 -0
- package/src/usecases/MenuAsChildPositionCase.tsx +24 -0
- package/src/usecases/MenuAutoResizeCase.tsx +57 -0
- package/src/usecases/MenuBottomCase.tsx +55 -0
- package/src/usecases/MenuFocusLeaveCase.tsx +135 -0
- package/src/usecases/MenuHighlightCase.tsx +44 -0
- package/src/usecases/MenuItemFocusCase.tsx +79 -0
- package/src/usecases/MenuItemPseudoOverrideCase.tsx +270 -0
- package/src/usecases/MenuMultiTriggerCase.tsx +47 -0
- package/src/usecases/MenuOverflowCase.tsx +60 -0
- package/src/usecases/MenuSubCase.tsx +223 -0
- package/src/usecases/MenuSubLeftCase.tsx +178 -0
- package/src/usecases/MenuSubNestedPositionCase.tsx +171 -0
- package/src/usecases/MenuSubStyledCase.tsx +145 -0
- package/src/usecases/MenuThemeCase.tsx +50 -0
- package/src/usecases/MenuUnstyledCase.tsx +52 -0
- package/src/usecases/MultiDriverAnimation.tsx +118 -0
- package/src/usecases/NativePortalTest.tsx +179 -0
- package/src/usecases/NewInputBasic.tsx +16 -0
- package/src/usecases/NewInputEvents.tsx +29 -0
- package/src/usecases/NonGuiTextStyledType.tsx +23 -0
- package/src/usecases/OnLayoutCase.tsx +134 -0
- package/src/usecases/OnLayoutScaleCase.tsx +88 -0
- package/src/usecases/OnLayoutStressCase.tsx +353 -0
- package/src/usecases/OpacityModifierCase.tsx +113 -0
- package/src/usecases/OverlayStyled.tsx +66 -0
- package/src/usecases/ParagraphSpanFontInheritance.tsx +53 -0
- package/src/usecases/PlaceholderTextColor.tsx +20 -0
- package/src/usecases/PointerEventsCase.tsx +100 -0
- package/src/usecases/PopoverAndMenuMultiTriggerCase.tsx +138 -0
- package/src/usecases/PopoverCase.tsx +222 -0
- package/src/usecases/PopoverContentStyledPlusAnimations.tsx +44 -0
- package/src/usecases/PopoverFocusScopeCase.tsx +171 -0
- package/src/usecases/PopoverHoverableCase.tsx +167 -0
- package/src/usecases/PopoverHoverableDisableClickCase.tsx +118 -0
- package/src/usecases/PopoverHoverableRapidCase.tsx +103 -0
- package/src/usecases/PopoverHoverableScopedCase.tsx +135 -0
- package/src/usecases/PopoverScopedCase.tsx +76 -0
- package/src/usecases/PopoverTriggerIsolationCase.tsx +80 -0
- package/src/usecases/PressStyleNative.tsx +143 -0
- package/src/usecases/PseudoStyleMerge.tsx +25 -0
- package/src/usecases/PseudoTransitionCase.tsx +174 -0
- package/src/usecases/RawAnimatedValueCase.tsx +231 -0
- package/src/usecases/RemoveScrollCase.tsx +66 -0
- package/src/usecases/RenderPropCase.tsx +263 -0
- package/src/usecases/SafeAreaCase.tsx +236 -0
- package/src/usecases/ScrollViewRefCase.tsx +88 -0
- package/src/usecases/SecondPage.tsx +5 -0
- package/src/usecases/SelectAndroidOnPress.tsx +129 -0
- package/src/usecases/SelectFocusScopeCase.tsx +270 -0
- package/src/usecases/SelectRemount.tsx +136 -0
- package/src/usecases/Shadows.tsx +5 -0
- package/src/usecases/SheetAnimationCase.tsx +155 -0
- package/src/usecases/SheetDragCase.tsx +183 -0
- package/src/usecases/SheetDragResistCase.tsx +433 -0
- package/src/usecases/SheetDragResistCase.web.tsx +359 -0
- package/src/usecases/SheetKeyboardDragCase.tsx +328 -0
- package/src/usecases/SheetKeyboardFitContentCase.tsx +165 -0
- package/src/usecases/SheetOnAnimationCompleteCase.tsx +54 -0
- package/src/usecases/SheetScrollLockCase.tsx +166 -0
- package/src/usecases/SheetScrollableDrag.tsx +249 -0
- package/src/usecases/SheetSnapPointsFitCase.tsx +393 -0
- package/src/usecases/ShorthandVariables.tsx +49 -0
- package/src/usecases/SlowThemeReRender.tsx +48 -0
- package/src/usecases/SpinnerCustomColors.tsx +34 -0
- package/src/usecases/StackZIndex.tsx +82 -0
- package/src/usecases/StressPage.tsx +301 -0
- package/src/usecases/StylePlatform.tsx +30 -0
- package/src/usecases/StyleProp.tsx +29 -0
- package/src/usecases/StyledAnchor.tsx +27 -0
- package/src/usecases/StyledButtonAnimationAuto.tsx +99 -0
- package/src/usecases/StyledButtonTheme.tsx +63 -0
- package/src/usecases/StyledButtonVariantPseudo.tsx +25 -0
- package/src/usecases/StyledButtonVariantPseudoMerge.tsx +77 -0
- package/src/usecases/StyledCheckboxTheme.tsx +23 -0
- package/src/usecases/StyledContextColor.tsx +246 -0
- package/src/usecases/StyledContextTokens.tsx +147 -0
- package/src/usecases/StyledHOCNamed.tsx +20 -0
- package/src/usecases/StyledHtmlCase.tsx +144 -0
- package/src/usecases/StyledIconColor.tsx +19 -0
- package/src/usecases/StyledInputFocusStyle.tsx +21 -0
- package/src/usecases/StyledInputOnFocus.tsx +30 -0
- package/src/usecases/StyledMediaQueryMerge.tsx +95 -0
- package/src/usecases/StyledOverridePsuedo.tsx +26 -0
- package/src/usecases/StyledRNW.tsx +61 -0
- package/src/usecases/StyledStyleableInputOnFocus.tsx +34 -0
- package/src/usecases/StyledStyleableInputVariant.tsx +48 -0
- package/src/usecases/StyledStyledStyleableInputOnFocus.tsx +36 -0
- package/src/usecases/StyledVariantTextColor.tsx +25 -0
- package/src/usecases/StyledViewOnFocus.tsx +32 -0
- package/src/usecases/TabHoverAnimationCase.tsx +212 -0
- package/src/usecases/TextNestedInheritance.tsx +80 -0
- package/src/usecases/ThemeChange.tsx +100 -0
- package/src/usecases/ThemeChangeBasic.tsx +52 -0
- package/src/usecases/ThemeComponentResolution.tsx +119 -0
- package/src/usecases/ThemeConditionalName.tsx +31 -0
- package/src/usecases/ThemeMediaAnimationCase.tsx +39 -0
- package/src/usecases/ThemeMutation.tsx +86 -0
- package/src/usecases/ThemeNested.tsx +103 -0
- package/src/usecases/ThemeReset.tsx +62 -0
- package/src/usecases/ThemeShallowCase.tsx +83 -0
- package/src/usecases/ToastCase.tsx +46 -0
- package/src/usecases/ToggleGroupActiveProps.tsx +40 -0
- package/src/usecases/ToggleGroupXGroupCase.tsx +104 -0
- package/src/usecases/TooltipAnimationCase.tsx +99 -0
- package/src/usecases/TooltipCase.tsx +32 -0
- package/src/usecases/TooltipGlobalPatternCase.tsx +83 -0
- package/src/usecases/TooltipGroupCase.tsx +102 -0
- package/src/usecases/TooltipMultiTriggerCase.tsx +88 -0
- package/src/usecases/TooltipPositionJumpCase.tsx +91 -0
- package/src/usecases/TooltipTriggerInlineCase.tsx +60 -0
- package/src/usecases/TransformMediaQueryMerge.tsx +98 -0
- package/src/usecases/UseCases.tsx +409 -0
- package/src/usecases/UseTheme.tsx +41 -0
- package/src/usecases/V5ThemeBuilderOutput.tsx +231 -0
- package/src/usecases/VariantFontFamily.tsx +25 -0
- package/src/usecases/VariantsOrder.tsx +117 -0
- package/src/usecases/ZIndex.tsx +155 -0
- package/src/usecases/helpers.tsx +44 -0
- package/src/usecases/index.native.ts +122 -0
- package/src/usecases/index.ts +3 -0
- package/src/usecases/index.web.ts +177 -0
- package/tests/AnimatePresenceEnterExit.animated.test.tsx +176 -0
- package/tests/AnimatedByProp.animated.test.tsx +138 -0
- package/tests/AnimationBehavior.animated.test.tsx +543 -0
- package/tests/AnimationTiming.animated.test.tsx +195 -0
- package/tests/AnimationsWithMediaQueries.animated.test.tsx +154 -0
- package/tests/BuildAButton.test.tsx +87 -0
- package/tests/ButtonCircular.test.tsx +17 -0
- package/tests/ButtonCustom.test.tsx +17 -0
- package/tests/ButtonIconColor.test.tsx +23 -0
- package/tests/ButtonUnstyled.test.tsx +56 -0
- package/tests/ClickDuringEnter.animated.test.tsx +174 -0
- package/tests/ColorTokenFallback.test.tsx +45 -0
- package/tests/DOMNodeAPIs.test.tsx +161 -0
- package/tests/DialogFocusScope.animated.test.tsx +309 -0
- package/tests/DialogNested.test.tsx +128 -0
- package/tests/DialogOpenControlled.test.tsx +42 -0
- package/tests/DialogPointerEvents.animated.test.tsx +108 -0
- package/tests/DialogScoped.test.tsx +137 -0
- package/tests/DialogSheetAdapt.test.tsx +68 -0
- package/tests/DialogSheetAdaptResize.test.tsx +161 -0
- package/tests/DismissLayerStacking.test.tsx +292 -0
- package/tests/DriverDisableAnimationProps.animated.test.tsx +157 -0
- package/tests/ExitCompletion.animated.test.tsx +425 -0
- package/tests/ExitTimingCheck.animated.test.ts +34 -0
- package/tests/FocusVisibleButton.test.tsx +41 -0
- package/tests/FocusVisibleButtonPointerFocus.test.tsx +23 -0
- package/tests/FocusVisibleButtonPointerFocusWithFocusStyle.test.tsx +40 -0
- package/tests/FocusWithinStyle.animated.test.tsx +66 -0
- package/tests/FocusWithinStyle.test.tsx +60 -0
- package/tests/FormButtonType.test.tsx +42 -0
- package/tests/GlobalScopedTriggerIsolation.test.tsx +89 -0
- package/tests/GroupHoverMobile.test.tsx +52 -0
- package/tests/GroupPressInVariant.test.tsx +82 -0
- package/tests/GroupProp.test.tsx +30 -0
- package/tests/GroupPseudoVariantOverride.test.tsx +57 -0
- package/tests/GroupUseCases.test.tsx +111 -0
- package/tests/GuiSiteMotion.test.ts +481 -0
- package/tests/HeightMediaQueryOverride.test.tsx +112 -0
- package/tests/InputAutoFocusAfterMenu.test.tsx +55 -0
- package/tests/InputAutoFocusStyled.test.tsx +22 -0
- package/tests/ListItem.test.tsx +129 -0
- package/tests/MediaQueriesV5.test.tsx +113 -0
- package/tests/MediaQueryGtMd.test.tsx +84 -0
- package/tests/MenuAboveDialog.test.tsx +108 -0
- package/tests/MenuAccessibility.test.tsx +346 -0
- package/tests/MenuAnimatePosition.animated.test.tsx +57 -0
- package/tests/MenuArrowAnimatePresence.animated.test.tsx +71 -0
- package/tests/MenuAsChildPosition.test.tsx +16 -0
- package/tests/MenuAutoResize.test.tsx +54 -0
- package/tests/MenuFocusLeave.test.tsx +181 -0
- package/tests/MenuHighlight.test.tsx +165 -0
- package/tests/MenuHoverKeyboardBugs.test.tsx +252 -0
- package/tests/MenuItemFocus.test.tsx +59 -0
- package/tests/MenuItemPseudoOverride.test.tsx +231 -0
- package/tests/MenuMultiTrigger.test.tsx +101 -0
- package/tests/MenuOverflow.test.tsx +93 -0
- package/tests/MenuStayInFrame.test.tsx +102 -0
- package/tests/MenuSubKeyboardFocus.test.tsx +220 -0
- package/tests/MenuSubLeftSafePolygon.test.tsx +88 -0
- package/tests/MenuSubNestedPosition.test.tsx +48 -0
- package/tests/MenuSubSafePolygon.test.tsx +97 -0
- package/tests/MenuSubStyled.test.tsx +40 -0
- package/tests/MenuTheme.test.tsx +34 -0
- package/tests/MenuUnstyled.test.tsx +56 -0
- package/tests/MultiDriverAnimation.test.tsx +207 -0
- package/tests/NewInputBasic.test.tsx +50 -0
- package/tests/NewInputEvents.test.tsx +55 -0
- package/tests/OnLayout.test.tsx +163 -0
- package/tests/OnLayoutScale.test.tsx +100 -0
- package/tests/OnLayoutStress.test.tsx +304 -0
- package/tests/ParagraphSpanFontInheritance.test.tsx +73 -0
- package/tests/PointerEvents.test.tsx +123 -0
- package/tests/Popover.animated.test.tsx +234 -0
- package/tests/PopoverAndMenuMultiTrigger.test.tsx +184 -0
- package/tests/PopoverAnimatePosition.animated.test.tsx +51 -0
- package/tests/PopoverClickDuringEnter.animated.test.tsx +197 -0
- package/tests/PopoverFocusScope.test.tsx +242 -0
- package/tests/PopoverHoverable.test.tsx +383 -0
- package/tests/PopoverHoverableDisableClick.test.tsx +106 -0
- package/tests/PopoverHoverableRapid.test.tsx +129 -0
- package/tests/PopoverHoverableReposition.test.tsx +111 -0
- package/tests/PopoverHoverableScoped.animated.test.tsx +103 -0
- package/tests/PopoverHoverableStress.test.tsx +169 -0
- package/tests/PopoverInitialPosition.animated.test.tsx +82 -0
- package/tests/PopoverMiddlewareSkipRegression.animated.test.tsx +221 -0
- package/tests/PopoverScoped.test.tsx +128 -0
- package/tests/PopoverScopedPositionGlitch.animated.test.tsx +184 -0
- package/tests/PopoverTriggerIsolation.test.tsx +62 -0
- package/tests/PseudoTransition.animated.test.tsx +319 -0
- package/tests/RawAnimatedValue.test.tsx +147 -0
- package/tests/RemoveScroll.test.tsx +223 -0
- package/tests/RenderProp.test.tsx +293 -0
- package/tests/ScrollViewRef.test.tsx +39 -0
- package/tests/SelectClickHold.test.tsx +147 -0
- package/tests/SelectFocusScope.test.tsx +176 -0
- package/tests/SelectInnerPositioning.test.tsx +82 -0
- package/tests/SelectKeyboardNav.test.tsx +173 -0
- package/tests/SelectPositioning.test.tsx +56 -0
- package/tests/SelectTypeahead.test.tsx +63 -0
- package/tests/Shadows.test.tsx +14 -0
- package/tests/SheetAnimation.animated.test.tsx +413 -0
- package/tests/SheetDrag.animated.test.tsx +223 -0
- package/tests/SheetDragResist.animated.test.tsx +393 -0
- package/tests/SheetOnAnimationComplete.animated.test.tsx +62 -0
- package/tests/SheetScrollLock.animated.test.tsx +287 -0
- package/tests/SheetScrollableDrag.animated.test.tsx +1264 -0
- package/tests/SheetSnapPointsFit.animated.test.tsx +259 -0
- package/tests/ShorthandVariables.test.tsx +44 -0
- package/tests/SpinnerCustomColors.test.tsx +67 -0
- package/tests/StackZIndex.test.tsx +51 -0
- package/tests/StressPagePerf.test.tsx +76 -0
- package/tests/StylePlatform.test.tsx +38 -0
- package/tests/StyleProp.test.tsx +20 -0
- package/tests/StyledAnchor.test.tsx +17 -0
- package/tests/StyledButtonTheme.test.tsx +22 -0
- package/tests/StyledButtonVariantPseudo.test.tsx +20 -0
- package/tests/StyledButtonVariantPseudoMerge.animated.test.tsx +33 -0
- package/tests/StyledCheckboxTheme.test.tsx +16 -0
- package/tests/StyledContextColor.test.tsx +119 -0
- package/tests/StyledContextTokens.test.tsx +56 -0
- package/tests/StyledHOCNamed.test.tsx +16 -0
- package/tests/StyledHtml.test.tsx +161 -0
- package/tests/StyledIconColor.test.tsx +32 -0
- package/tests/StyledInputFocusStyle.test.tsx +19 -0
- package/tests/StyledInputOnFocus.test.tsx +27 -0
- package/tests/StyledMediaQueryMerge.test.tsx +66 -0
- package/tests/StyledRNW.test.tsx +17 -0
- package/tests/StyledStyleableInputOnFocus.test.tsx +27 -0
- package/tests/StyledStyleableInputVariant.test.tsx +22 -0
- package/tests/StyledStyledStyleableInputOnFocus.test.tsx +27 -0
- package/tests/StyledVariantTextColor.test.tsx +24 -0
- package/tests/StyledViewOnFocus.test.tsx +27 -0
- package/tests/TabHoverAnimation.animated.test.tsx +468 -0
- package/tests/TabHoverPositionSmooth.animated.test.tsx +129 -0
- package/tests/TextNestedInheritance.test.tsx +93 -0
- package/tests/ThemeChange.test.tsx +70 -0
- package/tests/ThemeComponentResolution.test.tsx +82 -0
- package/tests/ThemeConditionalName.test.tsx +34 -0
- package/tests/ThemeMediaAnimation.test.tsx +65 -0
- package/tests/ThemeNested.test.tsx +141 -0
- package/tests/ThemeReset.test.tsx +63 -0
- package/tests/ThemeShallow.test.tsx +95 -0
- package/tests/Toast.test.tsx +106 -0
- package/tests/ToggleGroup.test.tsx +61 -0
- package/tests/ToggleGroupActiveProps.test.tsx +38 -0
- package/tests/ToggleGroupXGroup.test.tsx +172 -0
- package/tests/TooltipAnimation.animated.test.tsx +260 -0
- package/tests/TooltipEnterInterrupt.animated.test.tsx +76 -0
- package/tests/TooltipGlobalPattern.animated.test.tsx +208 -0
- package/tests/TooltipGroup.animated.test.tsx +79 -0
- package/tests/TooltipMultiTrigger.test.tsx +116 -0
- package/tests/TooltipPositionJump.animated.test.tsx +229 -0
- package/tests/TooltipPositionJumpNotes.md +219 -0
- package/tests/TooltipRapidSwitch.animated.test.tsx +399 -0
- package/tests/TooltipTriggerInline.test.tsx +65 -0
- package/tests/TransformMediaQueryMerge.test.tsx +104 -0
- package/tests/TransitionEnterExit.animated.test.tsx +311 -0
- package/tests/UseTheme.test.tsx +16 -0
- package/tests/V5ThemeBuilderOutput.test.tsx +164 -0
- package/tests/VariantFontFamily.test.tsx +11 -0
- package/tests/VariantsOrder.test.tsx +53 -0
- package/tests/_debug_position.mjs +52 -0
- package/tests/test-utils.ts +106 -0
- package/tests/utils.tsx +54 -0
- package/tsconfig.json +45 -0
- package/vite-env.d.ts +1 -0
- package/vite.config.ts +14 -0
- package/webpack.config.js +139 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test'
|
|
2
|
+
import { setupPage } from './test-utils'
|
|
3
|
+
|
|
4
|
+
test.describe('Select Inner Positioning', () => {
|
|
5
|
+
test.beforeEach(async ({ page }) => {
|
|
6
|
+
await setupPage(page, { name: 'SelectFocusScopeCase', type: 'useCase' })
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
test('selected item aligns with trigger vertically', async ({ page }) => {
|
|
10
|
+
// first select banana, then reopen to check alignment
|
|
11
|
+
const trigger = page.getByTestId('default-select-trigger')
|
|
12
|
+
const triggerBox = await trigger.boundingBox()
|
|
13
|
+
expect(triggerBox).toBeTruthy()
|
|
14
|
+
|
|
15
|
+
await trigger.click()
|
|
16
|
+
await page.waitForTimeout(400)
|
|
17
|
+
|
|
18
|
+
const viewport = page.getByTestId('default-select-viewport')
|
|
19
|
+
await expect(viewport).toBeVisible()
|
|
20
|
+
|
|
21
|
+
// banana is pre-selected (index 1), find its position
|
|
22
|
+
const banana = page.getByTestId('default-select-banana')
|
|
23
|
+
const bananaBox = await banana.boundingBox()
|
|
24
|
+
expect(bananaBox).toBeTruthy()
|
|
25
|
+
|
|
26
|
+
// the selected item (banana) should vertically overlap the trigger
|
|
27
|
+
const triggerCenter = triggerBox!.y + triggerBox!.height / 2
|
|
28
|
+
const bananaCenter = bananaBox!.y + bananaBox!.height / 2
|
|
29
|
+
|
|
30
|
+
// allow some tolerance for borders/padding
|
|
31
|
+
expect(Math.abs(triggerCenter - bananaCenter)).toBeLessThan(triggerBox!.height)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
test('dropdown has constrained max-height', async ({ page }) => {
|
|
35
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
36
|
+
await trigger.click()
|
|
37
|
+
await page.waitForTimeout(400)
|
|
38
|
+
|
|
39
|
+
const viewport = page.getByTestId('basic-select-viewport')
|
|
40
|
+
await expect(viewport).toBeVisible()
|
|
41
|
+
const viewportBox = await viewport.boundingBox()
|
|
42
|
+
expect(viewportBox).toBeTruthy()
|
|
43
|
+
|
|
44
|
+
// viewport should not exceed the window height
|
|
45
|
+
const windowHeight = await page.evaluate(() => window.innerHeight)
|
|
46
|
+
expect(viewportBox!.height).toBeLessThanOrEqual(windowHeight)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
test('dropdown overlaps trigger on re-open after selection', async ({ page }) => {
|
|
50
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
51
|
+
|
|
52
|
+
// open and select orange
|
|
53
|
+
await trigger.click()
|
|
54
|
+
await page.waitForTimeout(400)
|
|
55
|
+
const viewport = page.getByTestId('basic-select-viewport')
|
|
56
|
+
await expect(viewport).toBeVisible()
|
|
57
|
+
|
|
58
|
+
const orange = page.getByTestId('select-orange')
|
|
59
|
+
await orange.click()
|
|
60
|
+
await page.waitForTimeout(300)
|
|
61
|
+
await expect(viewport).not.toBeVisible()
|
|
62
|
+
|
|
63
|
+
// re-open
|
|
64
|
+
const triggerBox = await trigger.boundingBox()
|
|
65
|
+
expect(triggerBox).toBeTruthy()
|
|
66
|
+
await trigger.click()
|
|
67
|
+
await page.waitForTimeout(400)
|
|
68
|
+
await expect(viewport).toBeVisible()
|
|
69
|
+
|
|
70
|
+
const viewportBox = await viewport.boundingBox()
|
|
71
|
+
expect(viewportBox).toBeTruthy()
|
|
72
|
+
|
|
73
|
+
// viewport should still overlap the trigger
|
|
74
|
+
const triggerTop = triggerBox!.y
|
|
75
|
+
const triggerBottom = triggerBox!.y + triggerBox!.height
|
|
76
|
+
const viewportTop = viewportBox!.y
|
|
77
|
+
const viewportBottom = viewportBox!.y + viewportBox!.height
|
|
78
|
+
const verticalOverlap =
|
|
79
|
+
Math.min(triggerBottom, viewportBottom) - Math.max(triggerTop, viewportTop)
|
|
80
|
+
expect(verticalOverlap).toBeGreaterThan(0)
|
|
81
|
+
})
|
|
82
|
+
})
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test'
|
|
2
|
+
import { setupPage } from './test-utils'
|
|
3
|
+
|
|
4
|
+
test.describe('Select Keyboard Navigation', () => {
|
|
5
|
+
test.beforeEach(async ({ page }) => {
|
|
6
|
+
await setupPage(page, { name: 'SelectFocusScopeCase', type: 'useCase' })
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
test('first item is focused on open', async ({ page }) => {
|
|
10
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
11
|
+
await trigger.click()
|
|
12
|
+
await page.waitForTimeout(300)
|
|
13
|
+
|
|
14
|
+
// first item should be focused immediately on open
|
|
15
|
+
const appleItem = page.getByTestId('select-apple')
|
|
16
|
+
await expect(appleItem).toBeFocused()
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
test('arrow down moves to next item', async ({ page }) => {
|
|
20
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
21
|
+
await trigger.click()
|
|
22
|
+
await page.waitForTimeout(300)
|
|
23
|
+
|
|
24
|
+
// first item focused on open
|
|
25
|
+
const appleItem = page.getByTestId('select-apple')
|
|
26
|
+
await expect(appleItem).toBeFocused()
|
|
27
|
+
|
|
28
|
+
// arrow down should move to banana (second item)
|
|
29
|
+
await page.keyboard.press('ArrowDown')
|
|
30
|
+
await page.waitForTimeout(100)
|
|
31
|
+
|
|
32
|
+
const bananaItem = page.getByTestId('select-banana')
|
|
33
|
+
await expect(bananaItem).toBeFocused()
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
test('arrow up moves to previous item', async ({ page }) => {
|
|
37
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
38
|
+
await trigger.click()
|
|
39
|
+
await page.waitForTimeout(300)
|
|
40
|
+
|
|
41
|
+
// navigate down first
|
|
42
|
+
await page.keyboard.press('ArrowDown')
|
|
43
|
+
await page.waitForTimeout(100)
|
|
44
|
+
|
|
45
|
+
const bananaItem = page.getByTestId('select-banana')
|
|
46
|
+
await expect(bananaItem).toBeFocused()
|
|
47
|
+
|
|
48
|
+
// arrow up should go back to apple
|
|
49
|
+
await page.keyboard.press('ArrowUp')
|
|
50
|
+
await page.waitForTimeout(100)
|
|
51
|
+
|
|
52
|
+
const appleItem = page.getByTestId('select-apple')
|
|
53
|
+
await expect(appleItem).toBeFocused()
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
test('selected item is focused on re-open', async ({ page }) => {
|
|
57
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
58
|
+
|
|
59
|
+
// open and select banana (index 1)
|
|
60
|
+
await trigger.click()
|
|
61
|
+
await page.waitForTimeout(300)
|
|
62
|
+
const bananaItem = page.getByTestId('select-banana')
|
|
63
|
+
await bananaItem.click()
|
|
64
|
+
await page.waitForTimeout(200)
|
|
65
|
+
|
|
66
|
+
// re-open - banana should be focused
|
|
67
|
+
await trigger.click()
|
|
68
|
+
await page.waitForTimeout(300)
|
|
69
|
+
|
|
70
|
+
await expect(bananaItem).toBeFocused()
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
test('arrow down from selected item goes to next', async ({ page }) => {
|
|
74
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
75
|
+
|
|
76
|
+
// select banana
|
|
77
|
+
await trigger.click()
|
|
78
|
+
await page.waitForTimeout(300)
|
|
79
|
+
const bananaItem = page.getByTestId('select-banana')
|
|
80
|
+
await bananaItem.click()
|
|
81
|
+
await page.waitForTimeout(200)
|
|
82
|
+
|
|
83
|
+
// re-open
|
|
84
|
+
await trigger.click()
|
|
85
|
+
await page.waitForTimeout(300)
|
|
86
|
+
|
|
87
|
+
// banana should be focused
|
|
88
|
+
await expect(bananaItem).toBeFocused()
|
|
89
|
+
|
|
90
|
+
// arrow down should go to orange (next after banana)
|
|
91
|
+
await page.keyboard.press('ArrowDown')
|
|
92
|
+
await page.waitForTimeout(100)
|
|
93
|
+
|
|
94
|
+
const orangeItem = page.getByTestId('select-orange')
|
|
95
|
+
await expect(orangeItem).toBeFocused()
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
test('arrow up from selected item goes to previous', async ({ page }) => {
|
|
99
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
100
|
+
|
|
101
|
+
// select banana
|
|
102
|
+
await trigger.click()
|
|
103
|
+
await page.waitForTimeout(300)
|
|
104
|
+
const bananaItem = page.getByTestId('select-banana')
|
|
105
|
+
await bananaItem.click()
|
|
106
|
+
await page.waitForTimeout(200)
|
|
107
|
+
|
|
108
|
+
// re-open
|
|
109
|
+
await trigger.click()
|
|
110
|
+
await page.waitForTimeout(300)
|
|
111
|
+
|
|
112
|
+
// banana should be focused
|
|
113
|
+
await expect(bananaItem).toBeFocused()
|
|
114
|
+
|
|
115
|
+
// arrow up should go to apple (before banana)
|
|
116
|
+
await page.keyboard.press('ArrowUp')
|
|
117
|
+
await page.waitForTimeout(100)
|
|
118
|
+
|
|
119
|
+
const appleItem = page.getByTestId('select-apple')
|
|
120
|
+
await expect(appleItem).toBeFocused()
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
// tests for selects with default/initial values (like the demo page)
|
|
124
|
+
test('default value select: selected item is focused on first open', async ({
|
|
125
|
+
page,
|
|
126
|
+
}) => {
|
|
127
|
+
const trigger = page.getByTestId('default-select-trigger')
|
|
128
|
+
await trigger.click()
|
|
129
|
+
await page.waitForTimeout(300)
|
|
130
|
+
|
|
131
|
+
// banana is the default value (index 1), should be focused on open
|
|
132
|
+
const bananaItem = page.getByTestId('default-select-banana')
|
|
133
|
+
await expect(bananaItem).toBeFocused()
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
test('default value select: arrow down from default selected item goes to next', async ({
|
|
137
|
+
page,
|
|
138
|
+
}) => {
|
|
139
|
+
const trigger = page.getByTestId('default-select-trigger')
|
|
140
|
+
await trigger.click()
|
|
141
|
+
await page.waitForTimeout(300)
|
|
142
|
+
|
|
143
|
+
// banana is default selected (index 1)
|
|
144
|
+
const bananaItem = page.getByTestId('default-select-banana')
|
|
145
|
+
await expect(bananaItem).toBeFocused()
|
|
146
|
+
|
|
147
|
+
// arrow down should go to orange (next after banana)
|
|
148
|
+
await page.keyboard.press('ArrowDown')
|
|
149
|
+
await page.waitForTimeout(100)
|
|
150
|
+
|
|
151
|
+
const orangeItem = page.getByTestId('default-select-orange')
|
|
152
|
+
await expect(orangeItem).toBeFocused()
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
test('default value select: arrow up from default selected item goes to previous', async ({
|
|
156
|
+
page,
|
|
157
|
+
}) => {
|
|
158
|
+
const trigger = page.getByTestId('default-select-trigger')
|
|
159
|
+
await trigger.click()
|
|
160
|
+
await page.waitForTimeout(300)
|
|
161
|
+
|
|
162
|
+
// banana is default selected (index 1)
|
|
163
|
+
const bananaItem = page.getByTestId('default-select-banana')
|
|
164
|
+
await expect(bananaItem).toBeFocused()
|
|
165
|
+
|
|
166
|
+
// arrow up should go to apple (before banana)
|
|
167
|
+
await page.keyboard.press('ArrowUp')
|
|
168
|
+
await page.waitForTimeout(100)
|
|
169
|
+
|
|
170
|
+
const appleItem = page.getByTestId('default-select-apple')
|
|
171
|
+
await expect(appleItem).toBeFocused()
|
|
172
|
+
})
|
|
173
|
+
})
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test'
|
|
2
|
+
import { setupPage } from './test-utils'
|
|
3
|
+
|
|
4
|
+
test.describe('Select Positioning', () => {
|
|
5
|
+
test.beforeEach(async ({ page }) => {
|
|
6
|
+
await setupPage(page, { name: 'SelectFocusScopeCase', type: 'useCase' })
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
test('dropdown overlaps the trigger (inner positioning)', async ({ page }) => {
|
|
10
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
11
|
+
const triggerBox = await trigger.boundingBox()
|
|
12
|
+
expect(triggerBox).toBeTruthy()
|
|
13
|
+
|
|
14
|
+
await trigger.click()
|
|
15
|
+
await page.waitForTimeout(400)
|
|
16
|
+
|
|
17
|
+
const viewport = page.getByTestId('basic-select-viewport')
|
|
18
|
+
await expect(viewport).toBeVisible()
|
|
19
|
+
const viewportBox = await viewport.boundingBox()
|
|
20
|
+
expect(viewportBox).toBeTruthy()
|
|
21
|
+
|
|
22
|
+
// inner positioning: viewport should vertically overlap the trigger
|
|
23
|
+
const triggerTop = triggerBox!.y
|
|
24
|
+
const triggerBottom = triggerBox!.y + triggerBox!.height
|
|
25
|
+
const viewportTop = viewportBox!.y
|
|
26
|
+
const viewportBottom = viewportBox!.y + viewportBox!.height
|
|
27
|
+
const verticalOverlap =
|
|
28
|
+
Math.min(triggerBottom, viewportBottom) - Math.max(triggerTop, viewportTop)
|
|
29
|
+
expect(verticalOverlap).toBeGreaterThan(0)
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
test('lazyMount dropdown overlaps the trigger (inner positioning)', async ({
|
|
33
|
+
page,
|
|
34
|
+
}) => {
|
|
35
|
+
const trigger = page.getByTestId('lazy-select-trigger')
|
|
36
|
+
const triggerBox = await trigger.boundingBox()
|
|
37
|
+
expect(triggerBox).toBeTruthy()
|
|
38
|
+
|
|
39
|
+
await trigger.click()
|
|
40
|
+
await page.waitForTimeout(600)
|
|
41
|
+
|
|
42
|
+
const viewport = page.getByTestId('lazy-select-viewport')
|
|
43
|
+
await expect(viewport).toBeVisible()
|
|
44
|
+
const viewportBox = await viewport.boundingBox()
|
|
45
|
+
expect(viewportBox).toBeTruthy()
|
|
46
|
+
|
|
47
|
+
// inner positioning: viewport should vertically overlap the trigger
|
|
48
|
+
const triggerTop = triggerBox!.y
|
|
49
|
+
const triggerBottom = triggerBox!.y + triggerBox!.height
|
|
50
|
+
const viewportTop = viewportBox!.y
|
|
51
|
+
const viewportBottom = viewportBox!.y + viewportBox!.height
|
|
52
|
+
const verticalOverlap =
|
|
53
|
+
Math.min(triggerBottom, viewportBottom) - Math.max(triggerTop, viewportTop)
|
|
54
|
+
expect(verticalOverlap).toBeGreaterThan(0)
|
|
55
|
+
})
|
|
56
|
+
})
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test'
|
|
2
|
+
import { setupPage } from './test-utils'
|
|
3
|
+
|
|
4
|
+
test.describe('Select Typeahead', () => {
|
|
5
|
+
test.beforeEach(async ({ page }) => {
|
|
6
|
+
await setupPage(page, { name: 'SelectFocusScopeCase', type: 'useCase' })
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
test('typing a letter focuses matching item', async ({ page }) => {
|
|
10
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
11
|
+
await trigger.click()
|
|
12
|
+
|
|
13
|
+
const viewport = page.getByTestId('basic-select-viewport')
|
|
14
|
+
await expect(viewport).toBeVisible({ timeout: 5000 })
|
|
15
|
+
await page.waitForTimeout(300)
|
|
16
|
+
|
|
17
|
+
// type 'b' to jump to Banana
|
|
18
|
+
await page.keyboard.press('b')
|
|
19
|
+
await page.waitForTimeout(100)
|
|
20
|
+
|
|
21
|
+
const banana = page.getByTestId('select-banana')
|
|
22
|
+
await expect(banana).toBeFocused()
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
test('typing multiple letters narrows match', async ({ page }) => {
|
|
26
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
27
|
+
await trigger.click()
|
|
28
|
+
|
|
29
|
+
const viewport = page.getByTestId('basic-select-viewport')
|
|
30
|
+
await expect(viewport).toBeVisible({ timeout: 5000 })
|
|
31
|
+
await page.waitForTimeout(300)
|
|
32
|
+
|
|
33
|
+
// type 'br' to match Broccoli (not Banana)
|
|
34
|
+
await page.keyboard.press('b')
|
|
35
|
+
await page.keyboard.press('r')
|
|
36
|
+
await page.waitForTimeout(100)
|
|
37
|
+
|
|
38
|
+
const broccoli = page.getByTestId('select-broccoli')
|
|
39
|
+
await expect(broccoli).toBeFocused()
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
test('typeahead resets after timeout', async ({ page }) => {
|
|
43
|
+
const trigger = page.getByTestId('basic-select-trigger')
|
|
44
|
+
await trigger.click()
|
|
45
|
+
|
|
46
|
+
const viewport = page.getByTestId('basic-select-viewport')
|
|
47
|
+
await expect(viewport).toBeVisible({ timeout: 5000 })
|
|
48
|
+
await page.waitForTimeout(300)
|
|
49
|
+
|
|
50
|
+
// type 'b' → Banana
|
|
51
|
+
await page.keyboard.press('b')
|
|
52
|
+
await page.waitForTimeout(100)
|
|
53
|
+
await expect(page.getByTestId('select-banana')).toBeFocused()
|
|
54
|
+
|
|
55
|
+
// wait for typeahead buffer to reset (750ms default)
|
|
56
|
+
await page.waitForTimeout(800)
|
|
57
|
+
|
|
58
|
+
// type 'c' → Carrot (not 'bc' continuation)
|
|
59
|
+
await page.keyboard.press('c')
|
|
60
|
+
await page.waitForTimeout(100)
|
|
61
|
+
await expect(page.getByTestId('select-carrot')).toBeFocused()
|
|
62
|
+
})
|
|
63
|
+
})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
import { setupPage } from './test-utils'
|
|
4
|
+
import { getStyles } from './utils'
|
|
5
|
+
|
|
6
|
+
test.beforeEach(async ({ page }) => {
|
|
7
|
+
await setupPage(page, { name: 'Shadows', type: 'useCase' })
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
test(`shadows work`, async ({ page }) => {
|
|
11
|
+
const button = page.locator('#shadowed')
|
|
12
|
+
const styles = await getStyles(button)
|
|
13
|
+
expect(styles.boxShadow).toBe(`rgba(0, 0, 0, 0.04) 0px 0px 60px 0px`)
|
|
14
|
+
})
|