@apia/testing 4.0.20 → 4.0.24

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/TestComponent.tsx","../src/TestsLogger.ts","../src/index.tsx"],"sourcesContent":["import { FC, RefCallback, forwardRef, useEffect, useState } from 'react';\r\nimport { EventEmitter, useMount } from '@apia/util';\r\nimport { Test } from '.';\r\n\r\nlet maxId = 0;\r\nlet maxUpdateId = 0;\r\n\r\nexport class TestComponent<\r\n T extends Record<string, unknown>,\r\n> extends EventEmitter<{\r\n update: { id: string; props: Partial<T> };\r\n updated: string;\r\n}> {\r\n #component: FC<T>;\r\n #props: T;\r\n\r\n id = `component__${maxId++}`;\r\n\r\n Component = forwardRef<object>((_, ref) => {\r\n const [props, setProps] = useState(this.#props);\r\n const [lastUpdateId, setLastUpdateId] = useState('');\r\n\r\n const Render = this.#component;\r\n\r\n useMount(() => {\r\n const suscription = this.on('update', (ev) => {\r\n setProps((current) => ({ ...current, ...ev.props }));\r\n setLastUpdateId(ev.id);\r\n });\r\n\r\n (ref as RefCallback<object>)({});\r\n\r\n return suscription;\r\n });\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n this.emit('updated', lastUpdateId);\r\n }, 0);\r\n }, [lastUpdateId]);\r\n\r\n return (\r\n <div id={this.name}>\r\n <Render {...props} />\r\n </div>\r\n );\r\n });\r\n\r\n constructor(\r\n private name: string,\r\n private test: Test,\r\n component: FC<T>,\r\n initialProps: T,\r\n ) {\r\n super();\r\n\r\n this.#component = component;\r\n this.#props = initialProps;\r\n }\r\n\r\n unmount = () => {\r\n this.test.unmount(this);\r\n };\r\n\r\n updateProps(newProps: Partial<T>) {\r\n return new Promise<void>((resolve) => {\r\n const updateId = `update${maxUpdateId++}`;\r\n const unsuscribe = this.on('updated', (ev) => {\r\n if (ev === updateId) {\r\n unsuscribe();\r\n resolve();\r\n }\r\n });\r\n setTimeout(() => {\r\n this.emit('update', { id: updateId, props: newProps });\r\n }, 0);\r\n });\r\n }\r\n}\r\n","export type TLogType = 'error' | 'info' | 'success' | 'title' | 'warn';\r\n\r\nexport abstract class TestsLogger {\r\n abstract error(message: string): void;\r\n abstract info(message: string): void;\r\n abstract report(): void;\r\n abstract success(message: string): void;\r\n abstract title(message: string): void;\r\n abstract warn(message: string): void;\r\n\r\n /**\r\n * Establece qué niveles se muestran y qué niveles no.\r\n */\r\n abstract setDebugLevels(levels: Partial<Record<TLogType, boolean>>): void;\r\n}\r\n\r\nexport class ConsoleTestsLogger extends TestsLogger {\r\n colors = {\r\n error: '#f77',\r\n info: 'lightblue',\r\n success: 'lightgreen',\r\n title: 'white',\r\n warn: 'yellow',\r\n };\r\n\r\n #reports: {\r\n title: string;\r\n messages: Partial<Record<keyof TestsLogger, string[]>>;\r\n }[] = [];\r\n\r\n #levels = {\r\n error: true,\r\n info: true,\r\n success: true,\r\n title: true,\r\n warn: true,\r\n };\r\n\r\n #log = (type: TLogType, message: string) => {\r\n const color = this.colors[type];\r\n\r\n const messages = this.#reports[this.#reports.length - 1].messages;\r\n if (!messages[type]) messages[type] = [];\r\n messages[type]?.push(message);\r\n\r\n console.info(\r\n `%c[${type}]%c: ${message}`,\r\n `color: ${color}`,\r\n 'color: white',\r\n );\r\n };\r\n\r\n constructor() {\r\n super();\r\n\r\n this.reset();\r\n }\r\n\r\n error(message: string): void {\r\n if (this.#levels.error) {\r\n console.error(message);\r\n this.#log('error', message);\r\n }\r\n }\r\n\r\n info(message: string): void {\r\n if (this.#levels.info) this.#log('info', message);\r\n }\r\n\r\n success(message: string): void {\r\n if (this.#levels.success) this.#log('success', message);\r\n }\r\n\r\n report() {\r\n for (const report of this.#reports) {\r\n const errors = report.messages.error?.length ?? 0;\r\n const warns = report.messages.warn?.length ?? 0;\r\n const successes = report.messages.success?.length ?? 0;\r\n\r\n if (successes === warns && warns === errors && errors === 0) {\r\n if (\r\n report.title !==\r\n 'Test without title, use method it to set test title.'\r\n )\r\n console.log(\r\n `%cFor ${report.title}, no cases made.`,\r\n 'font-weight: bold; padding: 10px',\r\n );\r\n continue;\r\n }\r\n\r\n console.log(`%cFor ${report.title}`, 'font-weight: bold; padding: 10px');\r\n console.log(\r\n `%c${successes} tests succeed.`,\r\n `color: ${this.colors.success}`,\r\n );\r\n console.log(`%c${warns} warnings sent.`, `color: ${this.colors.warn}`);\r\n console.log(`%c${errors} errors found.`, `color: ${this.colors.error}`);\r\n }\r\n\r\n this.reset();\r\n }\r\n\r\n reset = () => {\r\n this.#reports = [\r\n {\r\n title: 'Test without title, use method it to set test title.',\r\n messages: {},\r\n },\r\n ];\r\n };\r\n\r\n title(title: string): void {\r\n this.#reports.push({ title, messages: {} });\r\n\r\n if (this.#levels.title) {\r\n const color = this.colors.title;\r\n\r\n console.info(\r\n `%c${title}`,\r\n `color: ${color}; font-weight: bold; padding: 10px`,\r\n );\r\n }\r\n }\r\n\r\n warn(message: string): void {\r\n if (this.#levels.warn) {\r\n console.warn(message);\r\n this.#log('warn', message);\r\n }\r\n }\r\n\r\n setDebugLevels(levels: Partial<Record<TLogType, boolean>>): void {\r\n this.#levels = { ...this.#levels, ...levels };\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { EventEmitter, useMount } from '@apia/util';\r\nimport { CSSProperties, FC, useState } from 'react';\r\nimport { TestComponent } from './TestComponent';\r\nimport { ConsoleTestsLogger, TestsLogger } from './TestsLogger';\r\n\r\ntype TTask = {\r\n name: string;\r\n cb: () => Promise<boolean> | boolean;\r\n};\r\n\r\ntype TRunOptions = Partial<{\r\n /**\r\n * Delay al inicio\r\n */\r\n delay: number;\r\n /**\r\n * Cantidad de veces a ejecutar\r\n */\r\n n: number;\r\n /**\r\n * Demora entre reintentos\r\n */\r\n ms: number;\r\n /**\r\n * Omitir mensajes\r\n */\r\n silence: boolean;\r\n}>;\r\n\r\nexport class Test extends EventEmitter<{\r\n componentsListUpdated: boolean;\r\n componentMounted: string;\r\n}> {\r\n #components: TestComponent<any>[] = [];\r\n #ref: HTMLElement | null = null;\r\n\r\n logger: TestsLogger = new ConsoleTestsLogger();\r\n\r\n Component = ({ style }: { style: CSSProperties }) => {\r\n const [components, setComponents] = useState(this.#components);\r\n\r\n useMount(() => {\r\n return this.on('componentsListUpdated', () => {\r\n setComponents([...this.#components]);\r\n });\r\n });\r\n\r\n return (\r\n <div ref={(el) => (this.#ref = el)} style={{ display: 'none', ...style }}>\r\n {components.map((current) => (\r\n <current.Component\r\n ref={(el) => {\r\n if (el) this.emit('componentMounted', current.id);\r\n }}\r\n key={current.id}\r\n />\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n /**\r\n * Devuelve el elemento html sobre el cual se están montando los tests\r\n */\r\n get root() {\r\n return this.#ref;\r\n }\r\n\r\n /**\r\n * Hace foco sobre un elemento del DOM y resuelve cuando puede hacer foco o\r\n * rompe cuando no puede hacer después de 5 intentos.\r\n */\r\n focus = (\r\n selector: string,\r\n check?: (element: HTMLElement) => boolean,\r\n options?: TRunOptions,\r\n ) => {\r\n const actualOptions = Object.assign({ delay: 0, ms: 250, n: 5 }, options);\r\n\r\n return new Promise<HTMLElement | null>((resolve) => {\r\n setTimeout(() => {\r\n let tries = actualOptions.n;\r\n const interval = setInterval(() => {\r\n this.logger.info(`Trying to focus with selector ${selector}`);\r\n tries--;\r\n const element = this.root?.querySelector<HTMLElement>(selector);\r\n\r\n if (element) {\r\n element.focus();\r\n\r\n if (check ? check(element) : element === document.activeElement) {\r\n clearInterval(interval);\r\n resolve(element);\r\n }\r\n }\r\n\r\n if (tries === 0) {\r\n clearInterval(interval);\r\n resolve(null);\r\n }\r\n }, actualOptions.ms);\r\n }, actualOptions.delay);\r\n });\r\n };\r\n\r\n /**\r\n * Anuncia un nuevo grupo de tests\r\n */\r\n it = (text: string) => {\r\n this.logger.title(text);\r\n };\r\n\r\n /**\r\n * Monta un componente para usarlo en el testing\r\n */\r\n mount = <T extends Record<string, unknown>>(\r\n name: string,\r\n component: FC<T>,\r\n initialProps: T,\r\n ) => {\r\n return new Promise<TestComponent<T>>((resolve) => {\r\n const newComponent = new TestComponent(\r\n name,\r\n this,\r\n component,\r\n initialProps,\r\n );\r\n this.#components.push(newComponent);\r\n this.emit('componentsListUpdated', true);\r\n const unsuscribe = this.on('componentMounted', (ev) => {\r\n if (ev === newComponent.id) {\r\n unsuscribe();\r\n resolve(newComponent);\r\n }\r\n });\r\n });\r\n };\r\n\r\n report = () => {\r\n this.logger.report();\r\n };\r\n\r\n #running = false;\r\n\r\n /**\r\n * Corre una tarea que va a intentar hasta n veces cada ms milisegundos antes\r\n * de resolver como fallo.\r\n *\r\n * @parameter options\r\n */\r\n should = async (\r\n name: string,\r\n cb: () => boolean | Promise<boolean>,\r\n options?: Omit<TRunOptions, 'silence'>,\r\n ) => {\r\n await this.wait('', () => !this.#running, { silence: true, n: 300 });\r\n\r\n this.#running = true;\r\n const actualOptions = Object.assign({ delay: 0, ms: 250, n: 5 }, options);\r\n\r\n return new Promise<void>((resolve) => {\r\n setTimeout(() => {\r\n let tries = actualOptions.n;\r\n\r\n const tryAgain = () => {\r\n window.requestAnimationFrame(() => {\r\n this.#run({ name, cb })\r\n .then((result) => {\r\n if (!result && tries-- > 0) {\r\n setTimeout(() => {\r\n tryAgain();\r\n }, actualOptions.ms);\r\n this.logger.warn(`[RETRY ${5 - tries}] ${name}`);\r\n } else if (result) {\r\n this.logger.success(`${name}`);\r\n resolve();\r\n this.#running = false;\r\n } else {\r\n this.logger.error(name);\r\n resolve();\r\n this.#running = false;\r\n }\r\n })\r\n .catch(() => {\r\n if (tries-- > 0) {\r\n setTimeout(() => {\r\n tryAgain();\r\n }, actualOptions.ms);\r\n this.logger.warn(`[RETRY ${5 - tries}] ${name}`);\r\n } else {\r\n this.logger.error(`[CATCH] ${name}`);\r\n resolve();\r\n this.#running = false;\r\n }\r\n });\r\n });\r\n };\r\n\r\n tryAgain();\r\n }, actualOptions.delay);\r\n });\r\n };\r\n\r\n unmount = (component: TestComponent<any>) => {\r\n this.#components = this.#components.filter(\r\n (current) => current !== component,\r\n );\r\n this.emit('componentsListUpdated', true);\r\n };\r\n\r\n /**\r\n * Espera por una condición a suceder, intentando n veces cada ms\r\n * milisegundos. La diferencia principal con should es que este método no se\r\n * ocupa de si un test pasa o falla, sino simplemente que trata de cumplir una\r\n * condición. Es especialmente útil para intentar hacer foco o esperar algún\r\n * evento en un futuro cercano.\r\n */\r\n wait = async (\r\n name: string,\r\n cb: () => boolean | Promise<boolean>,\r\n options?: TRunOptions,\r\n ) => {\r\n const actualOptions = Object.assign({ delay: 0, ms: 250, n: 5 }, options);\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n let tries = actualOptions.n;\r\n\r\n if (!actualOptions.silence) this.logger.info(`[WAITING] ${name}`);\r\n\r\n const tryAgain = () => {\r\n window.requestAnimationFrame(() => {\r\n if (tries-- > 0) {\r\n void (async () => {\r\n const result = await cb();\r\n if (!result) {\r\n setTimeout(() => {\r\n tryAgain();\r\n }, actualOptions.ms);\r\n } else {\r\n resolve(true);\r\n }\r\n })();\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n };\r\n\r\n tryAgain();\r\n }, actualOptions.delay);\r\n });\r\n };\r\n\r\n #run = async (task: TTask) => {\r\n try {\r\n const taskResult = await task.cb();\r\n\r\n if (taskResult) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } catch (e) {\r\n this.logger.error(String(e));\r\n return false;\r\n }\r\n };\r\n}\r\n\r\nexport { TestComponent, TestsLogger };\r\n"],"names":["__privateAdd","__publicField","__privateGet","__privateSet"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/TestComponent.tsx","../src/TestsLogger.ts","../src/index.tsx"],"sourcesContent":["import { FC, RefCallback, forwardRef, useEffect, useState } from 'react';\nimport { EventEmitter, useMount } from '@apia/util';\nimport { Test } from '.';\n\nlet maxId = 0;\nlet maxUpdateId = 0;\n\nexport class TestComponent<\n T extends Record<string, unknown>,\n> extends EventEmitter<{\n update: { id: string; props: Partial<T> };\n updated: string;\n}> {\n #component: FC<T>;\n #props: T;\n\n id = `component__${maxId++}`;\n\n Component = forwardRef<object>((_, ref) => {\n const [props, setProps] = useState(this.#props);\n const [lastUpdateId, setLastUpdateId] = useState('');\n\n const Render = this.#component;\n\n useMount(() => {\n const suscription = this.on('update', (ev) => {\n setProps((current) => ({ ...current, ...ev.props }));\n setLastUpdateId(ev.id);\n });\n\n (ref as RefCallback<object>)({});\n\n return suscription;\n });\n\n useEffect(() => {\n setTimeout(() => {\n this.emit('updated', lastUpdateId);\n }, 0);\n }, [lastUpdateId]);\n\n return (\n <div id={this.name}>\n <Render {...props} />\n </div>\n );\n });\n\n constructor(\n private name: string,\n private test: Test,\n component: FC<T>,\n initialProps: T,\n ) {\n super();\n\n this.#component = component;\n this.#props = initialProps;\n }\n\n unmount = () => {\n this.test.unmount(this);\n };\n\n updateProps(newProps: Partial<T>) {\n return new Promise<void>((resolve) => {\n const updateId = `update${maxUpdateId++}`;\n const unsuscribe = this.on('updated', (ev) => {\n if (ev === updateId) {\n unsuscribe();\n resolve();\n }\n });\n setTimeout(() => {\n this.emit('update', { id: updateId, props: newProps });\n }, 0);\n });\n }\n}\n","export type TLogType = 'error' | 'info' | 'success' | 'title' | 'warn';\n\nexport abstract class TestsLogger {\n abstract error(message: string): void;\n abstract info(message: string): void;\n abstract report(): void;\n abstract success(message: string): void;\n abstract title(message: string): void;\n abstract warn(message: string): void;\n\n /**\n * Establece qué niveles se muestran y qué niveles no.\n */\n abstract setDebugLevels(levels: Partial<Record<TLogType, boolean>>): void;\n}\n\nexport class ConsoleTestsLogger extends TestsLogger {\n colors = {\n error: '#f77',\n info: 'lightblue',\n success: 'lightgreen',\n title: 'white',\n warn: 'yellow',\n };\n\n #reports: {\n title: string;\n messages: Partial<Record<keyof TestsLogger, string[]>>;\n }[] = [];\n\n #levels = {\n error: true,\n info: true,\n success: true,\n title: true,\n warn: true,\n };\n\n #log = (type: TLogType, message: string) => {\n const color = this.colors[type];\n\n const messages = this.#reports[this.#reports.length - 1].messages;\n if (!messages[type]) messages[type] = [];\n messages[type]?.push(message);\n\n console.info(\n `%c[${type}]%c: ${message}`,\n `color: ${color}`,\n 'color: white',\n );\n };\n\n constructor() {\n super();\n\n this.reset();\n }\n\n error(message: string): void {\n if (this.#levels.error) {\n console.error(message);\n this.#log('error', message);\n }\n }\n\n info(message: string): void {\n if (this.#levels.info) this.#log('info', message);\n }\n\n success(message: string): void {\n if (this.#levels.success) this.#log('success', message);\n }\n\n report() {\n for (const report of this.#reports) {\n const errors = report.messages.error?.length ?? 0;\n const warns = report.messages.warn?.length ?? 0;\n const successes = report.messages.success?.length ?? 0;\n\n if (successes === warns && warns === errors && errors === 0) {\n if (\n report.title !==\n 'Test without title, use method it to set test title.'\n )\n console.log(\n `%cFor ${report.title}, no cases made.`,\n 'font-weight: bold; padding: 10px',\n );\n continue;\n }\n\n console.log(`%cFor ${report.title}`, 'font-weight: bold; padding: 10px');\n console.log(\n `%c${successes} tests succeed.`,\n `color: ${this.colors.success}`,\n );\n console.log(`%c${warns} warnings sent.`, `color: ${this.colors.warn}`);\n console.log(`%c${errors} errors found.`, `color: ${this.colors.error}`);\n }\n\n this.reset();\n }\n\n reset = () => {\n this.#reports = [\n {\n title: 'Test without title, use method it to set test title.',\n messages: {},\n },\n ];\n };\n\n title(title: string): void {\n this.#reports.push({ title, messages: {} });\n\n if (this.#levels.title) {\n const color = this.colors.title;\n\n console.info(\n `%c${title}`,\n `color: ${color}; font-weight: bold; padding: 10px`,\n );\n }\n }\n\n warn(message: string): void {\n if (this.#levels.warn) {\n console.warn(message);\n this.#log('warn', message);\n }\n }\n\n setDebugLevels(levels: Partial<Record<TLogType, boolean>>): void {\n this.#levels = { ...this.#levels, ...levels };\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventEmitter, useMount } from '@apia/util';\nimport { CSSProperties, FC, useState } from 'react';\nimport { TestComponent } from './TestComponent';\nimport { ConsoleTestsLogger, TestsLogger } from './TestsLogger';\n\ntype TTask = {\n name: string;\n cb: () => Promise<boolean> | boolean;\n};\n\ntype TRunOptions = Partial<{\n /**\n * Delay al inicio\n */\n delay: number;\n /**\n * Cantidad de veces a ejecutar\n */\n n: number;\n /**\n * Demora entre reintentos\n */\n ms: number;\n /**\n * Omitir mensajes\n */\n silence: boolean;\n}>;\n\nexport class Test extends EventEmitter<{\n componentsListUpdated: boolean;\n componentMounted: string;\n}> {\n #components: TestComponent<any>[] = [];\n #ref: HTMLElement | null = null;\n\n logger: TestsLogger = new ConsoleTestsLogger();\n\n Component = ({ style }: { style: CSSProperties }) => {\n const [components, setComponents] = useState(this.#components);\n\n useMount(() => {\n return this.on('componentsListUpdated', () => {\n setComponents([...this.#components]);\n });\n });\n\n return (\n <div ref={(el) => (this.#ref = el)} style={{ display: 'none', ...style }}>\n {components.map((current) => (\n <current.Component\n ref={(el) => {\n if (el) this.emit('componentMounted', current.id);\n }}\n key={current.id}\n />\n ))}\n </div>\n );\n };\n\n /**\n * Devuelve el elemento html sobre el cual se están montando los tests\n */\n get root() {\n return this.#ref;\n }\n\n /**\n * Hace foco sobre un elemento del DOM y resuelve cuando puede hacer foco o\n * rompe cuando no puede hacer después de 5 intentos.\n */\n focus = (\n selector: string,\n check?: (element: HTMLElement) => boolean,\n options?: TRunOptions,\n ) => {\n const actualOptions = Object.assign({ delay: 0, ms: 250, n: 5 }, options);\n\n return new Promise<HTMLElement | null>((resolve) => {\n setTimeout(() => {\n let tries = actualOptions.n;\n const interval = setInterval(() => {\n this.logger.info(`Trying to focus with selector ${selector}`);\n tries--;\n const element = this.root?.querySelector<HTMLElement>(selector);\n\n if (element) {\n element.focus();\n\n if (check ? check(element) : element === document.activeElement) {\n clearInterval(interval);\n resolve(element);\n }\n }\n\n if (tries === 0) {\n clearInterval(interval);\n resolve(null);\n }\n }, actualOptions.ms);\n }, actualOptions.delay);\n });\n };\n\n /**\n * Anuncia un nuevo grupo de tests\n */\n it = (text: string) => {\n this.logger.title(text);\n };\n\n /**\n * Monta un componente para usarlo en el testing\n */\n mount = <T extends Record<string, unknown>>(\n name: string,\n component: FC<T>,\n initialProps: T,\n ) => {\n return new Promise<TestComponent<T>>((resolve) => {\n const newComponent = new TestComponent(\n name,\n this,\n component,\n initialProps,\n );\n this.#components.push(newComponent);\n this.emit('componentsListUpdated', true);\n const unsuscribe = this.on('componentMounted', (ev) => {\n if (ev === newComponent.id) {\n unsuscribe();\n resolve(newComponent);\n }\n });\n });\n };\n\n report = () => {\n this.logger.report();\n };\n\n #running = false;\n\n /**\n * Corre una tarea que va a intentar hasta n veces cada ms milisegundos antes\n * de resolver como fallo.\n *\n * @parameter options\n */\n should = async (\n name: string,\n cb: () => boolean | Promise<boolean>,\n options?: Omit<TRunOptions, 'silence'>,\n ) => {\n await this.wait('', () => !this.#running, { silence: true, n: 300 });\n\n this.#running = true;\n const actualOptions = Object.assign({ delay: 0, ms: 250, n: 5 }, options);\n\n return new Promise<void>((resolve) => {\n setTimeout(() => {\n let tries = actualOptions.n;\n\n const tryAgain = () => {\n window.requestAnimationFrame(() => {\n this.#run({ name, cb })\n .then((result) => {\n if (!result && tries-- > 0) {\n setTimeout(() => {\n tryAgain();\n }, actualOptions.ms);\n this.logger.warn(`[RETRY ${5 - tries}] ${name}`);\n } else if (result) {\n this.logger.success(`${name}`);\n resolve();\n this.#running = false;\n } else {\n this.logger.error(name);\n resolve();\n this.#running = false;\n }\n })\n .catch(() => {\n if (tries-- > 0) {\n setTimeout(() => {\n tryAgain();\n }, actualOptions.ms);\n this.logger.warn(`[RETRY ${5 - tries}] ${name}`);\n } else {\n this.logger.error(`[CATCH] ${name}`);\n resolve();\n this.#running = false;\n }\n });\n });\n };\n\n tryAgain();\n }, actualOptions.delay);\n });\n };\n\n unmount = (component: TestComponent<any>) => {\n this.#components = this.#components.filter(\n (current) => current !== component,\n );\n this.emit('componentsListUpdated', true);\n };\n\n /**\n * Espera por una condición a suceder, intentando n veces cada ms\n * milisegundos. La diferencia principal con should es que este método no se\n * ocupa de si un test pasa o falla, sino simplemente que trata de cumplir una\n * condición. Es especialmente útil para intentar hacer foco o esperar algún\n * evento en un futuro cercano.\n */\n wait = async (\n name: string,\n cb: () => boolean | Promise<boolean>,\n options?: TRunOptions,\n ) => {\n const actualOptions = Object.assign({ delay: 0, ms: 250, n: 5 }, options);\n\n return new Promise((resolve) => {\n setTimeout(() => {\n let tries = actualOptions.n;\n\n if (!actualOptions.silence) this.logger.info(`[WAITING] ${name}`);\n\n const tryAgain = () => {\n window.requestAnimationFrame(() => {\n if (tries-- > 0) {\n void (async () => {\n const result = await cb();\n if (!result) {\n setTimeout(() => {\n tryAgain();\n }, actualOptions.ms);\n } else {\n resolve(true);\n }\n })();\n } else {\n resolve(false);\n }\n });\n };\n\n tryAgain();\n }, actualOptions.delay);\n });\n };\n\n #run = async (task: TTask) => {\n try {\n const taskResult = await task.cb();\n\n if (taskResult) {\n return true;\n } else {\n return false;\n }\n } catch (e) {\n this.logger.error(String(e));\n return false;\n }\n };\n}\n\nexport { TestComponent, TestsLogger };\n"],"names":["__privateAdd","__publicField","__privateGet","__privateSet"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,UAAA,EAAA,MAAA;AAIA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAI,WAAA,GAAc,CAAA;AAEX,MAAM,sBAEH,YAAA,CAGP;AAAA,EAoCD,WAAA,CACU,IAAA,EACA,IAAA,EACR,SAAA,EACA,YAAA,EACA;AACA,IAAA,KAAA,EAAM;AALE,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AArCV,IAAAA,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AACA,IAAAA,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAEA,IAAAC,eAAA,CAAA,IAAA,EAAA,IAAA,EAAK,cAAc,KAAA,EAAO,CAAA,CAAA,CAAA;AAE1B,IAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAY,UAAA,CAAmB,CAAC,CAAA,EAAG,GAAA,KAAQ;AACzC,MAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAA,CAASC,qBAAK,MAAA,CAAM,CAAA;AAC9C,MAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,EAAE,CAAA;AAEnD,MAAA,MAAM,SAASA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA;AAEpB,MAAA,QAAA,CAAS,MAAM;AACb,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,EAAA,CAAG,QAAA,EAAU,CAAC,EAAA,KAAO;AAC5C,UAAA,QAAA,CAAS,CAAC,aAAa,EAAE,GAAG,SAAS,GAAG,EAAA,CAAG,OAAM,CAAE,CAAA;AACnD,UAAA,eAAA,CAAgB,GAAG,EAAE,CAAA;AAAA,SACtB,CAAA;AAED,QAAC,GAAA,CAA4B,EAAE,CAAA;AAE/B,QAAA,OAAO,WAAA;AAAA,OACR,CAAA;AAED,MAAA,SAAA,CAAU,MAAM;AACd,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAA,CAAK,IAAA,CAAK,WAAW,YAAY,CAAA;AAAA,WAChC,CAAC,CAAA;AAAA,OACN,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,MAAA,uBACE,GAAA,CAAC,SAAI,EAAA,EAAI,IAAA,CAAK,MACZ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,KAAA,EAAO,CAAA,EACrB,CAAA;AAAA,KAEH,CAAA,CAAA;AAcD,IAAAD,eAAA,CAAA,IAAA,EAAA,SAAA,EAAU,MAAM;AACd,MAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,IAAI,CAAA;AAAA,KACxB,CAAA;AANE,IAAAE,cAAA,CAAA,IAAA,EAAK,UAAA,EAAa,SAAA,CAAA;AAClB,IAAAA,cAAA,CAAA,IAAA,EAAK,MAAA,EAAS,YAAA,CAAA;AAAA;AAChB,EAMA,YAAY,QAAA,EAAsB;AAChC,IAAA,OAAO,IAAI,OAAA,CAAc,CAAC,OAAA,KAAY;AACpC,MAAA,MAAM,QAAA,GAAW,SAAS,WAAA,EAAa,CAAA,CAAA;AACvC,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,EAAA,CAAG,SAAA,EAAW,CAAC,EAAA,KAAO;AAC5C,QAAA,IAAI,OAAO,QAAA,EAAU;AACnB,UAAA,UAAA,EAAW;AACX,UAAA,OAAA,EAAQ;AAAA;AACV,OACD,CAAA;AACD,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAA,CAAK,KAAK,QAAA,EAAU,EAAE,IAAI,QAAA,EAAU,KAAA,EAAO,UAAU,CAAA;AAAA,SACpD,CAAC,CAAA;AAAA,KACL,CAAA;AAAA;AAEL;AAjEE,UAAA,GAAA,IAAA,OAAA,EAAA;AACA,MAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACdF,IAAA,QAAA,EAAA,OAAA,EAAA,IAAA;AAEO,MAAe,WAAA,CAAY;AAYlC;AAEO,MAAM,2BAA2B,WAAA,CAAY;AAAA,EAoClD,WAAA,GAAc;AACZ,IAAA,KAAA,EAAM;AApCR,IAAAF,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS;AAAA,MACP,KAAA,EAAO,MAAA;AAAA,MACP,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS,YAAA;AAAA,MACT,KAAA,EAAO,OAAA;AAAA,MACP,IAAA,EAAM;AAAA,KACR,CAAA;AAEA,IAAAD,cAAA,CAAA,IAAA,EAAA,QAAA,EAGM,EAAC,CAAA;AAEP,IAAAA,cAAA,CAAA,IAAA,EAAA,OAAA,EAAU;AAAA,MACR,KAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAM;AAAA,KACR,CAAA;AAEA,IAAAA,cAAA,CAAA,IAAA,EAAA,IAAA,EAAO,CAAC,MAAgB,OAAA,KAAoB;AAC1C,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAE9B,MAAA,MAAM,WAAWE,cAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAASA,qBAAK,QAAA,CAAA,CAAS,MAAA,GAAS,CAAC,CAAA,CAAE,QAAA;AACzD,MAAA,IAAI,CAAC,SAAS,IAAI,CAAA;AAAG,QAAA,QAAA,CAAS,IAAI,IAAI,EAAC;AACvC,MAAA,QAAA,CAAS,IAAI,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA;AAE5B,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,CAAA,GAAA,EAAM,IAAI,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,QACzB,UAAU,KAAK,CAAA,CAAA;AAAA,QACf;AAAA,OACF;AAAA,KACF,CAAA;AAqDA,IAAAD,eAAA,CAAA,IAAA,EAAA,OAAA,EAAQ,MAAM;AACZ,MAAAE,cAAA,CAAA,IAAA,EAAK,QAAA,EAAW;AAAA,QACd;AAAA,UACE,KAAA,EAAO,sDAAA;AAAA,UACP,UAAU;AAAC;AACb,OACF,CAAA;AAAA,KACF,CAAA;AAvDE,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA;AACb,EAEA,MAAM,OAAA,EAAuB;AAC3B,IAAA,IAAID,cAAA,CAAA,IAAA,EAAK,SAAQ,KAAA,EAAO;AACtB,MAAA,OAAA,CAAQ,MAAM,OAAO,CAAA;AACrB,MAAAA,cAAA,CAAA,IAAA,EAAK,IAAA,CAAA,CAAL,WAAU,OAAA,EAAS,OAAA,CAAA;AAAA;AACrB;AACF,EAEA,KAAK,OAAA,EAAuB;AAC1B,IAAA,IAAIA,qBAAK,OAAA,CAAA,CAAQ,IAAA;AAAM,MAAAA,cAAA,CAAA,IAAA,EAAK,IAAA,CAAA,CAAL,WAAU,MAAA,EAAQ,OAAA,CAAA;AAAA;AAC3C,EAEA,QAAQ,OAAA,EAAuB;AAC7B,IAAA,IAAIA,qBAAK,OAAA,CAAA,CAAQ,OAAA;AAAS,MAAAA,cAAA,CAAA,IAAA,EAAK,IAAA,CAAA,CAAL,WAAU,SAAA,EAAW,OAAA,CAAA;AAAA;AACjD,EAEA,MAAA,GAAS;AACP,IAAA,KAAA,MAAW,MAAA,IAAUA,qBAAK,QAAA,CAAA,EAAU;AAClC,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,QAAA,CAAS,KAAA,EAAO,MAAA,IAAU,CAAA;AAChD,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,QAAA,CAAS,IAAA,EAAM,MAAA,IAAU,CAAA;AAC9C,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,QAAA,CAAS,OAAA,EAAS,MAAA,IAAU,CAAA;AAErD,MAAA,IAAI,SAAA,KAAc,KAAA,IAAS,KAAA,KAAU,MAAA,IAAU,WAAW,CAAA,EAAG;AAC3D,QAAA,IACE,OAAO,KAAA,KACP,sDAAA;AAEA,UAAA,OAAA,CAAQ,GAAA;AAAA,YACN,CAAA,MAAA,EAAS,OAAO,KAAK,CAAA,gBAAA,CAAA;AAAA,YACrB;AAAA,WACF;AACF,QAAA;AAAA;AAGF,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,MAAA,EAAS,MAAA,CAAO,KAAK,IAAI,kCAAkC,CAAA;AACvE,MAAA,OAAA,CAAQ,GAAA;AAAA,QACN,KAAK,SAAS,CAAA,eAAA,CAAA;AAAA,QACd,CAAA,OAAA,EAAU,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA;AAAA,OAC/B;AACA,MAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,KAAK,CAAA,eAAA,CAAA,EAAmB,UAAU,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AACrE,MAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,MAAM,CAAA,cAAA,CAAA,EAAkB,UAAU,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,CAAE,CAAA;AAAA;AAGxE,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA;AACb,EAWA,MAAM,KAAA,EAAqB;AACzB,IAAAA,cAAA,CAAA,IAAA,EAAK,UAAS,IAAA,CAAK,EAAE,OAAO,QAAA,EAAU,IAAI,CAAA;AAE1C,IAAA,IAAIA,cAAA,CAAA,IAAA,EAAK,SAAQ,KAAA,EAAO;AACtB,MAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,CAAO,KAAA;AAE1B,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,KAAK,KAAK,CAAA,CAAA;AAAA,QACV,UAAU,KAAK,CAAA,kCAAA;AAAA,OACjB;AAAA;AACF;AACF,EAEA,KAAK,OAAA,EAAuB;AAC1B,IAAA,IAAIA,cAAA,CAAA,IAAA,EAAK,SAAQ,IAAA,EAAM;AACrB,MAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,MAAAA,cAAA,CAAA,IAAA,EAAK,IAAA,CAAA,CAAL,WAAU,MAAA,EAAQ,OAAA,CAAA;AAAA;AACpB;AACF,EAEA,eAAe,MAAA,EAAkD;AAC/D,IAAAC,cAAA,CAAA,IAAA,EAAK,SAAU,EAAE,GAAGD,cAAA,CAAA,IAAA,EAAK,OAAA,CAAA,EAAS,GAAG,MAAA,EAAO,CAAA;AAAA;AAEhD;AA9GE,QAAA,GAAA,IAAA,OAAA,EAAA;AAKA,OAAA,GAAA,IAAA,OAAA,EAAA;AAQA,IAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCF,IAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA;AA8BO,MAAM,aAAa,YAAA,CAGvB;AAAA,EAHI,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAIL,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,EAAoC,EAAC,CAAA;AACrC,IAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAA2B,IAAA,CAAA;AAE3B,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,EAAsB,IAAI,kBAAA,EAAmB,CAAA;AAE7C,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,EAAY,CAAC,EAAE,KAAA,EAAM,KAAgC;AACnD,MAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA,CAAS,mBAAK,WAAA,CAAW,CAAA;AAE7D,MAAA,QAAA,CAAS,MAAM;AACb,QAAA,OAAO,IAAA,CAAK,EAAA,CAAG,uBAAA,EAAyB,MAAM;AAC5C,UAAA,aAAA,CAAc,CAAC,GAAG,YAAA,CAAA,IAAA,EAAK,WAAA,CAAW,CAAC,CAAA;AAAA,SACpC,CAAA;AAAA,OACF,CAAA;AAED,MAAA,2BACG,KAAA,EAAA,EAAI,GAAA,EAAK,CAAC,EAAA,KAAQ,YAAA,CAAA,IAAA,EAAK,MAAO,EAAA,CAAA,EAAK,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,GAAG,KAAA,IAC9D,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,OAAA,qBACf,GAAA;AAAA,QAAC,OAAA,CAAQ,SAAA;AAAA,QAAR;AAAA,UACC,GAAA,EAAK,CAAC,EAAA,KAAO;AACX,YAAA,IAAI,EAAA;AAAI,cAAA,IAAA,CAAK,IAAA,CAAK,kBAAA,EAAoB,OAAA,CAAQ,EAAE,CAAA;AAAA;AAClD,SAAA;AAAA,QACK,OAAA,CAAQ;AAAA,OAEhB,CAAA,EACH,CAAA;AAAA,KAEJ,CAAA;AAaA;AAAA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,EAAQ,CACN,QAAA,EACA,KAAA,EACA,OAAA,KACG;AACH,MAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,CAAA,EAAE,EAAG,OAAO,CAAA;AAExE,MAAA,OAAO,IAAI,OAAA,CAA4B,CAAC,OAAA,KAAY;AAClD,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAI,QAAQ,aAAA,CAAc,CAAA;AAC1B,UAAA,MAAM,QAAA,GAAW,YAAY,MAAM;AACjC,YAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,8BAAA,EAAiC,QAAQ,CAAA,CAAE,CAAA;AAC5D,YAAA,KAAA,EAAA;AACA,YAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,EAAM,aAAA,CAA2B,QAAQ,CAAA;AAE9D,YAAA,IAAI,OAAA,EAAS;AACX,cAAA,OAAA,CAAQ,KAAA,EAAM;AAEd,cAAA,IAAI,QAAQ,KAAA,CAAM,OAAO,CAAA,GAAI,OAAA,KAAY,SAAS,aAAA,EAAe;AAC/D,gBAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,gBAAA,OAAA,CAAQ,OAAO,CAAA;AAAA;AACjB;AAGF,YAAA,IAAI,UAAU,CAAA,EAAG;AACf,cAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,cAAA,OAAA,CAAQ,IAAI,CAAA;AAAA;AACd,WACF,EAAG,cAAc,EAAE,CAAA;AAAA,SACrB,EAAG,cAAc,KAAK,CAAA;AAAA,OACvB,CAAA;AAAA,KACH,CAAA;AAKA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK,CAAC,IAAA,KAAiB;AACrB,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,KACxB,CAAA;AAKA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,EAAQ,CACN,IAAA,EACA,SAAA,EACA,YAAA,KACG;AACH,MAAA,OAAO,IAAI,OAAA,CAA0B,CAAC,OAAA,KAAY;AAChD,QAAA,MAAM,eAAe,IAAI,aAAA;AAAA,UACvB,IAAA;AAAA,UACA,IAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,YAAA,CAAA,IAAA,EAAK,WAAA,CAAA,CAAY,KAAK,YAAY,CAAA;AAClC,QAAA,IAAA,CAAK,IAAA,CAAK,yBAAyB,IAAI,CAAA;AACvC,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,EAAA,CAAG,kBAAA,EAAoB,CAAC,EAAA,KAAO;AACrD,UAAA,IAAI,EAAA,KAAO,aAAa,EAAA,EAAI;AAC1B,YAAA,UAAA,EAAW;AACX,YAAA,OAAA,CAAQ,YAAY,CAAA;AAAA;AACtB,SACD,CAAA;AAAA,OACF,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,EAAS,MAAM;AACb,MAAA,IAAA,CAAK,OAAO,MAAA,EAAO;AAAA,KACrB,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,EAAW,KAAA,CAAA;AAQX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,EAAS,OACP,IAAA,EACA,EAAA,EACA,OAAA,KACG;AACH,MAAA,MAAM,IAAA,CAAK,IAAA,CAAK,EAAA,EAAI,MAAM,CAAC,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,EAAU,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,CAAA;AAEnE,MAAA,YAAA,CAAA,IAAA,EAAK,QAAA,EAAW,IAAA,CAAA;AAChB,MAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,CAAA,EAAE,EAAG,OAAO,CAAA;AAExE,MAAA,OAAO,IAAI,OAAA,CAAc,CAAC,OAAA,KAAY;AACpC,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAI,QAAQ,aAAA,CAAc,CAAA;AAE1B,UAAA,MAAM,WAAW,MAAM;AACrB,YAAA,MAAA,CAAO,sBAAsB,MAAM;AACjC,cAAA,YAAA,CAAA,IAAA,EAAK,IAAA,CAAA,CAAL,WAAU,EAAE,IAAA,EAAM,IAAG,CAAA,CAClB,IAAA,CAAK,CAAC,MAAA,KAAW;AAChB,gBAAA,IAAI,CAAC,MAAA,IAAU,KAAA,EAAA,GAAU,CAAA,EAAG;AAC1B,kBAAA,UAAA,CAAW,MAAM;AACf,oBAAA,QAAA,EAAS;AAAA,mBACX,EAAG,cAAc,EAAE,CAAA;AACnB,kBAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,OAAA,EAAU,IAAI,KAAK,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAAA,2BACtC,MAAA,EAAQ;AACjB,kBAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAA,EAAG,IAAI,CAAA,CAAE,CAAA;AAC7B,kBAAA,OAAA,EAAQ;AACR,kBAAA,YAAA,CAAA,IAAA,EAAK,QAAA,EAAW,KAAA,CAAA;AAAA,iBAClB,MAAO;AACL,kBAAA,IAAA,CAAK,MAAA,CAAO,MAAM,IAAI,CAAA;AACtB,kBAAA,OAAA,EAAQ;AACR,kBAAA,YAAA,CAAA,IAAA,EAAK,QAAA,EAAW,KAAA,CAAA;AAAA;AAClB,eACD,CAAA,CACA,KAAA,CAAM,MAAM;AACX,gBAAA,IAAI,UAAU,CAAA,EAAG;AACf,kBAAA,UAAA,CAAW,MAAM;AACf,oBAAA,QAAA,EAAS;AAAA,mBACX,EAAG,cAAc,EAAE,CAAA;AACnB,kBAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,OAAA,EAAU,IAAI,KAAK,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAAA,iBACjD,MAAO;AACL,kBAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAA,QAAA,EAAW,IAAI,CAAA,CAAE,CAAA;AACnC,kBAAA,OAAA,EAAQ;AACR,kBAAA,YAAA,CAAA,IAAA,EAAK,QAAA,EAAW,KAAA,CAAA;AAAA;AAClB,eACD,CAAA;AAAA,aACJ,CAAA;AAAA,WACH;AAEA,UAAA,QAAA,EAAS;AAAA,SACX,EAAG,cAAc,KAAK,CAAA;AAAA,OACvB,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,EAAU,CAAC,SAAA,KAAkC;AAC3C,MAAA,YAAA,CAAA,IAAA,EAAK,WAAA,EAAc,mBAAK,WAAA,CAAA,CAAY,MAAA;AAAA,QAClC,CAAC,YAAY,OAAA,KAAY;AAAA,OAC3B,CAAA;AACA,MAAA,IAAA,CAAK,IAAA,CAAK,yBAAyB,IAAI,CAAA;AAAA,KACzC,CAAA;AASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,EAAO,OACL,IAAA,EACA,EAAA,EACA,OAAA,KACG;AACH,MAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,CAAA,EAAE,EAAG,OAAO,CAAA;AAExE,MAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAI,QAAQ,aAAA,CAAc,CAAA;AAE1B,UAAA,IAAI,CAAC,aAAA,CAAc,OAAA;AAAS,YAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,UAAA,EAAa,IAAI,CAAA,CAAE,CAAA;AAEhE,UAAA,MAAM,WAAW,MAAM;AACrB,YAAA,MAAA,CAAO,sBAAsB,MAAM;AACjC,cAAA,IAAI,UAAU,CAAA,EAAG;AACf,gBAAA,KAAA,CAAM,YAAY;AAChB,kBAAA,MAAM,MAAA,GAAS,MAAM,EAAA,EAAG;AACxB,kBAAA,IAAI,CAAC,MAAA,EAAQ;AACX,oBAAA,UAAA,CAAW,MAAM;AACf,sBAAA,QAAA,EAAS;AAAA,qBACX,EAAG,cAAc,EAAE,CAAA;AAAA,mBACrB,MAAO;AACL,oBAAA,OAAA,CAAQ,IAAI,CAAA;AAAA;AACd,iBACF,GAAG;AAAA,eACL,MAAO;AACL,gBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA;AACf,aACD,CAAA;AAAA,WACH;AAEA,UAAA,QAAA,EAAS;AAAA,SACX,EAAG,cAAc,KAAK,CAAA;AAAA,OACvB,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAO,OAAO,IAAA,KAAgB;AAC5B,MAAA,IAAI;AACF,QAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,EAAA,EAAG;AAEjC,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,OAAO,IAAA;AAAA,SACT,MAAO;AACL,UAAA,OAAO,KAAA;AAAA;AACT,eACO,CAAA,EAAG;AACV,QAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AAC3B,QAAA,OAAO,KAAA;AAAA;AACT,KACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA3MA,IAAI,IAAA,GAAO;AACT,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,IAAA,CAAA;AAAA;AA2MhB;AA3OE,WAAA,GAAA,IAAA,OAAA,EAAA;AACA,IAAA,GAAA,IAAA,OAAA,EAAA;AA4GA,QAAA,GAAA,IAAA,OAAA,EAAA;AAgHA,IAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apia/testing",
3
- "version": "4.0.20",
3
+ "version": "4.0.24",
4
4
  "sideEffects": false,
5
5
  "author": "Alexis Leite <alexisleite@live.com>",
6
6
  "main": "dist/index.js",
@@ -11,11 +11,11 @@
11
11
  "libDev": "rollup --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx",
12
12
  "libBuild": "rollup --config ../../config/rollup.common.mjs --environment MODE:production,ENTRY:index.tsx",
13
13
  "libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx,WATCH:true",
14
- "libWatchDevExecution": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx,WATCH:true,DEV_SERVER_MODULE:execution",
15
- "libWatchDevDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx,WATCH:true,DEV_SERVER_MODULE:dashboards"
14
+ "libWatchForExecution": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx,WATCH:true,DEV_SERVER_MODULE:execution",
15
+ "libWatchForDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx,WATCH:true,DEV_SERVER_MODULE:dashboards"
16
16
  },
17
17
  "dependencies": {
18
- "@apia/util": "^4.0.20"
18
+ "@apia/util": "^4.0.24"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/react": "^18.2.43",
@@ -32,5 +32,5 @@
32
32
  "access": "public",
33
33
  "registry": "https://registry.npmjs.org/"
34
34
  },
35
- "gitHead": "dabff9ca7bf9d14298fe7a661d73607a35a4df2a"
35
+ "gitHead": "0c34ed891f366be27e3fb8d291b6c7c9d90eb201"
36
36
  }