@applitools/logger
Advanced tools
+15
-0
| # Changelog | ||
| ## [2.1.3](https://github.com/Applitools-Dev/sdk/compare/js/logger@2.1.2...js/logger@2.1.3) (2025-05-07) | ||
| ### Bug Fixes | ||
| * silent tunnel warning | AD-9842 ([#2932](https://github.com/Applitools-Dev/sdk/issues/2932)) ([e83a2ff](https://github.com/Applitools-Dev/sdk/commit/e83a2fffc5c73edda8c52c101356f94d0c600959)) | ||
| ### Dependencies | ||
| * @applitools/utils bumped to 1.8.1 | ||
| #### Bug Fixes | ||
| * offline test dist readings | AD-9894 ([#2945](https://github.com/Applitools-Dev/sdk/issues/2945)) ([92293f4](https://github.com/Applitools-Dev/sdk/commit/92293f40ddbbb015fba224a70158bbd0cdbcf799)) | ||
| ## [2.1.2](https://github.com/Applitools-Dev/sdk/compare/js/logger@2.1.1...js/logger@2.1.2) (2025-03-30) | ||
@@ -4,0 +19,0 @@ |
+53
-0
@@ -5,4 +5,7 @@ "use strict"; | ||
| const logger_1 = require("./logger"); | ||
| // @ts-ignore | ||
| const promises_1 = require("node:timers/promises"); | ||
| function makeSpyLogger({ level } = {}) { | ||
| const calls = []; | ||
| const waiter = makeWaiter(); | ||
| const logger = (0, logger_1.makeLogger)({ | ||
@@ -12,11 +15,15 @@ handler: { | ||
| calls.push({ level: 'info', message }); | ||
| waiter.notifyAll(); | ||
| }, | ||
| error(message) { | ||
| calls.push({ level: 'error', message }); | ||
| waiter.notifyAll(); | ||
| }, | ||
| warn(message) { | ||
| calls.push({ level: 'warn', message }); | ||
| waiter.notifyAll(); | ||
| }, | ||
| fatal(message) { | ||
| calls.push({ level: 'fatal', message }); | ||
| waiter.notifyAll(); | ||
| }, | ||
@@ -29,2 +36,22 @@ }, | ||
| calls, | ||
| waitForNextCall(timeout = 5000) { | ||
| const start = Date.now(); | ||
| return waiter.wait(start + timeout, `Timeout waiting for the next logger call. Current calls: ${calls.length}. Timeout: ${timeout}ms`); | ||
| }, | ||
| async waitForLength(length, timeout = 5000) { | ||
| const start = Date.now(); | ||
| while (calls.length < length) { | ||
| await waiter.wait(start + timeout, `Timeout waiting for logger to have ${length} calls reached. Current calls: ${calls.length}. Timeout: ${timeout}ms`); | ||
| } | ||
| }, | ||
| async waitForLog(message, { level, timeout = 5000 } = {}) { | ||
| const start = Date.now(); | ||
| while (!calls.some(call => call.message.includes(message) && (!level || call.level === level))) { | ||
| await waiter.wait(start + timeout, `Timeout waiting for logger to have message "${message}". Timeout: ${timeout}ms`); | ||
| } | ||
| }, | ||
| extend: (anotherLogger) => { | ||
| logger.log('not extending spy logger with logger', anotherLogger); | ||
| return logger; | ||
| }, | ||
| get isSpyLogger() { | ||
@@ -36,1 +63,27 @@ return true; | ||
| exports.makeSpyLogger = makeSpyLogger; | ||
| function makeWaiter() { | ||
| const waiters = []; | ||
| return { | ||
| wait(deadline, errorMessage) { | ||
| const timeLeft = deadline - Date.now(); | ||
| const abortController = new AbortController(); | ||
| if (timeLeft > 0) { | ||
| return Promise.race([ | ||
| new Promise(res => waiters.push(res)), | ||
| (0, promises_1.setTimeout)(timeLeft, new Error(errorMessage !== null && errorMessage !== void 0 ? errorMessage : `Timeout waiting for logger`), { | ||
| signal: abortController.signal, | ||
| }), | ||
| ]).then(error => { | ||
| abortController.abort(); | ||
| if (error instanceof Error) { | ||
| throw error; | ||
| } | ||
| }); | ||
| } | ||
| throw new Error(errorMessage !== null && errorMessage !== void 0 ? errorMessage : `Timeout waiting for logger`); | ||
| }, | ||
| notifyAll() { | ||
| waiters.splice(0).forEach(res => res()); | ||
| }, | ||
| }; | ||
| } |
+2
-2
| { | ||
| "name": "@applitools/logger", | ||
| "version": "2.1.2", | ||
| "version": "2.1.3", | ||
| "description": "Applitools logger", | ||
@@ -52,3 +52,3 @@ "keywords": [ | ||
| "dependencies": { | ||
| "@applitools/utils": "1.8.0", | ||
| "@applitools/utils": "1.8.1", | ||
| "chalk": "4.1.2", | ||
@@ -55,0 +55,0 @@ "debug": "4.3.4" |
+6
-0
@@ -102,2 +102,8 @@ import type { LogLevel } from './log-level'; | ||
| readonly calls: ReadonlyArray<LogCall>; | ||
| waitForNextCall(timeout?: number): Promise<void>; | ||
| waitForLength(length: number, timeout?: number): Promise<void>; | ||
| waitForLog(message: string, options?: { | ||
| level?: LogLevelName; | ||
| timeout?: number; | ||
| }): Promise<void>; | ||
| } | ||
@@ -104,0 +110,0 @@ export interface LogCall { |
Unidentified License
LicenseSomething that seems like a license was found, but its contents could not be matched with a known license.
Unidentified License
LicenseSomething that seems like a license was found, but its contents could not be matched with a known license.
63556
5.33%893
7.07%+ Added
- Removed
Updated