 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>
		
			
				
	
	
		
			108 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var __read = (this && this.__read) || function (o, n) {
 | |
|     var m = typeof Symbol === "function" && o[Symbol.iterator];
 | |
|     if (!m) return o;
 | |
|     var i = m.call(o), r, ar = [], e;
 | |
|     try {
 | |
|         while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
 | |
|     }
 | |
|     catch (error) { e = { error: error }; }
 | |
|     finally {
 | |
|         try {
 | |
|             if (r && !r.done && (m = i["return"])) m.call(i);
 | |
|         }
 | |
|         finally { if (e) throw e.error; }
 | |
|     }
 | |
|     return ar;
 | |
| };
 | |
| var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
 | |
|     if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
 | |
|         if (ar || !(i in from)) {
 | |
|             if (!ar) ar = Array.prototype.slice.call(from, 0, i);
 | |
|             ar[i] = from[i];
 | |
|         }
 | |
|     }
 | |
|     return to.concat(ar || Array.prototype.slice.call(from));
 | |
| };
 | |
| var MersenneTwister = (function () {
 | |
|     function MersenneTwister(states, index) {
 | |
|         this.states = states;
 | |
|         this.index = index;
 | |
|     }
 | |
|     MersenneTwister.twist = function (prev) {
 | |
|         var mt = prev.slice();
 | |
|         for (var idx = 0; idx !== MersenneTwister.N - MersenneTwister.M; ++idx) {
 | |
|             var y_1 = (mt[idx] & MersenneTwister.MASK_UPPER) + (mt[idx + 1] & MersenneTwister.MASK_LOWER);
 | |
|             mt[idx] = mt[idx + MersenneTwister.M] ^ (y_1 >>> 1) ^ (-(y_1 & 1) & MersenneTwister.A);
 | |
|         }
 | |
|         for (var idx = MersenneTwister.N - MersenneTwister.M; idx !== MersenneTwister.N - 1; ++idx) {
 | |
|             var y_2 = (mt[idx] & MersenneTwister.MASK_UPPER) + (mt[idx + 1] & MersenneTwister.MASK_LOWER);
 | |
|             mt[idx] = mt[idx + MersenneTwister.M - MersenneTwister.N] ^ (y_2 >>> 1) ^ (-(y_2 & 1) & MersenneTwister.A);
 | |
|         }
 | |
|         var y = (mt[MersenneTwister.N - 1] & MersenneTwister.MASK_UPPER) + (mt[0] & MersenneTwister.MASK_LOWER);
 | |
|         mt[MersenneTwister.N - 1] = mt[MersenneTwister.M - 1] ^ (y >>> 1) ^ (-(y & 1) & MersenneTwister.A);
 | |
|         return mt;
 | |
|     };
 | |
|     MersenneTwister.seeded = function (seed) {
 | |
|         var out = Array(MersenneTwister.N);
 | |
|         out[0] = seed;
 | |
|         for (var idx = 1; idx !== MersenneTwister.N; ++idx) {
 | |
|             var xored = out[idx - 1] ^ (out[idx - 1] >>> 30);
 | |
|             out[idx] = (Math.imul(MersenneTwister.F, xored) + idx) | 0;
 | |
|         }
 | |
|         return out;
 | |
|     };
 | |
|     MersenneTwister.from = function (seed) {
 | |
|         return new MersenneTwister(MersenneTwister.twist(MersenneTwister.seeded(seed)), 0);
 | |
|     };
 | |
|     MersenneTwister.prototype.clone = function () {
 | |
|         return new MersenneTwister(this.states, this.index);
 | |
|     };
 | |
|     MersenneTwister.prototype.next = function () {
 | |
|         var nextRng = new MersenneTwister(this.states, this.index);
 | |
|         var out = nextRng.unsafeNext();
 | |
|         return [out, nextRng];
 | |
|     };
 | |
|     MersenneTwister.prototype.unsafeNext = function () {
 | |
|         var y = this.states[this.index];
 | |
|         y ^= this.states[this.index] >>> MersenneTwister.U;
 | |
|         y ^= (y << MersenneTwister.S) & MersenneTwister.B;
 | |
|         y ^= (y << MersenneTwister.T) & MersenneTwister.C;
 | |
|         y ^= y >>> MersenneTwister.L;
 | |
|         if (++this.index >= MersenneTwister.N) {
 | |
|             this.states = MersenneTwister.twist(this.states);
 | |
|             this.index = 0;
 | |
|         }
 | |
|         return y;
 | |
|     };
 | |
|     MersenneTwister.prototype.getState = function () {
 | |
|         return __spreadArray([this.index], __read(this.states), false);
 | |
|     };
 | |
|     MersenneTwister.fromState = function (state) {
 | |
|         var valid = state.length === MersenneTwister.N + 1 && state[0] >= 0 && state[0] < MersenneTwister.N;
 | |
|         if (!valid) {
 | |
|             throw new Error('The state must have been produced by a mersenne RandomGenerator');
 | |
|         }
 | |
|         return new MersenneTwister(state.slice(1), state[0]);
 | |
|     };
 | |
|     MersenneTwister.N = 624;
 | |
|     MersenneTwister.M = 397;
 | |
|     MersenneTwister.R = 31;
 | |
|     MersenneTwister.A = 0x9908b0df;
 | |
|     MersenneTwister.F = 1812433253;
 | |
|     MersenneTwister.U = 11;
 | |
|     MersenneTwister.S = 7;
 | |
|     MersenneTwister.B = 0x9d2c5680;
 | |
|     MersenneTwister.T = 15;
 | |
|     MersenneTwister.C = 0xefc60000;
 | |
|     MersenneTwister.L = 18;
 | |
|     MersenneTwister.MASK_LOWER = Math.pow(2, MersenneTwister.R) - 1;
 | |
|     MersenneTwister.MASK_UPPER = Math.pow(2, MersenneTwister.R);
 | |
|     return MersenneTwister;
 | |
| }());
 | |
| function fromState(state) {
 | |
|     return MersenneTwister.fromState(state);
 | |
| }
 | |
| export var mersenne = Object.assign(function (seed) {
 | |
|     return MersenneTwister.from(seed);
 | |
| }, { fromState: fromState });
 |