This repository was archived by the owner on Sep 22, 2022. It is now read-only.
This repository was archived by the owner on Sep 22, 2022. It is now read-only.
Test for managing focus is failing #77
Open
Description
https://github.com/github/details-dialog-element/runs/5240152268?check_suite_focus=true
This test appears to have been failing since https://github.com/github/details-dialog-element/actions/runs/1766435305 but it looks like older runs may have been failing silently as tests were not running. See for example this run with missing logs https://github.com/github/details-dialog-element/runs/3652343581?check_suite_focus=true
Metadata
Metadata
Assignees
Labels
No labels
Activity
theinterned commentedon Feb 22, 2022
Discovered this in #72. I spent a bit of time trying to debug but was unsuccessful and bailed.
Skip failing test for managing focus
theinterned commentedon Mar 1, 2022
With a git bisect @koddsson and I isolated this to #48 it appears that tests were passing at the time so this is likely a change to Chrome since then.
theinterned commentedon Mar 1, 2022
@koddsson and I traced this to the
visibile
function:details-dialog-element/src/index.ts
Lines 36 to 42 in 2aa3a08
This function fails to score elements that are dependents of a closed
details
as not visible.Why? Previously (and in other browsers) elements that were dependents of a closed
details
had no bounding rect: ieel.offsetWidth
andel.offsetHeight
both returned0
. However, a recent change in Chromium (https://bugs.chromium.org/p/chromium/issues/detail?id=1276028) means that descendants of a closeddetails
now do have bounding rects.Solutions
There are a few options:
1. Add code to check if the element is a child of a closed dialog.
we can see this approach in effect in the
focus-trap
library:https://github.com/focus-trap/focus-trap/blob/0a5ce1bfd913edc4410aadfc98b1583de9d034cf/docs/demo-bundle.js#L406-L411
2. Update the CSS of descendants of a closed dialog
@koddsson asked about our specific use case in the chromium issue and received a useful suggestion to simply set the descendants of a closed details to
display: none
: