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:
		
							
								
								
									
										15
									
								
								frontend/node_modules/ts-jest/dist/presets/all-presets.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								frontend/node_modules/ts-jest/dist/presets/all-presets.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| declare const allPresets: { | ||||
|     readonly defaults: import("..").DefaultPreset; | ||||
|     readonly defaultsLegacy: import("..").DefaultLegacyPreset; | ||||
|     readonly defaultsESM: import("..").DefaultEsmPreset; | ||||
|     readonly defaultsESMLegacy: import("..").DefaultEsmLegacyPreset; | ||||
|     readonly jsWithTs: import("..").JsWithTsPreset; | ||||
|     readonly jsWithTsLegacy: import("..").JsWithTsLegacyPreset; | ||||
|     readonly jsWithTsESM: import("..").JsWithTsEsmPreset; | ||||
|     readonly jsWithTsESMLegacy: import("..").JsWithTsEsmLegacyPreset; | ||||
|     readonly jsWithBabel: import("..").JsWithBabelPreset; | ||||
|     readonly jsWithBabelLegacy: import("..").JsWithBabelLegacyPreset; | ||||
|     readonly jsWithBabelESM: import("..").JsWithBabelEsmPreset; | ||||
|     readonly jsWithBabelESMLegacy: import("..").JsWithBabelEsmLegacyPreset; | ||||
| }; | ||||
| export default allPresets; | ||||
							
								
								
									
										42
									
								
								frontend/node_modules/ts-jest/dist/presets/all-presets.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								frontend/node_modules/ts-jest/dist/presets/all-presets.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| "use strict"; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const create_jest_preset_1 = require("./create-jest-preset"); | ||||
| const allPresets = { | ||||
|     get defaults() { | ||||
|         return (0, create_jest_preset_1.createDefaultPreset)(); | ||||
|     }, | ||||
|     get defaultsLegacy() { | ||||
|         return (0, create_jest_preset_1.createDefaultLegacyPreset)(); | ||||
|     }, | ||||
|     get defaultsESM() { | ||||
|         return (0, create_jest_preset_1.createDefaultEsmPreset)(); | ||||
|     }, | ||||
|     get defaultsESMLegacy() { | ||||
|         return (0, create_jest_preset_1.createDefaultEsmLegacyPreset)(); | ||||
|     }, | ||||
|     get jsWithTs() { | ||||
|         return (0, create_jest_preset_1.createJsWithTsPreset)(); | ||||
|     }, | ||||
|     get jsWithTsLegacy() { | ||||
|         return (0, create_jest_preset_1.createJsWithTsLegacyPreset)(); | ||||
|     }, | ||||
|     get jsWithTsESM() { | ||||
|         return (0, create_jest_preset_1.createJsWithTsEsmPreset)(); | ||||
|     }, | ||||
|     get jsWithTsESMLegacy() { | ||||
|         return (0, create_jest_preset_1.createJsWithTsEsmLegacyPreset)(); | ||||
|     }, | ||||
|     get jsWithBabel() { | ||||
|         return (0, create_jest_preset_1.createJsWithBabelPreset)(); | ||||
|     }, | ||||
|     get jsWithBabelLegacy() { | ||||
|         return (0, create_jest_preset_1.createJsWithBabelLegacyPreset)(); | ||||
|     }, | ||||
|     get jsWithBabelESM() { | ||||
|         return (0, create_jest_preset_1.createJsWithBabelEsmPreset)(); | ||||
|     }, | ||||
|     get jsWithBabelESMLegacy() { | ||||
|         return (0, create_jest_preset_1.createJsWithBabelEsmLegacyPreset)(); | ||||
|     }, | ||||
| }; | ||||
| exports.default = allPresets; | ||||
							
								
								
									
										18
									
								
								frontend/node_modules/ts-jest/dist/presets/create-jest-preset.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								frontend/node_modules/ts-jest/dist/presets/create-jest-preset.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| import type { Config } from '@jest/types'; | ||||
