 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>
		
			
				
	
	
		
			395 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			395 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // prettier-ignore
 | |
| /* eslint-disable */
 | |
| // @ts-nocheck
 | |
| /* auto-generated by NAPI-RS */
 | |
| 
 | |
| const { createRequire } = require('node:module')
 | |
| require = createRequire(__filename)
 | |
| 
 | |
| const { readFileSync } = require('node:fs')
 | |
| let nativeBinding = null
 | |
| const loadErrors = []
 | |
| 
 | |
| const isMusl = () => {
 | |
|   let musl = false
 | |
|   if (process.platform === 'linux') {
 | |
|     musl = isMuslFromFilesystem()
 | |
|     if (musl === null) {
 | |
|       musl = isMuslFromReport()
 | |
|     }
 | |
|     if (musl === null) {
 | |
|       musl = isMuslFromChildProcess()
 | |
|     }
 | |
|   }
 | |
|   return musl
 | |
| }
 | |
| 
 | |
| const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
 | |
| 
 | |
| const isMuslFromFilesystem = () => {
 | |
|   try {
 | |
|     return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
 | |
|   } catch {
 | |
|     return null
 | |
|   }
 | |
| }
 | |
| 
 | |
| const isMuslFromReport = () => {
 | |
|   let report = null
 | |
|   if (typeof process.report?.getReport === 'function') {
 | |
|     process.report.excludeNetwork = true
 | |
|     report = process.report.getReport()
 | |
|   }
 | |
|   if (!report) {
 | |
|     return null
 | |
|   }
 | |
|   if (report.header && report.header.glibcVersionRuntime) {
 | |
|     return false
 | |
|   }
 | |
|   if (Array.isArray(report.sharedObjects)) {
 | |
|     if (report.sharedObjects.some(isFileMusl)) {
 | |
|       return true
 | |
|     }
 | |
|   }
 | |
|   return false
 | |
| }
 | |
| 
 | |
| const isMuslFromChildProcess = () => {
 | |
|   try {
 | |
|     return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
 | |
|   } catch (e) {
 | |
|     // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
 | |
|     return false
 | |
|   }
 | |
| }
 | |
| 
 | |
