11import { describe , expect , it , beforeEach } from 'bun:test'
22import React from 'react'
3- import { act , fireEvent , render , screen , cleanup } from '@testing-library/react'
3+ import { act , fireEvent , render , screen , cleanup , waitFor } from '@testing-library/react'
44import { readFileSync } from 'fs'
55import { useEditorStore } from '@site/store/store'
66import { BreakpointFrame } from '@site/canvas/BreakpointFrame'
@@ -130,7 +130,7 @@ describe('canvas breakpoint rendering', () => {
130130 expect ( desktopNode . getAttribute ( 'data-hovered' ) ) . toBe ( 'true' )
131131 } )
132132
133- it ( 'dims inactive breakpoint frames only while editing a selected node in the open properties panel' , ( ) => {
133+ it ( 'dims inactive breakpoint frames only while editing a selected node in the open properties panel' , async ( ) => {
134134 const site = useEditorStore . getState ( ) . createSite ( 'Breakpoint Editing Focus' )
135135 const page = site . pages [ 0 ]
136136 const textId = useEditorStore . getState ( ) . insertNode ( 'base.text' , {
@@ -146,13 +146,14 @@ describe('canvas breakpoint rendering', () => {
146146
147147 const { rerender } = render ( < CanvasRoot /> )
148148
149- const tabletFrame = document . querySelector ( '[data-breakpoint-id="tablet"]' ) ?. parentElement
150- const mobileFrame = document . querySelector ( '[data-breakpoint-id="mobile"]' ) ?. parentElement
151- const desktopFrame = document . querySelector ( '[data-breakpoint-id="desktop"]' ) ?. parentElement
149+ const frameWrapper = ( breakpointId : string ) =>
150+ document . querySelector ( `[data-breakpoint-id="${ breakpointId } "]` ) ?. parentElement
152151
153- expect ( tabletFrame ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBeNull ( )
154- expect ( mobileFrame ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBe ( 'true' )
155- expect ( desktopFrame ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBe ( 'true' )
152+ await waitFor ( ( ) => {
153+ expect ( frameWrapper ( 'tablet' ) ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBeNull ( )
154+ expect ( frameWrapper ( 'mobile' ) ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBe ( 'true' )
155+ expect ( frameWrapper ( 'desktop' ) ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBe ( 'true' )
156+ } )
156157
157158 act ( ( ) => {
158159 useEditorStore . setState ( {
@@ -161,8 +162,10 @@ describe('canvas breakpoint rendering', () => {
161162 } )
162163 rerender ( < CanvasRoot /> )
163164
164- expect ( mobileFrame ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBeNull ( )
165- expect ( desktopFrame ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBeNull ( )
165+ await waitFor ( ( ) => {
166+ expect ( frameWrapper ( 'mobile' ) ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBeNull ( )
167+ expect ( frameWrapper ( 'desktop' ) ?. getAttribute ( 'data-breakpoint-dimmed' ) ) . toBeNull ( )
168+ } )
166169
167170 const css = readFileSync ( BREAKPOINT_FRAME_CSS , 'utf-8' )
168171 expect ( css ) . toContain ( '.frameWrapperDimmed' )
0 commit comments