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:
54
frontend/node_modules/symbol-tree/lib/SymbolTreeNode.js
generated
vendored
Normal file
54
frontend/node_modules/symbol-tree/lib/SymbolTreeNode.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = class SymbolTreeNode {
|
||||
constructor() {
|
||||
this.parent = null;
|
||||
this.previousSibling = null;
|
||||
this.nextSibling = null;
|
||||
|
||||
this.firstChild = null;
|
||||
this.lastChild = null;
|
||||
|
||||
/** This value is incremented anytime a children is added or removed */
|
||||
this.childrenVersion = 0;
|
||||
/** The last child object which has a cached index */
|
||||
this.childIndexCachedUpTo = null;
|
||||
|
||||
/** This value represents the cached node index, as long as
|
||||
* cachedIndexVersion matches with the childrenVersion of the parent */
|
||||
this.cachedIndex = -1;
|
||||
this.cachedIndexVersion = NaN; // NaN is never equal to anything
|
||||
}
|
||||
|
||||
get isAttached() {
|
||||
return Boolean(this.parent || this.previousSibling || this.nextSibling);
|
||||
}
|
||||
|
||||
get hasChildren() {
|
||||
return Boolean(this.firstChild);
|
||||
}
|
||||
|
||||
childrenChanged() {
|
||||
/* jshint -W016 */
|
||||
// integer wrap around
|
||||
this.childrenVersion = (this.childrenVersion + 1) & 0xFFFFFFFF;
|
||||
this.childIndexCachedUpTo = null;
|
||||
}
|
||||
|
||||
getCachedIndex(parentNode) {
|
||||
// (assumes parentNode is actually the parent)
|
||||
if (this.cachedIndexVersion !== parentNode.childrenVersion) {
|
||||
this.cachedIndexVersion = NaN;
|
||||
// cachedIndex is no longer valid
|
||||
return -1;
|
||||
}
|
||||
|
||||
return this.cachedIndex; // -1 if not cached
|
||||
}
|
||||
|
||||
setCachedIndex(parentNode, index) {
|
||||
// (assumes parentNode is actually the parent)
|
||||
this.cachedIndexVersion = parentNode.childrenVersion;
|
||||
this.cachedIndex = index;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user