| function requireNative() {
 | |
|   if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
 | |
|     try {
 | |
|       nativeBinding = require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
 | |
|     } catch (err) {
 | |
|       loadErrors.push(err)
 | |
|     }
 | |
|   } else if (process.platform === 'android') {
 | |
|     if (process.arch === 'arm64') {
 | |
|       try {
 | |
|         return require('./resolver.android-arm64.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-android-arm64')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else if (process.arch === 'arm') {
 | |
|       try {
 | |
|         return require('./resolver.android-arm-eabi.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-android-arm-eabi')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else {
 | |
|       loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
 | |
|     }
 | |
|   } else if (process.platform === 'win32') {
 | |
|     if (process.arch === 'x64') {
 | |
|       try {
 | |
|         return require('./resolver.win32-x64-msvc.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-win32-x64-msvc')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else if (process.arch === 'ia32') {
 | |
|       try {
 | |
|         return require('./resolver.win32-ia32-msvc.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-win32-ia32-msvc')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else if (process.arch === 'arm64') {
 | |
|       try {
 | |
|         return require('./resolver.win32-arm64-msvc.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-win32-arm64-msvc')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else {
 | |
|       loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
 | |
|     }
 | |
|   } else if (process.platform === 'darwin') {
 | |
|     try {
 | |
|         return require('./resolver.darwin-universal.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-darwin-universal')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     if (process.arch === 'x64') {
 | |
|       try {
 | |
|         return require('./resolver.darwin-x64.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-darwin-x64')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else if (process.arch === 'arm64') {
 | |
|       try {
 | |
|         return require('./resolver.darwin-arm64.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-darwin-arm64')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else {
 | |
|       loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
 | |
|     }
 | |
|   } else if (process.platform === 'freebsd') {
 | |
|     if (process.arch === 'x64') {
 | |
|       try {
 | |
|         return require('./resolver.freebsd-x64.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-freebsd-x64')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else if (process.arch === 'arm64') {
 | |
|       try {
 | |
|         return require('./resolver.freebsd-arm64.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-freebsd-arm64')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else {
 | |
|       loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
 | |
|     }
 | |
|   } else if (process.platform === 'linux') {
 | |
|     if (process.arch === 'x64') {
 | |
|       if (isMusl()) {
 | |
|         try {
 | |
|         return require('./resolver.linux-x64-musl.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-x64-musl')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       } else {
 | |
|         try {
 | |
|         return require('./resolver.linux-x64-gnu.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-x64-gnu')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       }
 | |
|     } else if (process.arch === 'arm64') {
 | |
|       if (isMusl()) {
 | |
|         try {
 | |
|         return require('./resolver.linux-arm64-musl.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-arm64-musl')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       } else {
 | |
|         try {
 | |
|         return require('./resolver.linux-arm64-gnu.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-arm64-gnu')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       }
 | |
|     } else if (process.arch === 'arm') {
 | |
|       if (isMusl()) {
 | |
|         try {
 | |
|         return require('./resolver.linux-arm-musleabihf.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-arm-musleabihf')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       } else {
 | |
|         try {
 | |
|         return require('./resolver.linux-arm-gnueabihf.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-arm-gnueabihf')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       }
 | |
|     } else if (process.arch === 'riscv64') {
 | |
|       if (isMusl()) {
 | |
|         try {
 | |
|         return require('./resolver.linux-riscv64-musl.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-riscv64-musl')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       } else {
 | |
|         try {
 | |
|         return require('./resolver.linux-riscv64-gnu.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-riscv64-gnu')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|       }
 | |
|     } else if (process.arch === 'ppc64') {
 | |
|       try {
 | |
|         return require('./resolver.linux-ppc64-gnu.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-ppc64-gnu')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else if (process.arch === 's390x') {
 | |
|       try {
 | |
|         return require('./resolver.linux-s390x-gnu.node')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
|       try {
 | |
|         return require('@unrs/resolver-binding-linux-s390x-gnu')
 | |
|       } catch (e) {
 | |
|         loadErrors.push(e)
 | |
|       }
 | |
| 
 | |
|     } else {
 | |
|       loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
 | |
|     }
 | |
|   } else {
 | |
|     loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
 | |
|   }
 | |
| }
 | |
| 
 | |
| nativeBinding = requireNative()
 | |
| 
 | |
| if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
 | |
|   try {
 | |
|     nativeBinding = require('./resolver.wasi.cjs')
 | |
|   } catch (err) {
 | |
|     if (process.env.NAPI_RS_FORCE_WASI) {
 | |
|       loadErrors.push(err)
 | |
|     }
 | |
|   }
 | |
|   if (!nativeBinding) {
 | |
|     try {
 | |
|       nativeBinding = require('@unrs/resolver-binding-wasm32-wasi')
 | |
|     } catch (err) {
 | |
|       if (process.env.NAPI_RS_FORCE_WASI) {
 | |
|         loadErrors.push(err)
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| if (!nativeBinding && process.env.SKIP_UNRS_RESOLVER_FALLBACK !== '1') {
 | |
|   try {
 | |
|     nativeBinding = require('napi-postinstall/fallback')(require.resolve('./package.json'), true)
 | |
|   } catch (err) {
 | |
|     loadErrors.push(err)
 | |
|   }
 | |
| }
 | |
| 
 | |
| if (!nativeBinding) {
 | |
|   if (loadErrors.length > 0) {
 | |
|     throw new Error(
 | |
|       `Cannot find native binding. ` +
 | |
|         `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
 | |
|         'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
 | |
|       { cause: loadErrors }
 | |
|     )
 | |
|   }
 | |
|   throw new Error(`Failed to load native binding`)
 | |
| }
 | |
| 
 | |
| module.exports = nativeBinding
 | |
| module.exports.ResolverFactory = nativeBinding.ResolverFactory
 | |
| module.exports.EnforceExtension = nativeBinding.EnforceExtension
 | |
| module.exports.ModuleType = nativeBinding.ModuleType
 | |
| module.exports.sync = nativeBinding.sync
 | |
| 
 | |
| if (process.versions.pnp) {
 | |
|   process.env.UNRS_RESOLVER_YARN_PNP = '1'
 | |
| }
 |