Skip to content

Commit 07fe7d0

Browse files
committed
Add test for non-menuitem [autofocus] child
1 parent d89b169 commit 07fe7d0

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

test/test.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,51 @@ describe('details-menu element', function() {
546546
})
547547
})
548548

549+
describe('with input[autofocus]', function() {
550+
beforeEach(function() {
551+
const container = document.createElement('div')
552+
container.innerHTML = `
553+
<details>
554+
<summary>Menu 1</summary>
555+
<details-menu src="/test">
556+
<input autofocus>
557+
<button role="menuitem">First item</button>
558+
</details-menu>
559+
</details>
560+
`
561+
document.body.append(container)
562+
})
563+
564+
afterEach(function() {
565+
document.body.innerHTML = ''
566+
})
567+
568+
it('autofocuses on input on mouse click', function() {
569+
const details = document.querySelector('details')
570+
const summary = details.querySelector('summary')
571+
const input = details.querySelector('input')
572+
573+
summary.focus()
574+
details.open = true
575+
summary.dispatchEvent(new MouseEvent('mousedown', {bubbles: true}))
576+
details.dispatchEvent(new CustomEvent('toggle'))
577+
assert.equal(input, document.activeElement, 'mouse toggle open leaves summary focused')
578+
})
579+
580+
it('autofocuses on input on keyboard activation', function() {
581+
const details = document.querySelector('details')
582+
const summary = details.querySelector('summary')
583+
const input = details.querySelector('input')
584+
585+
summary.focus()
586+
details.open = true
587+
summary.dispatchEvent(new KeyboardEvent('keydown', {key: 'Enter', bubbles: true}))
588+
details.dispatchEvent(new CustomEvent('toggle'))
589+
590+
assert.equal(input, document.activeElement, 'toggle open focuses on [autofocus]')
591+
})
592+
})
593+
549594
describe('closing the menu', function() {
550595
beforeEach(function() {
551596
const container = document.createElement('div')

0 commit comments

Comments
 (0)