| import { DefaultEsmLegacyPreset, DefaultEsmPreset, DefaultEsmTransformOptions, DefaultLegacyPreset, DefaultPreset, DefaultTransformOptions, JsWithBabelEsmLegacyPreset, JsWithBabelEsmPreset, JsWithBabelEsmTransformOptions, JsWithBabelLegacyPreset, JsWithBabelPreset, JsWithBabelTransformerOptions, JsWithTsEsmLegacyPreset, JsWithTsEsmPreset, JsWithTsEsmTransformOptions, JsWithTsLegacyPreset, JsWithTsPreset, JsWithTsTransformOptions, TsJestPresets } from '../types'; | ||||
| /** | ||||
|  * @deprecated use other functions below instead | ||||
|  */ | ||||
| export declare function createJestPreset(legacy?: boolean, allowJs?: boolean, extraOptions?: Config.InitialOptions): TsJestPresets; | ||||
| export declare function createDefaultPreset(tsJestTransformOptions?: DefaultTransformOptions): DefaultPreset; | ||||
| export declare function createDefaultLegacyPreset(tsJestTransformOptions?: DefaultTransformOptions): DefaultLegacyPreset; | ||||
| export declare function createJsWithTsPreset(tsJestTransformOptions?: JsWithTsTransformOptions): JsWithTsPreset; | ||||
| export declare function createJsWithTsLegacyPreset(tsJestTransformOptions?: JsWithTsTransformOptions): JsWithTsLegacyPreset; | ||||
| export declare function createJsWithBabelPreset(tsJestTransformOptions?: JsWithBabelTransformerOptions): JsWithBabelPreset; | ||||
| export declare function createJsWithBabelLegacyPreset(tsJestTransformOptions?: JsWithBabelTransformerOptions): JsWithBabelLegacyPreset; | ||||
| export declare function createDefaultEsmPreset(tsJestTransformOptions?: DefaultEsmTransformOptions): DefaultEsmPreset; | ||||
| export declare function createDefaultEsmLegacyPreset(tsJestTransformOptions?: DefaultEsmTransformOptions): DefaultEsmLegacyPreset; | ||||
| export declare function createJsWithTsEsmPreset(tsJestTransformOptions?: JsWithTsEsmTransformOptions): JsWithTsEsmPreset; | ||||
| export declare function createJsWithTsEsmLegacyPreset(tsJestTransformOptions?: JsWithTsEsmTransformOptions): JsWithTsEsmLegacyPreset; | ||||
| export declare function createJsWithBabelEsmPreset(tsJestTransformOptions?: JsWithBabelEsmTransformOptions): JsWithBabelEsmPreset; | ||||
| export declare function createJsWithBabelEsmLegacyPreset(tsJestTransformOptions?: JsWithBabelEsmTransformOptions): JsWithBabelEsmLegacyPreset; | ||||
							
								
								
									
										180
									
								
								frontend/node_modules/ts-jest/dist/presets/create-jest-preset.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								frontend/node_modules/ts-jest/dist/presets/create-jest-preset.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,180 @@ | ||||
