Skip to content

Commit bf88297

Browse files
committed
Await nextTick after trigger function
1 parent c2a25b8 commit bf88297

File tree

14 files changed

+49
-12
lines changed

14 files changed

+49
-12
lines changed

tests/unit/components/ContentNode/EndpointExample.spec.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,21 @@ describe('EndpointExample', () => {
8585
expect(wrapper.findComponent('.controls').exists()).toBe(false);
8686
});
8787

88-
it('expands/collapses the CollapsibleCodeListing when the more/less toggle is clicked', () => {
88+
it('expands/collapses the CollapsibleCodeListing when the more/less toggle is clicked', async () => {
8989
// show the response, as it is collapsible
9090
wrapper.findComponent(Tabnav).vm.$emit('input', Tab.response);
9191

9292
const codeListing = wrapper.findComponent(CollapsibleCodeListing);
9393

9494
wrapper.findComponent('.toggle').trigger('click');
95+
await wrapper.vm.$nextTick();
9596

9697
expect(codeListing.props('collapsed')).toBe(false);
9798
expect(wrapper.findComponent('.toggle').text()).toBe('less');
9899
expect(wrapper.findComponent(InlineMinusCircleSolidIcon).exists()).toBe(true);
99100

100101
wrapper.findComponent('.toggle').trigger('click');
102+
await wrapper.vm.$nextTick();
101103

102104
expect(codeListing.props('collapsed')).toBe(true);
103105
expect(wrapper.findComponent('.toggle').text()).toBe('more');

tests/unit/components/DocumentationTopic.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -849,6 +849,7 @@ describe('DocumentationTopic', () => {
849849
const toggle = wrapper.findComponent('.declaration-list-toggle');
850850
expect(toggle.exists()).toBe(true);
851851
toggle.trigger('click');
852+
await wrapper.vm.$nextTick();
852853

853854
declListMenu = wrapper.findComponent('.declaration-list-menu');
854855
expect(declListMenu.exists()).toBe(true);

tests/unit/components/DocumentationTopic/DocumentationNav.spec.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,10 +224,12 @@ describe('DocumentationNav', () => {
224224
wrapper.findComponent(BreakpointEmitter).vm.$emit('change', BreakpointName.medium);
225225
await flushPromises();
226226
wrapper.findComponent('.nav-menucta').trigger('click');
227+
await wrapper.vm.$nextTick();
227228
expect(wrapper.classes()).toContain('nav--is-open');
228229
const toggle = wrapper.findComponent('.sidenav-toggle');
229230
expect(toggle.attributes()).toHaveProperty('tabindex', '-1');
230231
toggle.trigger('click');
232+
await wrapper.vm.$nextTick();
231233
wrapper.findComponent('.nav-menu-tray').trigger('transitionend', { propertyName: 'max-height' });
232234
expect(wrapper.classes()).not.toContain('nav--is-open');
233235
expect(wrapper.emitted('toggle-sidenav')).toBeFalsy();

tests/unit/components/DocumentationTopic/DocumentationNav/LanguageToggle.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ describe('LanguageToggle', () => {
172172

173173
wrapper.findAll('#language-toggle option').at(1).element.selected = true;
174174
wrapper.findComponent('#language-toggle').trigger('change');
175+
await wrapper.vm.$nextTick();
175176

176177
expect(wrapper.findComponent('.current-language').text()).toBe(Language.objectiveC.name);
177178
expect(closeNav).toHaveBeenCalledTimes(1);

tests/unit/components/DropdownCustom.spec.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,9 +270,10 @@ describe('DropdownCustom', () => {
270270
});
271271
});
272272

273-
it('closes the dropdown of you `click` outside', () => {
273+
it('closes the dropdown of you `click` outside', async () => {
274274
wrapper = createWrapper();
275275
wrapper.findComponent({ ref: 'dropdownToggle' }).trigger('click');
276+
await wrapper.vm.$nextTick();
276277
const label = wrapper.findComponent('.visuallyhidden').element;
277278
expect(wrapper.classes()).toContain(OpenedClass);
278279
const event = new Event('click');

tests/unit/components/Filter/FilterInput.spec.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -527,9 +527,10 @@ describe('FilterInput', () => {
527527
const relatedTargetCard = document.createElement('a');
528528
document.body.appendChild(relatedTargetCard);
529529

530-
beforeEach(() => {
530+
beforeEach(async () => {
531531
// show the suggested tags
532532
wrapper.findComponent('.filter').trigger('focus');
533+
await wrapper.vm.$nextTick();
533534

534535
suggestedTags = wrapper.findComponent({ ref: 'suggestedTags' });
535536
deleteButton = wrapper.findComponent('.filter__delete-button');
@@ -568,17 +569,19 @@ describe('FilterInput', () => {
568569
expect(suggestedTags.props()).toHaveProperty('ariaLabel', 'filter.suggested-tags');
569570
});
570571

571-
it('keeps `suggestedTags` component when `deleteButton` gets focus instead of `input`', () => {
572+
it('keeps `suggestedTags` component when `deleteButton` gets focus instead of `input`', async () => {
572573
deleteButton = wrapper.findComponent('.filter__delete-button');
573574
deleteButton.trigger('focus');
575+
await wrapper.vm.$nextTick();
574576
expect(wrapper.emitted('show-suggested-tags')).toBeTruthy();
575577
suggestedTags = wrapper.findComponent({ ref: 'suggestedTags' });
576578
expect(suggestedTags.exists()).toBe(true);
577579
});
578580

579-
it('keeps `suggestedTags` component when `deleteButton` gets focus instead of `input`', () => {
581+
it('keeps `suggestedTags` component when `deleteButton` gets focus instead of `input`', async () => {
580582
const deleteBtnFocus = wrapper.findComponent('.filter__delete-button');
581583
deleteBtnFocus.trigger('focus');
584+
await wrapper.vm.$nextTick();
582585
expect(wrapper.emitted('show-suggested-tags')).toBeTruthy();
583586
suggestedTags = wrapper.findComponent({ ref: 'suggestedTags' });
584587
expect(suggestedTags.exists()).toBe(true);
@@ -587,6 +590,7 @@ describe('FilterInput', () => {
587590
it('removes `suggestedTags` component when `suggestedTags` looses its focus on an external component', async () => {
588591
suggestedTags = wrapper.findComponent({ ref: 'suggestedTags' });
589592
suggestedTags.trigger('focus');
593+
await wrapper.vm.$nextTick();
590594
expect(wrapper.emitted('show-suggested-tags')).toEqual([[true]]);
591595
expect(wrapper.findComponent({ ref: 'suggestedTags' }).exists()).toBe(true);
592596

@@ -606,6 +610,7 @@ describe('FilterInput', () => {
606610
const deleteBtnFocus = wrapper.findComponent('.filter__delete-button');
607611
if (deleteBtnFocus.exists()) {
608612
deleteBtnFocus.trigger('focus');
613+
await wrapper.vm.$nextTick();
609614
}
610615
const deleteBtnExists = wrapper.findComponent('.filter__delete-button');
611616
expect(deleteBtnExists.exists()).toBe(true);

tests/unit/components/NavBase.spec.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ describe('NavBase', () => {
210210
const label = toggle.find('.visuallyhidden');
211211
expect(label.text()).toBe('documentation.nav.open-menu');
212212
toggle.trigger('click');
213+
await wrapper.vm.$nextTick();
213214
expect(label.text()).toBe('documentation.nav.close-menu');
214215
});
215216

@@ -252,6 +253,7 @@ describe('NavBase', () => {
252253
});
253254
const tray = wrapper.findComponent(NavMenuItems);
254255
tray.find('.foo').trigger('click');
256+
await wrapper.vm.$nextTick();
255257
expect(wrapper.classes()).toContain(NavStateClasses.isOpen);
256258
tray.find('.with-anchor a').trigger('click');
257259
expect(wrapper.classes()).not.toContain(NavStateClasses.isOpen);
@@ -509,6 +511,7 @@ describe('NavBase', () => {
509511

510512
expect(changeElementVOVisibility.show).toHaveBeenCalledTimes(0);
511513
wrapper.findComponent({ ref: 'axToggle' }).trigger('click');
514+
await wrapper.vm.$nextTick();
512515
expect(changeElementVOVisibility.hide).toHaveBeenCalledTimes(1);
513516
wrapper.findComponent({ ref: 'axToggle' }).trigger('click');
514517
expect(changeElementVOVisibility.show).toHaveBeenCalledTimes(1);

tests/unit/components/Navigator/NavigatorCardItem.spec.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ describe('NavigatorCardItem', () => {
249249
it('adds a temporary `animating` class, on `@toggle`', async () => {
250250
const wrapper = createWrapper();
251251
wrapper.findComponent('.tree-toggle').trigger('click');
252+
await wrapper.vm.$nextTick();
252253
expect(wrapper.emitted('toggle')).toEqual([[defaultProps.item]]);
253254
// assert it adds the animating class
254255
expect(wrapper.findComponent('.icon-inline').classes()).toContain('animating');
@@ -266,6 +267,7 @@ describe('NavigatorCardItem', () => {
266267
it('adds a temporary `animating` class, on `@toggle-full` when @keydown.right + alt/option the tree-toggle button', async () => {
267268
const wrapper = createWrapper();
268269
wrapper.findComponent('.tree-toggle').trigger('keydown.right', { altKey: true });
270+
await wrapper.vm.$nextTick();
269271
expect(wrapper.emitted('toggle-full')).toEqual([[defaultProps.item]]);
270272
// assert it adds the animating class
271273
expect(wrapper.findComponent('.icon-inline').classes()).toContain('animating');
@@ -283,6 +285,7 @@ describe('NavigatorCardItem', () => {
283285
it('adds a temporary `animating` class, on `@toggle-full` with alt + rightkey', async () => {
284286
const wrapper = createWrapper();
285287
wrapper.findComponent('.tree-toggle').trigger('click', { altKey: true });
288+
await wrapper.vm.$nextTick();
286289
expect(wrapper.emitted('toggle-full')).toEqual([[defaultProps.item]]);
287290
// assert it adds the animating class
288291
expect(wrapper.findComponent('.icon-inline').classes()).toContain('animating');
@@ -300,6 +303,7 @@ describe('NavigatorCardItem', () => {
300303
it('adds a temporary `animating` class, on `@toggle-siblings`', async () => {
301304
const wrapper = createWrapper();
302305
wrapper.findComponent('.tree-toggle').trigger('click', { metaKey: true });
306+
await wrapper.vm.$nextTick();
303307
expect(wrapper.emitted('toggle-siblings')).toEqual([[defaultProps.item]]);
304308
// assert it adds the animating class
305309
expect(wrapper.findComponent('.icon-inline').classes()).toContain('animating');

tests/unit/components/Navigator/QuickNavigationModal.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ describe('QuickNavigationModal', () => {
300300
debouncedInput: inputValue,
301301
});
302302
wrapper.findComponent('.quick-navigation__refs').trigger('keydown.enter');
303+
await wrapper.vm.$nextTick();
303304
wrapper.findComponent(FilterInput).trigger('keydown.enter');
304305
expect(handleKeyEnter).toHaveBeenCalledTimes(2);
305306
});

tests/unit/components/Tutorial/Assessments/Quiz.spec.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,45 +186,54 @@ describe('Quiz', () => {
186186

187187
expect(choice.classes('active')).toBe(false);
188188
choice.trigger('click');
189+
await wrapper.vm.$nextTick();
189190
expect(choice.classes('active')).toBe(true);
190191
});
191192

192-
it('renders a success icon, only for the chosen choice', () => {
193+
it('renders a success icon, only for the chosen choice', async () => {
193194
const choice = choices.at(0);
194195
choice.trigger('click');
196+
await wrapper.vm.$nextTick();
195197
submit.trigger('click');
198+
await wrapper.vm.$nextTick();
196199

197200
expect(choice.classes()).toContain('correct');
198201
expect(wrapper.findAll('.choice-icon')).toHaveLength(1);
199202
// cant match directly with element, VTU is buggy
200203
expect(choice.find('.choice-icon').html()).toContain('<checkcircleicon');
201204
});
202205

203-
it('renders an error icon only for the chosen choice', () => {
206+
it('renders an error icon only for the chosen choice', async () => {
204207
const choice = choices.at(1);
205208
choice.trigger('click');
209+
await wrapper.vm.$nextTick();
206210
submit.trigger('click');
211+
await wrapper.vm.$nextTick();
207212

208213
expect(wrapper.findAll('.choice-icon')).toHaveLength(1);
209214
// cant match directly with element, VTU is buggy
210215
expect(choice.find('.choice-icon').html()).toContain('<resetcircleicon');
211216
});
212217

213-
it('updates the aria live text telling the user if the answer chosen is correct or incorrect', () => {
218+
it('updates the aria live text telling the user if the answer chosen is correct or incorrect', async () => {
214219
let ariaLive = wrapper.findComponent('[aria-live="assertive"].visuallyhidden');
215220
expect(ariaLive.exists()).toBe(true);
216221
expect(ariaLive.text()).toBe('');
217222

218223
let choice = choices.at(1);
219224
choice.trigger('click');
225+
await wrapper.vm.$nextTick();
220226
submit.trigger('click');
227+
await wrapper.vm.$nextTick();
221228

222229
ariaLive = wrapper.findComponent('[aria-live="assertive"].visuallyhidden > span');
223230
expect(ariaLive.text()).toBe('Answer is tutorials.assessment.incorrect');
224231

225232
choice = choices.at(0);
226233
choice.trigger('click');
234+
await wrapper.vm.$nextTick();
227235
submit.trigger('click');
236+
await wrapper.vm.$nextTick();
228237

229238
ariaLive = wrapper.findComponent('[aria-live="assertive"].visuallyhidden > span');
230239
expect(ariaLive.text()).toBe('Answer is tutorials.assessment.correct');

0 commit comments

Comments
 (0)