- 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>
79 lines
4.0 KiB
JavaScript
79 lines
4.0 KiB
JavaScript
'use strict';
|
|
|
|
var isClickableInput = require('./click/isClickableInput.js');
|
|
var Blob = require('./dataTransfer/Blob.js');
|
|
var DataTransfer = require('./dataTransfer/DataTransfer.js');
|
|
var FileList = require('./dataTransfer/FileList.js');
|
|
var Clipboard = require('./dataTransfer/Clipboard.js');
|
|
var timeValue = require('./edit/timeValue.js');
|
|
var isContentEditable = require('./edit/isContentEditable.js');
|
|
var isEditable = require('./edit/isEditable.js');
|
|
var maxLength = require('./edit/maxLength.js');
|
|
var setFiles = require('./edit/setFiles.js');
|
|
var cursor = require('./focus/cursor.js');
|
|
var getActiveElement = require('./focus/getActiveElement.js');
|
|
var getTabDestination = require('./focus/getTabDestination.js');
|
|
var isFocusable = require('./focus/isFocusable.js');
|
|
var selection = require('./focus/selection.js');
|
|
var selector = require('./focus/selector.js');
|
|
var readNextDescriptor = require('./keyDef/readNextDescriptor.js');
|
|
var cloneEvent = require('./misc/cloneEvent.js');
|
|
var findClosest = require('./misc/findClosest.js');
|
|
var getDocumentFromNode = require('./misc/getDocumentFromNode.js');
|
|
var getTreeDiff = require('./misc/getTreeDiff.js');
|
|
var getWindow = require('./misc/getWindow.js');
|
|
var isDescendantOrSelf = require('./misc/isDescendantOrSelf.js');
|
|
var isElementType = require('./misc/isElementType.js');
|
|
var isVisible = require('./misc/isVisible.js');
|
|
var isDisabled = require('./misc/isDisabled.js');
|
|
var level = require('./misc/level.js');
|
|
var wait = require('./misc/wait.js');
|
|
var cssPointerEvents = require('./pointer/cssPointerEvents.js');
|
|
|
|
|
|
|
|
exports.isClickableInput = isClickableInput.isClickableInput;
|
|
exports.readBlobText = Blob.readBlobText;
|
|
exports.createDataTransfer = DataTransfer.createDataTransfer;
|
|
exports.getBlobFromDataTransferItem = DataTransfer.getBlobFromDataTransferItem;
|
|
exports.createFileList = FileList.createFileList;
|
|
exports.attachClipboardStubToView = Clipboard.attachClipboardStubToView;
|
|
exports.createClipboardItem = Clipboard.createClipboardItem;
|
|
exports.detachClipboardStubFromView = Clipboard.detachClipboardStubFromView;
|
|
exports.readDataTransferFromClipboard = Clipboard.readDataTransferFromClipboard;
|
|
exports.resetClipboardStubOnView = Clipboard.resetClipboardStubOnView;
|
|
exports.writeDataTransferToClipboard = Clipboard.writeDataTransferToClipboard;
|
|
exports.buildTimeValue = timeValue.buildTimeValue;
|
|
exports.isValidDateOrTimeValue = timeValue.isValidDateOrTimeValue;
|
|
exports.getContentEditable = isContentEditable.getContentEditable;
|
|
exports.isContentEditable = isContentEditable.isContentEditable;
|
|
exports.isEditable = isEditable.isEditable;
|
|
exports.isEditableInputOrTextArea = isEditable.isEditableInputOrTextArea;
|
|
exports.getMaxLength = maxLength.getMaxLength;
|
|
exports.supportsMaxLength = maxLength.supportsMaxLength;
|
|
exports.setFiles = setFiles.setFiles;
|
|
exports.getNextCursorPosition = cursor.getNextCursorPosition;
|
|
exports.getActiveElement = getActiveElement.getActiveElement;
|
|
exports.getActiveElementOrBody = getActiveElement.getActiveElementOrBody;
|
|
exports.getTabDestination = getTabDestination.getTabDestination;
|
|
exports.isFocusable = isFocusable.isFocusable;
|
|
exports.hasNoSelection = selection.hasNoSelection;
|
|
exports.hasOwnSelection = selection.hasOwnSelection;
|
|
exports.FOCUSABLE_SELECTOR = selector.FOCUSABLE_SELECTOR;
|
|
exports.readNextDescriptor = readNextDescriptor.readNextDescriptor;
|
|
exports.cloneEvent = cloneEvent.cloneEvent;
|
|
exports.findClosest = findClosest.findClosest;
|
|
exports.getDocumentFromNode = getDocumentFromNode.getDocumentFromNode;
|
|
exports.getTreeDiff = getTreeDiff.getTreeDiff;
|
|
exports.getWindow = getWindow.getWindow;
|
|
exports.isDescendantOrSelf = isDescendantOrSelf.isDescendantOrSelf;
|
|
exports.isElementType = isElementType.isElementType;
|
|
exports.isVisible = isVisible.isVisible;
|
|
exports.isDisabled = isDisabled.isDisabled;
|
|
exports.ApiLevel = level.ApiLevel;
|
|
exports.getLevelRef = level.getLevelRef;
|
|
exports.setLevelRef = level.setLevelRef;
|
|
exports.wait = wait.wait;
|
|
exports.assertPointerEvents = cssPointerEvents.assertPointerEvents;
|
|
exports.hasPointerEvents = cssPointerEvents.hasPointerEvents;
|