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:
anthonyrawlins
2025-07-11 14:06:34 +10:00
parent c6d69695a8
commit aacb45156b
6109 changed files with 777927 additions and 1 deletions

View File

@@ -0,0 +1,31 @@
async function click(element) {
const pointerIn = [];
if (!this.config.skipHover) {
pointerIn.push({
target: element
});
}
pointerIn.push({
keys: '[MouseLeft]',
target: element
});
return this.pointer(pointerIn);
}
async function dblClick(element) {
return this.pointer([
{
target: element
},
'[MouseLeft][MouseLeft]'
]);
}
async function tripleClick(element) {
return this.pointer([
{
target: element
},
'[MouseLeft][MouseLeft][MouseLeft]'
]);
}
export { click, dblClick, tripleClick };

View File

@@ -0,0 +1,16 @@
import '../utils/dataTransfer/Clipboard.js';
import { assertPointerEvents } from '../utils/pointer/cssPointerEvents.js';
async function hover(element) {
return this.pointer({
target: element
});
}
async function unhover(element) {
assertPointerEvents(this, this.system.pointer.getMouseTarget(this));
return this.pointer({
target: element.ownerDocument.body
});
}
export { hover, unhover };

View File

@@ -0,0 +1,3 @@
export { click, dblClick, tripleClick } from './click.js';
export { hover, unhover } from './hover.js';
export { tab } from './tab.js';

View File

@@ -0,0 +1,5 @@
async function tab({ shift } = {}) {
return this.keyboard(shift === true ? '{Shift>}{Tab}{/Shift}' : shift === false ? '[/ShiftLeft][/ShiftRight]{Tab}' : '{Tab}');
}
export { tab };