 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>
		
			
				
	
	
		
			119 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| exports.backportTsJestDebugEnvVar = exports.backportJestConfig = void 0;
 | |
| const bs_logger_1 = require("bs-logger");
 | |
| const messages_1 = require("./messages");
 | |
| const context = { [bs_logger_1.LogContexts.namespace]: 'backports' };
 | |
| /**
 | |
|  * @internal
 | |
|  */
 | |
| const backportJestConfig = (logger, config) => {
 | |
|     logger.debug({ ...context, config }, 'backporting config');
 | |
|     // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | |
|     const { globals = {} } = (config || {});
 | |
|     const { 'ts-jest': tsJest = {} } = globals;
 | |
|     // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | |
|     const mergeTsJest = {};
 | |
|     let hadWarnings = false;
 | |
|     const warnConfig = (oldPath, newPath, note) => {
 | |
|         hadWarnings = true;
 | |
|         logger.warn(context, (0, messages_1.interpolate)(note ? "\"[jest-config].{{oldPath}}\" is deprecated, use \"[jest-config].{{newPath}}\" instead.\n    \u21B3 {{note}}" /* Deprecations.ConfigOptionWithNote */ : "\"[jest-config].{{oldPath}}\" is deprecated, use \"[jest-config].{{newPath}}\" instead." /* Deprecations.ConfigOption */, {
 | |
|             oldPath,
 | |
|             newPath,
 | |
|             note,
 | |
|         }));
 | |
|     };
 | |
|     if ('__TS_CONFIG__' in globals) {
 | |
|         warnConfig('globals.__TS_CONFIG__', 'globals.ts-jest.tsconfig');
 | |
|         if (typeof globals.__TS_CONFIG__ === 'object') {
 | |
|             mergeTsJest.tsconfig = globals.__TS_CONFIG__;
 | |
|         }
 | |
|         delete globals.__TS_CONFIG__;
 | |
|     }
 | |
|     if ('__TRANSFORM_HTML__' in globals) {
 | |
|         warnConfig('globals.__TRANSFORM_HTML__', 'globals.ts-jest.stringifyContentPathRegex');
 | |
|         if (globals.__TRANSFORM_HTML__) {
 | |
|             mergeTsJest.stringifyContentPathRegex = '\\.html?$';
 | |
|         }
 | |
|         delete globals.__TRANSFORM_HTML__;
 | |
|     }
 | |
|     if ('typeCheck' in tsJest) {
 | |
|         warnConfig('globals.ts-jest.typeCheck', 'globals.ts-jest.isolatedModules');
 | |
|         mergeTsJest.isolatedModules = !tsJest.typeCheck;
 | |
|         delete tsJest.typeCheck;
 | |
|     }
 | |
|     if ('tsConfigFile' in tsJest) {
 | |
|         warnConfig('globals.ts-jest.tsConfigFile', 'globals.ts-jest.tsconfig');
 | |
|         if (tsJest.tsConfigFile) {
 | |
|             mergeTsJest.tsconfig = tsJest.tsConfigFile;
 | |
|         }
 | |
|         delete tsJest.tsConfigFile;
 | |
|     }
 | |
|     if ('tsConfig' in tsJest) {
 | |
|         warnConfig('globals.ts-jest.tsConfig', 'globals.ts-jest.tsconfig');
 | |
|         if (tsJest.tsConfig) {
 | |
|             mergeTsJest.tsconfig = tsJest.tsConfig;
 | |
|         }
 | |
|         delete tsJest.tsConfig;
 | |
|     }
 | |
|     if ('enableTsDiagnostics' in tsJest) {
 | |
|         warnConfig('globals.ts-jest.enableTsDiagnostics', 'globals.ts-jest.diagnostics');
 | |
|         if (tsJest.enableTsDiagnostics) {
 | |
|             mergeTsJest.diagnostics = { warnOnly: true };
 | |
|             if (typeof tsJest.enableTsDiagnostics === 'string')
 | |
|                 mergeTsJest.diagnostics.exclude = [tsJest.enableTsDiagnostics];
 | |
|         }
 | |
|         else {
 | |
|             mergeTsJest.diagnostics = false;
 | |
|         }
 | |
|         delete tsJest.enableTsDiagnostics;
 | |
|     }
 | |
|     if ('useBabelrc' in tsJest) {
 | |
|         warnConfig('globals.ts-jest.useBabelrc', 'globals.ts-jest.babelConfig', "See `babel-jest` related issue: https://github.com/facebook/jest/issues/3845" /* Deprecations.ConfigOptionUseBabelRcNote */);
 | |
|         if (tsJest.useBabelrc != null) {
 | |
|             mergeTsJest.babelConfig = tsJest.useBabelrc ? true : {};
 | |
|         }
 | |
|         delete tsJest.useBabelrc;
 | |
|     }
 | |
|     if ('skipBabel' in tsJest) {
 | |
|         warnConfig('globals.ts-jest.skipBabel', 'globals.ts-jest.babelConfig');
 | |
|         if (tsJest.skipBabel === false && !mergeTsJest.babelConfig) {
 | |
|             mergeTsJest.babelConfig = true;
 | |
|         }
 | |
|         delete tsJest.skipBabel;
 | |
|     }
 | |
|     // if we had some warnings we can inform the user about the CLI tool
 | |
|     if (hadWarnings) {
 | |
|         logger.warn(context, "Your Jest configuration is outdated. Use the CLI to help migrating it: ts-jest config:migrate <config-file>." /* Helps.MigrateConfigUsingCLI */);
 | |
|     }
 | |
|     return {
 | |
|         // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | |
|         ...config,
 | |
|         globals: {
 | |
|             ...globals,
 | |
|             'ts-jest': {
 | |
|                 ...mergeTsJest,
 | |
|                 ...tsJest,
 | |
|             },
 | |
|         },
 | |
|     };
 | |
| };
 | |
| exports.backportJestConfig = backportJestConfig;
 | |
| /**
 | |
|  * @internal
 | |
|  */
 | |
| const backportTsJestDebugEnvVar = (logger) => {
 | |
|     if ('TS_JEST_DEBUG' in process.env) {
 | |
|         const shouldLog = !/^\s*(?:0|f(?:alse)?|no?|disabled?|off|)\s*$/i.test(process.env.TS_JEST_DEBUG || '');
 | |
|         delete process.env.TS_JEST_DEBUG;
 | |
|         if (shouldLog) {
 | |
|             process.env.TS_JEST_LOG = 'ts-jest.log,stderr:warn';
 | |
|         }
 | |
|         logger.warn(context, (0, messages_1.interpolate)("Using env. var \"{{old}}\" is deprecated, use \"{{new}}\" instead." /* Deprecations.EnvVar */, {
 | |
|             old: 'TS_JEST_DEBUG',
 | |
|             new: 'TS_JEST_LOG',
 | |
|         }));
 | |
|     }
 | |
| };
 | |
| exports.backportTsJestDebugEnvVar = backportTsJestDebugEnvVar;
 |