 aacb45156b
			
		
	
	aacb45156b
	
	
	
		
			
			- 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>
		
			
				
	
	
		
			71 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "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);
 | |
| }
 |