diff --git a/app/components/malio/select/SelectCheckbox.test.ts b/app/components/malio/select/SelectCheckbox.test.ts index 9b8df40..2fc1646 100644 --- a/app/components/malio/select/SelectCheckbox.test.ts +++ b/app/components/malio/select/SelectCheckbox.test.ts @@ -68,8 +68,9 @@ describe('MalioSelectCheckbox', () => { }) await wrapper.get('button').trigger('click') - const checkboxInputs = wrapper.findAll('input[type="checkbox"]') - await checkboxInputs[1].setValue(true) + // Le toggle se fait au clic sur la ligne d'option (la checkbox est en pointer-events-none). + const optionRows = wrapper.findAll('li[role="option"]') + await optionRows[1].trigger('click') expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([['fr', 'be']]) }) @@ -149,8 +150,9 @@ describe('MalioSelectCheckbox', () => { await wrapper.get('button').trigger('click') - const checkboxes = wrapper.findAll('input[type="checkbox"]') - await checkboxes[0].setValue(true) + // La ligne « tout sélectionner » est la première option de la liste. + const selectAllRow = wrapper.findAll('li[role="option"]')[0] + await selectAllRow.trigger('click') expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([['fr', 'be', 'ca']]) }) @@ -162,8 +164,9 @@ describe('MalioSelectCheckbox', () => { await wrapper.get('button').trigger('click') - const checkboxes = wrapper.findAll('input[type="checkbox"]') - await checkboxes[0].setValue(false) + // La ligne « tout sélectionner » est la première option de la liste. + const selectAllRow = wrapper.findAll('li[role="option"]')[0] + await selectAllRow.trigger('click') expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([[]]) }) diff --git a/vitest.config.ts b/vitest.config.ts index a35ba47..ad402a7 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -6,5 +6,13 @@ export default defineConfig({ test: { environment: 'jsdom', include: ['app/**/*.test.ts'], + // La suite de composants (jsdom + focus/popover/async) est sujette à des + // échecs intermittents sous charge : timeouts par contention CPU, et quelques + // assertions de timing qui se déclenchent avant stabilisation du DOM. + // testTimeout élargi : absorbe la contention (12 workers jsdom concurrents). + // retry : rejoue les flaky de timing diffus (ne masque PAS un échec déterministe, + // qui rate ses 3 tentatives). + testTimeout: 15000, + retry: 2, }, })