diff --git a/tests/slider-pagination.test.ts b/tests/slider-pagination.test.ts
index e0e592b..5e2c354 100644
--- a/tests/slider-pagination.test.ts
+++ b/tests/slider-pagination.test.ts
@@ -72,6 +72,24 @@ describe('BqSlider', () => {
expect(input?.getAttribute('aria-valuetext')).toBe('Value: 50');
});
+ it('should update live value and ARIA state during input without re-rendering', () => {
+ const el = doc.createElement('bq-slider');
+ el.setAttribute('show-value', '');
+ el.setAttribute('value', '40');
+ doc.body.appendChild(el);
+
+ const input = el.shadowRoot?.querySelector('input') as HTMLInputElement;
+ const valueEl = el.shadowRoot?.querySelector('.value');
+
+ input.value = '65';
+ input.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
+
+ expect(el.getAttribute('value')).toBe('40');
+ expect(valueEl?.textContent).toBe('65');
+ expect(input.getAttribute('aria-valuenow')).toBe('65');
+ expect(input.getAttribute('aria-valuetext')).toBe('Value: 65');
+ });
+
it('should create form proxy hidden input', () => {
const el = doc.createElement('bq-slider');
el.setAttribute('name', 'volume');
diff --git a/tests/tabs-tooltip.test.ts b/tests/tabs-tooltip.test.ts
index 2654da0..01b0842 100644
--- a/tests/tabs-tooltip.test.ts
+++ b/tests/tabs-tooltip.test.ts
@@ -118,6 +118,44 @@ describe('BqTabs', () => {
expect(panelTwo?.getAttribute('tabindex')).toBe('0');
expect(panelTwo?.getAttribute('aria-hidden')).toBe('false');
});
+
+ it('should avoid invalid generated aria ids when a tab item has no id', async () => {
+ const el = doc.createElement('bq-tabs');
+ el.innerHTML = `
+
+
Panel one
+ `;
+ doc.body.appendChild(el);
+
+ await waitForFrame();
+
+ const tab = el.shadowRoot?.querySelector('[role="tab"]');
+ const panel = el.querySelector('[data-tab="one"]');
+
+ expect(tab?.getAttribute('id')).toBeNull();
+ expect(tab?.getAttribute('aria-controls')).toBeNull();
+ expect(panel?.getAttribute('aria-labelledby')).toBeNull();
+ });
+
+ it('should generate encoded aria ids for tab values that include spaces', async () => {
+ const el = doc.createElement('bq-tabs');
+ el.setAttribute('active-tab', 'needs space');
+ el.innerHTML = `
+
+
Panel
+ `;
+ doc.body.appendChild(el);
+
+ await waitForFrame();
+
+ const tab = el.shadowRoot?.querySelector('[role="tab"]');
+ const panel = el.querySelector('[data-tab="needs space"]');
+
+ expect(tab?.getAttribute('id')).toBe('tab-needs%20space');
+ expect(tab?.getAttribute('aria-controls')).toBe('panel-needs%20space');
+ expect(panel?.id).toBe('panel-needs%20space');
+ expect(panel?.getAttribute('aria-labelledby')).toBe('tab-needs%20space');
+ });
});
describe('BqTooltip', () => {