test(ui) : fiabiliser la suite Vitest (SelectCheckbox + flaky) #73

Merged
tristan merged 1 commits from fix/flaky-tests-vitest into develop 2026-06-11 15:45:48 +00:00
2 changed files with 17 additions and 6 deletions
@@ -68,8 +68,9 @@ describe('MalioSelectCheckbox', () => {
}) })
await wrapper.get('button').trigger('click') await wrapper.get('button').trigger('click')
const checkboxInputs = wrapper.findAll('input[type="checkbox"]') // Le toggle se fait au clic sur la ligne d'option (la checkbox est en pointer-events-none).
await checkboxInputs[1].setValue(true) const optionRows = wrapper.findAll('li[role="option"]')
await optionRows[1].trigger('click')
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([['fr', 'be']]) expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([['fr', 'be']])
}) })
@@ -149,8 +150,9 @@ describe('MalioSelectCheckbox', () => {
await wrapper.get('button').trigger('click') await wrapper.get('button').trigger('click')
const checkboxes = wrapper.findAll('input[type="checkbox"]') // La ligne « tout sélectionner » est la première option de la liste.
await checkboxes[0].setValue(true) const selectAllRow = wrapper.findAll('li[role="option"]')[0]
await selectAllRow.trigger('click')
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([['fr', 'be', 'ca']]) expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([['fr', 'be', 'ca']])
}) })
@@ -162,8 +164,9 @@ describe('MalioSelectCheckbox', () => {
await wrapper.get('button').trigger('click') await wrapper.get('button').trigger('click')
const checkboxes = wrapper.findAll('input[type="checkbox"]') // La ligne « tout sélectionner » est la première option de la liste.
await checkboxes[0].setValue(false) const selectAllRow = wrapper.findAll('li[role="option"]')[0]
await selectAllRow.trigger('click')
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([[]]) expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([[]])
}) })
+8
View File
@@ -6,5 +6,13 @@ export default defineConfig({
test: { test: {
environment: 'jsdom', environment: 'jsdom',
include: ['app/**/*.test.ts'], 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,
}, },
}) })