})
})
+ it('should be able to handle quick toggling between siblings', () =>
+ new Promise(resolve => {
+ fixtureEl.innerHTML = [
+ '<div class="accordion" id="accordionExample">',
+ ' <div class="accordion-item">',
+ ' <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">',
+ ' Accordion Item #1',
+ ' </button>',
+ ' <div id="collapseOne" class="accordion-collapse collapse" aria-labelledby="headingOne" data-bs-parent="#accordionExample">',
+ ' </div>',
+ ' </div>',
+ ' <div class="accordion-item">',
+ ' <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">',
+ ' Accordion Item #2',
+ ' </button>',
+ ' <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">',
+ ' </div>',
+ ' </div>',
+ '</div>'
+ ].join('')
+
+ const el = selector => fixtureEl.querySelector(selector)
+
+ const btn1 = el('[data-bs-target="#collapseOne"]')
+ const btn2 = el('[data-bs-target="#collapseTwo"]')
+
+ const collapseEl1 = el('#collapseOne')
+ const collapseEl2 = el('#collapseTwo')
+
+ collapseEl2.addEventListener('shown.bs.collapse', () => {
+ throw new Error('should not fire shown event')
+ })
+
+ collapseEl1.addEventListener('shown.bs.collapse', () => {
+ setTimeout(() => {
+ expect(collapseEl2).not.toHaveClass('show')
+ resolve()
+ }, 1000)
+ })
+
+ btn1.click()
+ btn2.click()
+ })
+ )
+
it('should not change tab tabpanels descendants on accordion', () => {
return new Promise(resolve => {
fixtureEl.innerHTML = [