@cnamts/synapse 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/{DateFilter-DoCcOfDW.js → DateFilter-_EFzsvvM.js} +1 -1
  2. package/dist/{NumberFilter-9uR8uo6p.js → NumberFilter-CUxEbKJh.js} +1 -1
  3. package/dist/{PeriodFilter-CxN5ini7.js → PeriodFilter-D5ueqtKy.js} +1 -1
  4. package/dist/{SelectFilter-bfxipgvt.js → SelectFilter-BciBNydy.js} +1 -1
  5. package/dist/{TextFilter-yCnWcmW2.js → TextFilter-DMN_WAQB.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +1 -1
  7. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +1 -1
  8. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +1 -1
  9. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +1 -1
  10. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +44 -62
  11. package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +1 -1
  12. package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
  13. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -5
  14. package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
  15. package/dist/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.d.ts +1 -1
  16. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +24 -32
  17. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +36 -48
  18. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +44 -62
  19. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +44 -62
  20. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +0 -4
  21. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +12 -16
  22. package/dist/components/Captcha/Captcha.d.ts +68 -0
  23. package/dist/components/Captcha/CaptchaAlert.d.ts +13 -0
  24. package/dist/components/Captcha/CaptchaBase.d.ts +55 -0
  25. package/dist/components/Captcha/CaptchaBtn.d.ts +12 -0
  26. package/dist/components/Captcha/CaptchaForm.d.ts +16 -0
  27. package/dist/components/Captcha/CaptchaImg.d.ts +12 -0
  28. package/dist/components/Captcha/CaptchaInformation.d.ts +20 -0
  29. package/dist/components/Captcha/captchaApi.d.ts +41 -0
  30. package/dist/components/Captcha/icons/volumeUp.d.ts +2 -0
  31. package/dist/components/Captcha/locales.d.ts +35 -0
  32. package/dist/components/Captcha/types.d.ts +2 -0
  33. package/dist/components/ChipList/ChipList.d.ts +2 -2
  34. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +2 -2
  35. package/dist/components/Customs/SyForm/SyForm.d.ts +6 -3
  36. package/dist/components/Customs/SyTextField/SyTextField.d.ts +13 -17
  37. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +56 -64
  38. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +47 -64
  39. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +18 -17
  40. package/dist/components/DatePicker/tests/setup.d.ts +448 -512
  41. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +4 -4
  42. package/dist/components/NirField/NirField.d.ts +29 -34
  43. package/dist/components/NirField/locales.d.ts +1 -3
  44. package/dist/components/PasswordField/PasswordField.d.ts +2 -0
  45. package/dist/components/PeriodField/PeriodField.d.ts +112 -128
  46. package/dist/components/PhoneField/PhoneField.d.ts +13 -17
  47. package/dist/components/SearchListField/SearchListField.d.ts +2 -2
  48. package/dist/components/SyTextArea/SyTextArea.d.ts +0 -4
  49. package/dist/components/Tables/common/SyTablePagination.d.ts +2 -2
  50. package/dist/components/index.d.ts +1 -0
  51. package/dist/composables/validation/useFormValidation.d.ts +10 -0
  52. package/dist/composables/validation/useValidatable.d.ts +10 -2
  53. package/dist/design-system-v3.js +126 -125
  54. package/dist/design-system-v3.umd.cjs +155 -155
  55. package/dist/main-DISHlqcd.js +34217 -0
  56. package/dist/style.css +1 -1
  57. package/package.json +1 -1
  58. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +6 -7
  59. package/src/components/Amelipro/AmeliproFooter/__tests__/AmeliproFooter.spec.ts +787 -0
  60. package/src/components/Amelipro/AmeliproFooter/__tests__/__snapshots__/AmeliproFooter.spec.ts.snap +318 -0
  61. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/AmeliproHeaderBrandSection.spec.ts +167 -0
  62. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +100 -0
  63. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/AmeliproHeaderBar.spec.ts +312 -0
  64. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/__snapshots__/AmeliproHeaderBar.spec.ts.snap +98 -0
  65. package/src/components/Amelipro/AmeliproHeader/__tests__/AmeliproHeader.spec.ts +361 -0
  66. package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap +22 -0
  67. package/src/components/Amelipro/AmeliproMenu/__tests__/AmeliproMenu.spec.ts +168 -0
  68. package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +295 -0
  69. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/AmeliproDropdownMenuBtn.spec.ts +128 -0
  70. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +67 -0
  71. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/AmeliproDropdownMenu.spec.ts +266 -0
  72. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +134 -0
  73. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/AmeliproMessagingMenuBtn.spec.ts +72 -0
  74. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +71 -0
  75. package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +12 -0
  76. package/src/components/Captcha/Captcha.mdx +72 -0
  77. package/src/components/Captcha/Captcha.stories.ts +276 -0
  78. package/src/components/Captcha/Captcha.vue +325 -0
  79. package/src/components/Captcha/CaptchaAlert.vue +60 -0
  80. package/src/components/Captcha/CaptchaBase.vue +219 -0
  81. package/src/components/Captcha/CaptchaBtn.vue +35 -0
  82. package/src/components/Captcha/CaptchaForm.vue +58 -0
  83. package/src/components/Captcha/CaptchaImg.vue +41 -0
  84. package/src/components/Captcha/CaptchaInformation.vue +64 -0
  85. package/src/components/Captcha/captchaApi.ts +111 -0
  86. package/src/components/Captcha/icons/volumeUp.vue +11 -0
  87. package/src/components/Captcha/locales.ts +35 -0
  88. package/src/components/Captcha/readme.md +5 -0
  89. package/src/components/Captcha/tests/Captcha.spec.ts +298 -0
  90. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +716 -0
  91. package/src/components/Captcha/types.ts +2 -0
  92. package/src/components/Customs/Selects/SySelect/SySelect.vue +2 -2
  93. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
  94. package/src/components/Customs/SyForm/SyForm.stories.ts +133 -23
  95. package/src/components/Customs/SyForm/SyForm.vue +17 -1
  96. package/src/components/Customs/SyTextField/SyTextField.vue +2 -2
  97. package/src/components/DatePicker/CalendarMode/DatePicker.vue +1 -1
  98. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +110 -6
  99. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +28 -3
  100. package/src/components/NirField/NirField.stories.ts +74 -0
  101. package/src/components/NirField/NirField.vue +34 -9
  102. package/src/components/NirField/locales.ts +1 -3
  103. package/src/components/PasswordField/PasswordField.vue +39 -7
  104. package/src/components/PhoneField/PhoneField.vue +43 -10
  105. package/src/components/index.ts +1 -0
  106. package/src/composables/validation/useFormValidation.ts +46 -8
  107. package/src/composables/validation/useValidatable.ts +19 -8
  108. package/dist/main-DMXtXK3y.js +0 -33458
  109. package/src/components/Amelipro/AmeliproFooter/tests/AmeliproFooter.spec.ts +0 -15
  110. package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +0 -432
  111. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/AmeliproHeaderBrandSection.spec.ts +0 -15
  112. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +0 -131
  113. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/AmeliproHeaderBar.spec.ts +0 -15
  114. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +0 -172
  115. package/src/components/Amelipro/AmeliproHeader/tests/AmeliproHeader.spec.ts +0 -159
  116. package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +0 -841
  117. package/src/components/Amelipro/AmeliproMenu/tests/AmeliproMenu.spec.ts +0 -85
  118. package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +0 -537
  119. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/AmeliproDropdownMenuBtn.spec.ts +0 -16
  120. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +0 -56
  121. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/AmeliproDropdownMenu.spec.ts +0 -28
  122. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +0 -300
  123. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/AmeliproMessagingMenuBtn.spec.ts +0 -16
  124. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +0 -89
@@ -0,0 +1,298 @@
1
+ import { describe, it, expect, vi, afterEach } from 'vitest'
2
+ import { mount } from '@vue/test-utils'
3
+
4
+ import Captcha from '../Captcha.vue'
5
+ import { vuetify } from '@tests/unit/setup'
6
+
7
+ describe('Captcha', () => {
8
+ afterEach(() => {
9
+ vi.restoreAllMocks()
10
+ })
11
+
12
+ it('renders correctly in image mode', async () => {
13
+ const response = {
14
+ ok: true,
15
+ json: async () => ({ id: 'captcha-id' }),
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ } as any
18
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
19
+
20
+ const wrapper = mount(Captcha, {
21
+ global: {
22
+ plugins: [vuetify],
23
+ },
24
+ props: {
25
+ urlCreate: '/captcha/captcha.json',
26
+ urlGetImage: '/captcha/captcha.png',
27
+ urlGetAudio: '/captcha/captcha.mp3',
28
+ },
29
+ })
30
+
31
+ // Wait for the component to fully mount and initialize
32
+ await wrapper.vm.$nextTick()
33
+ await wrapper.vm.$nextTick()
34
+
35
+ // Allow additional time for async initialization
36
+ await new Promise(resolve => setTimeout(resolve, 50))
37
+
38
+ expect(fetch).toHaveBeenCalledTimes(1)
39
+
40
+ await wrapper.vm.$nextTick()
41
+
42
+ // wait for the image to load
43
+ await new Promise(resolve => setTimeout(resolve, 0))
44
+
45
+ expect(wrapper.html()).toMatchSnapshot()
46
+ expect(wrapper.find('img').exists()).toBe(true)
47
+ expect(wrapper.find('audio').exists()).toBe(false)
48
+ expect(wrapper.find('img').attributes('src')).toBe('/captcha/captcha.png')
49
+ expect(wrapper.text()).toContain('Changer')
50
+ expect(wrapper.text()).toContain('image')
51
+ expect(wrapper.text()).toContain('Utiliser un captcha audio')
52
+ })
53
+
54
+ it('renders correctly in audio mode', async () => {
55
+ const response = {
56
+ ok: true,
57
+ json: async () => ({ id: 'captcha-id' }),
58
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
+ } as any
60
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
61
+
62
+ const wrapper = mount(Captcha, {
63
+ global: {
64
+ plugins: [vuetify],
65
+ },
66
+ props: {
67
+ urlCreate: '/captcha/captcha.json',
68
+ urlGetImage: '/captcha/captcha.png',
69
+ urlGetAudio: '/captcha/captcha.mp3',
70
+ type: 'audio',
71
+ },
72
+ })
73
+
74
+ // Wait for the component to fully mount and initialize
75
+ await wrapper.vm.$nextTick()
76
+ await wrapper.vm.$nextTick()
77
+
78
+ // Allow additional time for async initialization
79
+ await new Promise(resolve => setTimeout(resolve, 50))
80
+
81
+ expect(fetch).toHaveBeenCalledTimes(1)
82
+
83
+ await wrapper.vm.$nextTick()
84
+
85
+ // wait for the audio to load
86
+ await new Promise(resolve => setTimeout(resolve, 0))
87
+
88
+ expect(wrapper.html()).toMatchSnapshot()
89
+ expect(wrapper.find('button.captcha-audio').exists()).toBe(true)
90
+ expect(wrapper.text()).toContain('Changer')
91
+ expect(wrapper.text()).toContain('audio')
92
+ expect(wrapper.text()).toContain('Utiliser un captcha image')
93
+ })
94
+
95
+ it('renders correctly in choice mode', async () => {
96
+ const response = {
97
+ ok: true,
98
+ json: async () => ({ id: 'captcha-id' }),
99
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
+ } as any
101
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
102
+
103
+ const wrapper = mount(Captcha, {
104
+ global: {
105
+ plugins: [vuetify],
106
+ },
107
+ props: {
108
+ urlCreate: '/captcha/captcha.json',
109
+ urlGetImage: '/captcha/captcha.png',
110
+ urlGetAudio: '/captcha/captcha.mp3',
111
+ type: 'choice',
112
+ },
113
+ })
114
+
115
+ expect(wrapper.html()).toMatchSnapshot()
116
+ })
117
+
118
+ it('allows switching between image and audio', async () => {
119
+ const response = {
120
+ ok: true,
121
+ json: async () => ({ id: 'captcha-id' }),
122
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
123
+ } as any
124
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
125
+
126
+ const wrapper = mount(Captcha, {
127
+ global: {
128
+ plugins: [vuetify],
129
+ },
130
+ props: {
131
+ urlCreate: '/captcha/captcha.json',
132
+ urlGetImage: '/captcha/captcha.png',
133
+ urlGetAudio: '/captcha/captcha.mp3',
134
+ type: 'choice',
135
+ },
136
+ })
137
+
138
+ await wrapper.vm.$nextTick()
139
+
140
+ // Find and click image button
141
+ const imageBtn = wrapper.find('[data-test-id="captcha-image-btn"]')
142
+ if (imageBtn.exists()) {
143
+ await imageBtn.trigger('click')
144
+ await wrapper.vm.$nextTick()
145
+ expect(wrapper.emitted('update:type')?.[0]).toEqual(['image'])
146
+ }
147
+
148
+ // Find and click audio button
149
+ const audioBtn = wrapper.find('[data-test-id="captcha-audio-btn"]')
150
+ if (audioBtn.exists()) {
151
+ await audioBtn.trigger('click')
152
+ await wrapper.vm.$nextTick()
153
+ expect(wrapper.emitted('update:type')).toBeTruthy()
154
+ }
155
+ })
156
+
157
+ it('updates model value when text changes', async () => {
158
+ const response = {
159
+ ok: true,
160
+ json: async () => ({ id: 'captcha-id' }),
161
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
162
+ } as any
163
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
164
+
165
+ const wrapper = mount(Captcha, {
166
+ global: {
167
+ plugins: [vuetify],
168
+ },
169
+ props: {
170
+ urlCreate: '/captcha/captcha.json',
171
+ urlGetImage: '/captcha/captcha.png',
172
+ urlGetAudio: '/captcha/captcha.mp3',
173
+ },
174
+ })
175
+
176
+ await wrapper.vm.$nextTick()
177
+ await wrapper.vm.$nextTick()
178
+
179
+ // Simulate text input change
180
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
181
+ await (wrapper.vm as any).emitChangeValueEvent('new-text-value')
182
+
183
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
184
+ expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['new-text-value'])
185
+ })
186
+
187
+ it('initializes captcha correctly on mount', async () => {
188
+ const response = {
189
+ ok: true,
190
+ json: async () => ({ id: 'test-captcha-id' }),
191
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
192
+ } as any
193
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
194
+
195
+ const wrapper = mount(Captcha, {
196
+ global: {
197
+ plugins: [vuetify],
198
+ },
199
+ props: {
200
+ urlCreate: '/captcha/captcha.json',
201
+ urlGetImage: '/captcha/captcha.png',
202
+ urlGetAudio: '/captcha/captcha.mp3',
203
+ },
204
+ })
205
+
206
+ await wrapper.vm.$nextTick()
207
+ await wrapper.vm.$nextTick()
208
+ await new Promise(resolve => setTimeout(resolve, 50))
209
+
210
+ expect(fetch).toHaveBeenCalledWith('/captcha/captcha.json', expect.any(Object))
211
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
+ expect((wrapper.vm as any).id).toBe('test-captcha-id')
213
+ })
214
+
215
+ it('watches modelValue prop changes', async () => {
216
+ const response = {
217
+ ok: true,
218
+ json: async () => ({ id: 'captcha-id' }),
219
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
220
+ } as any
221
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
222
+
223
+ const wrapper = mount(Captcha, {
224
+ global: {
225
+ plugins: [vuetify],
226
+ },
227
+ props: {
228
+ urlCreate: '/captcha/captcha.json',
229
+ urlGetImage: '/captcha/captcha.png',
230
+ urlGetAudio: '/captcha/captcha.mp3',
231
+ modelValue: 'initial-value',
232
+ },
233
+ })
234
+
235
+ await wrapper.vm.$nextTick()
236
+
237
+ // Change modelValue prop
238
+ await wrapper.setProps({ modelValue: 'updated-value' })
239
+ await wrapper.vm.$nextTick()
240
+
241
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
242
+ expect((wrapper.vm as any).text).toBe('updated-value')
243
+ })
244
+
245
+ it('handles helpDesk prop correctly', async () => {
246
+ const response = {
247
+ ok: true,
248
+ json: async () => ({ id: 'captcha-id' }),
249
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
250
+ } as any
251
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
252
+
253
+ const wrapper = mount(Captcha, {
254
+ global: {
255
+ plugins: [vuetify],
256
+ },
257
+ props: {
258
+ urlCreate: '/captcha/captcha.json',
259
+ urlGetImage: '/captcha/captcha.png',
260
+ urlGetAudio: '/captcha/captcha.mp3',
261
+ helpDesk: '1234',
262
+ },
263
+ })
264
+
265
+ await wrapper.vm.$nextTick()
266
+ await wrapper.vm.$nextTick()
267
+ await new Promise(resolve => setTimeout(resolve, 50))
268
+
269
+ expect(wrapper.text()).toContain('1234')
270
+ })
271
+
272
+ it('handles disabled helpDesk correctly', async () => {
273
+ const response = {
274
+ ok: true,
275
+ json: async () => ({ id: 'captcha-id' }),
276
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
277
+ } as any
278
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(response))
279
+
280
+ const wrapper = mount(Captcha, {
281
+ global: {
282
+ plugins: [vuetify],
283
+ },
284
+ props: {
285
+ urlCreate: '/captcha/captcha.json',
286
+ urlGetImage: '/captcha/captcha.png',
287
+ urlGetAudio: '/captcha/captcha.mp3',
288
+ helpDesk: false,
289
+ },
290
+ })
291
+
292
+ await wrapper.vm.$nextTick()
293
+ await wrapper.vm.$nextTick()
294
+ await new Promise(resolve => setTimeout(resolve, 50))
295
+
296
+ expect(wrapper.find('.captcha-helpdesk').exists()).toBe(false)
297
+ })
298
+ })