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:
		
							
								
								
									
										70
									
								
								frontend/node_modules/parse5/dist/cjs/common/unicode.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								frontend/node_modules/parse5/dist/cjs/common/unicode.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| "use strict"; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| exports.SEQUENCES = exports.CODE_POINTS = exports.REPLACEMENT_CHARACTER = void 0; | ||||
| exports.isSurrogate = isSurrogate; | ||||
| exports.isSurrogatePair = isSurrogatePair; | ||||
| exports.getSurrogatePairCodePoint = getSurrogatePairCodePoint; | ||||
| exports.isControlCodePoint = isControlCodePoint; | ||||
| exports.isUndefinedCodePoint = isUndefinedCodePoint; | ||||
| const UNDEFINED_CODE_POINTS = new Set([ | ||||
|     65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, | ||||
|     393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, | ||||
|     720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, | ||||
|     1048575, 1114110, 1114111, | ||||
| ]); | ||||
| exports.REPLACEMENT_CHARACTER = '\uFFFD'; | ||||
| var CODE_POINTS; | ||||
| (function (CODE_POINTS) { | ||||
|     CODE_POINTS[CODE_POINTS["EOF"] = -1] = "EOF"; | ||||
|     CODE_POINTS[CODE_POINTS["NULL"] = 0] = "NULL"; | ||||
|     CODE_POINTS[CODE_POINTS["TABULATION"] = 9] = "TABULATION"; | ||||
|     CODE_POINTS[CODE_POINTS["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; | ||||
|     CODE_POINTS[CODE_POINTS["LINE_FEED"] = 10] = "LINE_FEED"; | ||||
|     CODE_POINTS[CODE_POINTS["FORM_FEED"] = 12] = "FORM_FEED"; | ||||
|     CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE"; | ||||
|     CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; | ||||
|     CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; | ||||
|     CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND"; | ||||
|     CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE"; | ||||
|     CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; | ||||
|     CODE_POINTS[CODE_POINTS["SOLIDUS"] = 47] = "SOLIDUS"; | ||||
|     CODE_POINTS[CODE_POINTS["DIGIT_0"] = 48] = "DIGIT_0"; | ||||
|     CODE_POINTS[CODE_POINTS["DIGIT_9"] = 57] = "DIGIT_9"; | ||||
|     CODE_POINTS[CODE_POINTS["SEMICOLON"] = 59] = "SEMICOLON"; | ||||
|     CODE_POINTS[CODE_POINTS["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; | ||||
|     CODE_POINTS[CODE_POINTS["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; | ||||
|     CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; | ||||
|     CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK"; | ||||
|     CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; | ||||
|     CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; | ||||
|     CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; | ||||
|     CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; | ||||
|     CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; | ||||
|     CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; | ||||
| })(CODE_POINTS || (exports.CODE_POINTS = CODE_POINTS = {})); | ||||
| exports.SEQUENCES = { | ||||
|     DASH_DASH: '--', | ||||
|     CDATA_START: '[CDATA[', | ||||
|     DOCTYPE: 'doctype', | ||||
|     SCRIPT: 'script', | ||||
|     PUBLIC: 'public', | ||||
|     SYSTEM: 'system', | ||||
| }; | ||||
| //Surrogates | ||||
| function isSurrogate(cp) { | ||||
|     return cp >= 55296 && cp <= 57343; | ||||
| } | ||||
| function isSurrogatePair(cp) { | ||||
|     return cp >= 56320 && cp <= 57343; | ||||
| } | ||||
| function getSurrogatePairCodePoint(cp1, cp2) { | ||||
|     return (cp1 - 55296) * 1024 + 9216 + cp2; | ||||
| } | ||||
| //NOTE: excluding NULL and ASCII whitespace | ||||
| function isControlCodePoint(cp) { | ||||
|     return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) || | ||||
|         (cp >= 0x7f && cp <= 0x9f)); | ||||
| } | ||||
| function isUndefinedCodePoint(cp) { | ||||
|     return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 anthonyrawlins
					anthonyrawlins