UNPKG

2.13 kBTypeScriptView Raw
1declare module '@ember/renderer' {
2 /**
3 @module @ember/renderer
4 @public
5 */
6 /**
7 * @class Renderer
8 * @public
9 */
10 /**
11 Returns a promise which will resolve when rendering has completed. In
12 this context, rendering is completed when all auto-tracked state that is
13 consumed in the template (including any tracked state in models, services,
14 etc. that are then used in a template) has been updated in the DOM.
15
16 For example, in a test you might want to update some tracked state and
17 then run some assertions after rendering has completed. You _could_ use
18 `await settled()` in that location, but in some contexts you don't want to
19 wait for full settledness (which includes test waiters, pending AJAX/fetch,
20 run loops, etc) but instead only want to know when that updated value has
21 been rendered in the DOM. **THAT** is what `await renderSettled()` is
22 _perfect_ for.
23
24 ```js
25 import { renderSettled } from '@ember/renderer';
26 import { render } from '@ember/test-helpers';
27 import { tracked } from '@glimmer/tracking';
28 import { hbs } from 'ember-cli-htmlbars';
29 import { setupRenderingTest } from 'my-app/tests/helpers';
30 import { module, test } from 'qunit';
31
32 module('Integration | Component | profile-card', function (hooks) {
33 setupRenderingTest(hooks);
34
35 test("it renders the person's name", async function (assert) {
36 class Person {
37 @tracked name = '';
38 }
39
40 this.person = new Person();
41 this.person.name = 'John';
42
43 await render(hbs`
44 <ProfileCard @name={{this.person.name}} />
45 `);
46
47 assert.dom().hasText('John');
48
49 this.person.name = 'Jane';
50
51 await renderSettled(); // Wait until rendering has completed.
52
53 assert.dom().hasText('Jane');
54 });
55 });
56 ```
57
58 @method renderSettled
59 @returns {Promise<void>} a promise which fulfills when rendering has completed
60 @public
61 */
62 export { renderSettled } from '@ember/-internals/glimmer';
63}