These tests are all in separate files (or test variants) because we need to be sure we're starting from zero user activation.
-dialog
and -CloseWatcher
filesWe endeavor to have all the tests in these files cover both <dialog>
elements and the CloseWatcher
API. (And sometimes the popover=""
attribute.)
When the test expectations are the same for both <dialog>
and CloseWatcher
, we use WPT's variants feature.
However, in some cases different expectations are necessary. This is because <dialog>
s queue a task to fire their close
event, and do not queue a task to fire their cancel
event. Thus, when you have two <dialog>
s grouped together, you get the somewhat-strange behavior of both cancel
s firing first, then both close
s. Whereas CloseWatcher
s do not have this issue; both events fire synchronously.
(Note that scheduling the cancel
event for <dialog>
s is not really possible, since it would then fire after the dialog has been closed in the DOM and visually. So the only reasonable fix for this would be to stop scheduling the close
event for dialogs. That's risky from a compat standpoint, so for now, we test the strange behavior.)