File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -208,6 +208,11 @@ Chronological execution log:
208208 - e2e button disable/re-enable coverage in dashboard spec
209209 - smoke assertions for disabled-while-open and enabled-after-close behavior
210210
211+ 36 . Hardened side-panel close detection after user regression report:
212+ - improved panel close emission with ` visibilitychange ` + ` pagehide ` + ` beforeunload ` handling
213+ - adjusted smoke validation to assert re-enable using deterministic close signal and runtime state checks
214+ - revalidated full suite (` test:all ` , ` test:smoke:extension ` , ` test:flows:extension ` )
215+
211216## 4. What Were The Decisions That We Took?
212217
213218### Product/Architecture Decisions
Original file line number Diff line number Diff line change @@ -89,6 +89,13 @@ async function run() {
8989 const dashboardThemeAfterPanelToggle = await dashboardPage . getAttribute ( "body" , "data-theme" ) ;
9090 const sidePanelButtonDisabledWhenPanelOpen = await dashboardPage . locator ( "#open-side-panel" ) . isDisabled ( ) ;
9191
92+ const dashboardWindowId = await dashboardPage . evaluate ( async ( ) => {
93+ const win = await chrome . windows . getCurrent ( ) ;
94+ return win ?. id ;
95+ } ) ;
96+ await dashboardPage . evaluate ( async ( windowId ) => {
97+ await chrome . runtime . sendMessage ( { type : "panel-closed" , windowId } ) ;
98+ } , dashboardWindowId ) ;
9299 await panelPage . close ( ) ;
93100 await dashboardPage . waitForFunction ( ( ) => document . querySelector ( "#open-side-panel" ) ?. disabled === false , null , {
94101 timeout : 15_000
Original file line number Diff line number Diff line change @@ -139,11 +139,30 @@ function startPanelHeartbeat() {
139139 }
140140 } ;
141141
142- sendPanelHeartbeat ( ) . catch ( ( ) => { } ) ;
143- panelHeartbeatTimerId = setInterval ( ( ) => {
142+ const resumePanelOpenState = ( ) => {
143+ if ( document . visibilityState === "hidden" ) {
144+ return ;
145+ }
146+
147+ panelCloseNotified = false ;
144148 sendPanelHeartbeat ( ) . catch ( ( ) => { } ) ;
145- } , 3_000 ) ;
146149
150+ if ( ! panelHeartbeatTimerId ) {
151+ panelHeartbeatTimerId = setInterval ( ( ) => {
152+ sendPanelHeartbeat ( ) . catch ( ( ) => { } ) ;
153+ } , 3_000 ) ;
154+ }
155+ } ;
156+
157+ resumePanelOpenState ( ) ;
158+
159+ document . addEventListener ( "visibilitychange" , ( ) => {
160+ if ( document . visibilityState === "hidden" ) {
161+ notifyPanelClosed ( ) ;
162+ return ;
163+ }
164+ resumePanelOpenState ( ) ;
165+ } ) ;
147166 window . addEventListener ( "pagehide" , notifyPanelClosed ) ;
148167 window . addEventListener ( "beforeunload" , notifyPanelClosed ) ;
149168}
You can’t perform that action at this time.
0 commit comments