UNPKG

@v4fire/client

Version:

V4Fire client core library

63 lines (49 loc) 1.42 kB
// @ts-check /*! * V4Fire Client Core * https://github.com/V4Fire/Client * * Released under the MIT license * https://github.com/V4Fire/Client/blob/master/LICENSE */ const delay = require('delay'), h = include('tests/helpers').default; /** * Starts a test * * @param {Playwright.Page} page * @param {!Object} params * @returns {!Promise<void>} */ module.exports = async (page, params) => { await h.utils.setup(page, params.context); let ctx, ctxNode; describe('iObserveDOM', () => { beforeEach(async () => { await h.utils.reloadAndWaitForIdle(page); ctx = await h.component.waitForComponent(page, '#dummy-component'); ctxNode = await page.$('#dummy-component'); }); it('fires `onDOMChange`', async () => { const pr = ctx.evaluate((ctx) => new Promise((res) => ctx.localEmitter.once('DOMChange', res))); await ctxNode.evaluate((ctxNode) => { const div = document.createElement('div'); ctxNode.append(div); }); await expectAsync(pr).toBeResolved(); }); it('unobserve', async () => { ctx.evaluate((ctx) => ctx.localEmitter.once('DOMChange', () => globalThis.tVal = true)); await ctx.evaluate((ctx) => { ctx.modules.iObserveDOM.unobserve(ctx, ctx.$el); const div = document.createElement('div'); ctx.$el.append(div); }); await delay(500); expect(await page.evaluate(() => globalThis.tVal)).toBeUndefined(); }); }); };