| "use strict"; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| exports.createJestPreset = createJestPreset; | ||||
| exports.createDefaultPreset = createDefaultPreset; | ||||
| exports.createDefaultLegacyPreset = createDefaultLegacyPreset; | ||||
| exports.createJsWithTsPreset = createJsWithTsPreset; | ||||
| exports.createJsWithTsLegacyPreset = createJsWithTsLegacyPreset; | ||||
| exports.createJsWithBabelPreset = createJsWithBabelPreset; | ||||
| exports.createJsWithBabelLegacyPreset = createJsWithBabelLegacyPreset; | ||||
| exports.createDefaultEsmPreset = createDefaultEsmPreset; | ||||
| exports.createDefaultEsmLegacyPreset = createDefaultEsmLegacyPreset; | ||||
| exports.createJsWithTsEsmPreset = createJsWithTsEsmPreset; | ||||
| exports.createJsWithTsEsmLegacyPreset = createJsWithTsEsmLegacyPreset; | ||||
| exports.createJsWithBabelEsmPreset = createJsWithBabelEsmPreset; | ||||
| exports.createJsWithBabelEsmLegacyPreset = createJsWithBabelEsmLegacyPreset; | ||||
| const constants_1 = require("../constants"); | ||||
| const utils_1 = require("../utils"); | ||||
| const logger = utils_1.rootLogger.child({ namespace: 'jest-preset' }); | ||||
| /** | ||||
|  * @deprecated use other functions below instead | ||||
|  */ | ||||
| function createJestPreset(legacy = false, allowJs = false, extraOptions = {}) { | ||||
|     logger.debug({ allowJs }, 'creating jest presets', allowJs ? 'handling' : 'not handling', 'JavaScript files'); | ||||
|     const { extensionsToTreatAsEsm, moduleFileExtensions, testMatch } = extraOptions; | ||||
|     const supportESM = extensionsToTreatAsEsm?.length; | ||||
|     const tsJestTransformOptions = supportESM ? { useESM: true } : {}; | ||||
|     return { | ||||
|         ...(extensionsToTreatAsEsm ? { extensionsToTreatAsEsm } : undefined), | ||||
|         ...(moduleFileExtensions ? { moduleFileExtensions } : undefined), | ||||
|         ...(testMatch ? { testMatch } : undefined), | ||||
|         transform: { | ||||
|             ...extraOptions.transform, | ||||
|             [allowJs ? (supportESM ? '^.+\\.m?[tj]sx?$' : '^.+\\.[tj]sx?$') : '^.+\\.tsx?$']: legacy | ||||
|                 ? ['ts-jest/legacy', tsJestTransformOptions] | ||||
|                 : ['ts-jest', tsJestTransformOptions], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createDefaultPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating default CJS Jest preset'); | ||||
|     return { | ||||
|         transform: { | ||||
|             [constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest', tsJestTransformOptions], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createDefaultLegacyPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating default CJS Jest preset'); | ||||
|     return { | ||||
|         transform: { | ||||
|             [constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest/legacy', tsJestTransformOptions], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithTsPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating Js with Ts CJS Jest preset'); | ||||
|     return { | ||||
|         transform: { | ||||
|             [constants_1.TS_JS_TRANSFORM_PATTERN]: ['ts-jest', tsJestTransformOptions], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithTsLegacyPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating Js with Ts CJS Jest preset'); | ||||
|     return { | ||||
|         transform: { | ||||
|             [constants_1.TS_JS_TRANSFORM_PATTERN]: ['ts-jest/legacy', tsJestTransformOptions], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithBabelPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating JS with Babel CJS Jest preset'); | ||||
|     return { | ||||
|         transform: { | ||||
|             [constants_1.JS_TRANSFORM_PATTERN]: 'babel-jest', | ||||
|             [constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest', tsJestTransformOptions], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithBabelLegacyPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating JS with Babel CJS Jest preset'); | ||||
|     return { | ||||
|         transform: { | ||||
|             [constants_1.JS_TRANSFORM_PATTERN]: 'babel-jest', | ||||
|             [constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest/legacy', tsJestTransformOptions], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createDefaultEsmPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating default ESM Jest preset'); | ||||
|     return { | ||||
|         extensionsToTreatAsEsm: [...constants_1.TS_EXT_TO_TREAT_AS_ESM], | ||||
|         transform: { | ||||
|             [constants_1.ESM_TS_TRANSFORM_PATTERN]: [ | ||||
|                 'ts-jest', | ||||
|                 { | ||||
|                     ...tsJestTransformOptions, | ||||
|                     useESM: true, | ||||
|                 }, | ||||
|             ], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createDefaultEsmLegacyPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating default ESM Jest preset'); | ||||
|     return { | ||||
|         extensionsToTreatAsEsm: [...constants_1.TS_EXT_TO_TREAT_AS_ESM], | ||||
|         transform: { | ||||
|             [constants_1.ESM_TS_TRANSFORM_PATTERN]: [ | ||||
|                 'ts-jest/legacy', | ||||
|                 { | ||||
|                     ...tsJestTransformOptions, | ||||
|                     useESM: true, | ||||
|                 }, | ||||
|             ], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithTsEsmPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating Js with Ts ESM Jest preset'); | ||||
|     return { | ||||
|         extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM], | ||||
|         transform: { | ||||
|             [constants_1.ESM_TS_JS_TRANSFORM_PATTERN]: [ | ||||
|                 'ts-jest', | ||||
|                 { | ||||
|                     ...tsJestTransformOptions, | ||||
|                     useESM: true, | ||||
|                 }, | ||||
|             ], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithTsEsmLegacyPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating Js with Ts ESM Jest preset'); | ||||
|     return { | ||||
|         extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM], | ||||
|         transform: { | ||||
|             [constants_1.ESM_TS_JS_TRANSFORM_PATTERN]: [ | ||||
|                 'ts-jest/legacy', | ||||
|                 { | ||||
|                     ...tsJestTransformOptions, | ||||
|                     useESM: true, | ||||
|                 }, | ||||
|             ], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithBabelEsmPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating JS with Babel ESM Jest preset'); | ||||
|     return { | ||||
|         extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM], | ||||
|         transform: { | ||||
|             [constants_1.ESM_JS_TRANSFORM_PATTERN]: 'babel-jest', | ||||
|             [constants_1.ESM_TS_TRANSFORM_PATTERN]: [ | ||||
|                 'ts-jest', | ||||
|                 { | ||||
|                     ...tsJestTransformOptions, | ||||
|                     useESM: true, | ||||
|                 }, | ||||
|             ], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
| function createJsWithBabelEsmLegacyPreset(tsJestTransformOptions = {}) { | ||||
|     logger.debug('creating JS with Babel ESM Jest preset'); | ||||
|     return { | ||||
|         extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM], | ||||
|         transform: { | ||||
|             [constants_1.ESM_JS_TRANSFORM_PATTERN]: 'babel-jest', | ||||
|             [constants_1.ESM_TS_TRANSFORM_PATTERN]: [ | ||||
|                 'ts-jest/legacy', | ||||
|                 { | ||||
|                     ...tsJestTransformOptions, | ||||
|                     useESM: true, | ||||
|                 }, | ||||
|             ], | ||||
|         }, | ||||
|     }; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 anthonyrawlins
					anthonyrawlins