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,35 @@
'use strict';
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]'
]);
}
exports.click = click;
exports.dblClick = dblClick;
exports.tripleClick = tripleClick;

View File

@@ -0,0 +1,19 @@
'use strict';
require('../utils/dataTransfer/Clipboard.js');
var cssPointerEvents = require('../utils/pointer/cssPointerEvents.js');
async function hover(element) {
return this.pointer({
target: element
});
}
async function unhover(element) {
cssPointerEvents.assertPointerEvents(this, this.system.pointer.getMouseTarget(this));
return this.pointer({
target: element.ownerDocument.body
});
}
exports.hover = hover;
exports.unhover = unhover;

View File

@@ -0,0 +1,14 @@
'use strict';
var click = require('./click.js');
var hover = require('./hover.js');
var tab = require('./tab.js');
exports.click = click.click;
exports.dblClick = click.dblClick;
exports.tripleClick = click.tripleClick;
exports.hover = hover.hover;
exports.unhover = hover.unhover;
exports.tab = tab.tab;

View File

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