diff --git a/html/semantics/interactive-elements/the-dialog-element/dialog-close-via-attribute.html b/html/semantics/interactive-elements/the-dialog-element/dialog-close-via-attribute.html
index 5c2e70f87a6101..cec1cf81fa796a 100644
--- a/html/semantics/interactive-elements/the-dialog-element/dialog-close-via-attribute.html
+++ b/html/semantics/interactive-elements/the-dialog-element/dialog-close-via-attribute.html
@@ -14,6 +14,7 @@
const button = document.querySelector('button');
promise_test(async t => {
+ button.focus();
dialog.showModal();
let closeFired = false;
@@ -32,6 +33,9 @@
assert_true(closeFired,
'The close event should be fired when removing the open attribute.');
+ assert_equals(document.activeElement, button,
+ 'The previously focused element should be focused after removing the open attribute.');
+
let buttonFiredClick = false;
button.addEventListener('click', () => buttonFiredClick = true);
await test_driver.click(button);
@@ -40,6 +44,7 @@
}, 'Removing the open attribute from an open modal dialog should run the closing algorithm.');
promise_test(async t => {
+ button.focus();
dialog.show();
let closeFired = false;
@@ -55,5 +60,8 @@
'The cancel event should not fire when removing the open attribute.');
assert_true(closeFired,
'The close event should be fired when removing the open attribute.');
+
+ assert_equals(document.activeElement, button,
+ 'The previously focused element should be focused after removing the open attribute.');
}, 'Removing the open attribute from an open non-modal dialog should fire a close event.');