Set up comprehensive frontend testing infrastructure
- Install Jest for unit testing with React Testing Library - Install Playwright for end-to-end testing - Configure Jest with proper TypeScript support and module mapping - Create test setup files and utilities for both unit and e2e tests Components: * Jest configuration with coverage thresholds * Playwright configuration with browser automation * Unit tests for LoginForm, AuthContext, and useSocketIO hook * E2E tests for authentication, dashboard, and agents workflows * GitHub Actions workflow for automated testing * Mock data and API utilities for consistent testing * Test documentation with best practices Testing features: - Unit tests with 70% coverage threshold - E2E tests with API mocking and user journey testing - CI/CD integration for automated test runs - Cross-browser testing support with Playwright - Authentication system testing end-to-end 🚀 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										89
									
								
								frontend/node_modules/bs-logger/dist/testing/target-mock.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								frontend/node_modules/bs-logger/dist/testing/target-mock.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| "use strict"; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| var context_1 = require("../logger/context"); | ||||
| var level_1 = require("../logger/level"); | ||||
| var extendArray = function (array) { | ||||
|     return Object.defineProperty(array, 'last', { | ||||
|         configurable: true, | ||||
|         get: function () { | ||||
|             return this[this.length - 1]; | ||||
|         }, | ||||
|     }); | ||||
| }; | ||||
| exports.extendArray = extendArray; | ||||
| var LogTargetMock = (function () { | ||||
|     function LogTargetMock(minLevel) { | ||||
|         if (minLevel === void 0) { minLevel = -Infinity; } | ||||
|         var _this = this; | ||||
|         this.minLevel = minLevel; | ||||
|         this.messages = Object.defineProperties(extendArray([]), { | ||||
|             trace: { get: function () { return _this.filteredMessages(level_1.LogLevels.trace); } }, | ||||
|             debug: { get: function () { return _this.filteredMessages(level_1.LogLevels.debug); } }, | ||||
|             info: { get: function () { return _this.filteredMessages(level_1.LogLevels.info); } }, | ||||
|             warn: { get: function () { return _this.filteredMessages(level_1.LogLevels.warn); } }, | ||||
|             error: { get: function () { return _this.filteredMessages(level_1.LogLevels.error); } }, | ||||
|             fatal: { get: function () { return _this.filteredMessages(level_1.LogLevels.fatal); } }, | ||||
|         }); | ||||
|         this.lines = Object.defineProperties(extendArray([]), { | ||||
|             trace: { get: function () { return _this.filteredLines(level_1.LogLevels.trace); } }, | ||||
|             debug: { get: function () { return _this.filteredLines(level_1.LogLevels.debug); } }, | ||||
|             info: { get: function () { return _this.filteredLines(level_1.LogLevels.info); } }, | ||||
|             warn: { get: function () { return _this.filteredLines(level_1.LogLevels.warn); } }, | ||||
|             error: { get: function () { return _this.filteredLines(level_1.LogLevels.error); } }, | ||||
|             fatal: { get: function () { return _this.filteredLines(level_1.LogLevels.fatal); } }, | ||||
|         }); | ||||
|         this.stream = { | ||||
|             write: function (msg) { return !!_this.lines.push(msg); }, | ||||
|         }; | ||||
|     } | ||||
|     LogTargetMock.prototype.format = function (msg) { | ||||
|         this.messages.push(msg); | ||||
|         var lvl = msg.context[context_1.LogContexts.logLevel]; | ||||
|         if (lvl != null) { | ||||
|             return "[level:" + lvl + "] " + msg.message; | ||||
|         } | ||||
|         return msg.message; | ||||
|     }; | ||||
|     LogTargetMock.prototype.clear = function () { | ||||
|         this.messages.splice(0, this.messages.length); | ||||
|         this.lines.splice(0, this.lines.length); | ||||
|     }; | ||||
|     LogTargetMock.prototype.filteredMessages = function (level, untilLevel) { | ||||
|         var filter; | ||||
|         if (level == null) { | ||||
|             filter = function (m) { return m.context[context_1.LogContexts.logLevel] == null; }; | ||||
|         } | ||||
|         else if (untilLevel != null) { | ||||
|             filter = function (m) { | ||||
|                 var lvl = m.context[context_1.LogContexts.logLevel]; | ||||
|                 return lvl != null && lvl >= level && lvl <= untilLevel; | ||||
|             }; | ||||
|         } | ||||
|         else { | ||||
|             filter = function (m) { return m.context[context_1.LogContexts.logLevel] === level; }; | ||||
|         } | ||||
|         return extendArray(this.messages.filter(filter)); | ||||
|     }; | ||||
|     LogTargetMock.prototype.filteredLines = function (level, untilLevel) { | ||||
|         var extractLevel = function (line) { | ||||
|             var level = (line.match(/^\[level:([0-9]+)\] /) || [])[1]; | ||||
|             return level == null ? undefined : parseInt(level, 10); | ||||
|         }; | ||||
|         var filter; | ||||
|         if (level == null) { | ||||
|             filter = function (line) { return extractLevel(line) === undefined; }; | ||||
|         } | ||||
|         else if (untilLevel != null) { | ||||
|             filter = function (line) { | ||||
|                 var lvl = extractLevel(line); | ||||
|                 return lvl != null && lvl >= level && lvl <= untilLevel; | ||||
|             }; | ||||
|         } | ||||
|         else { | ||||
|             filter = function (line) { return extractLevel(line) === level; }; | ||||
|         } | ||||
|         return extendArray(this.lines.filter(filter)); | ||||
|     }; | ||||
|     return LogTargetMock; | ||||
| }()); | ||||
| exports.LogTargetMock = LogTargetMock; | ||||
		Reference in New Issue
	
	Block a user
	 anthonyrawlins
					anthonyrawlins