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:
92
frontend/node_modules/@testing-library/user-event/dist/cjs/utils/keyDef/readNextDescriptor.js
generated
vendored
Normal file
92
frontend/node_modules/@testing-library/user-event/dist/cjs/utils/keyDef/readNextDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
'use strict';
|
||||
|
||||
var bracketDict = /*#__PURE__*/ function(bracketDict) {
|
||||
bracketDict["{"] = "}";
|
||||
bracketDict["["] = "]";
|
||||
return bracketDict;
|
||||
}(bracketDict || {});
|
||||
/**
|
||||
* Read the next key definition from user input
|
||||
*
|
||||
* Describe key per `{descriptor}` or `[descriptor]`.
|
||||
* Everything else will be interpreted as a single character as descriptor - e.g. `a`.
|
||||
* Brackets `{` and `[` can be escaped by doubling - e.g. `foo[[bar` translates to `foo[bar`.
|
||||
* A previously pressed key can be released per `{/descriptor}`.
|
||||
* Keeping the key pressed can be written as `{descriptor>}`.
|
||||
* When keeping the key pressed you can choose how long the key is pressed `{descriptor>3}`.
|
||||
* You can then release the key per `{descriptor>3/}` or keep it pressed and continue with the next key.
|
||||
*/ function readNextDescriptor(text, context) {
|
||||
let pos = 0;
|
||||
const startBracket = text[pos] in bracketDict ? text[pos] : '';
|
||||
pos += startBracket.length;
|
||||
const isEscapedChar = new RegExp(`^\\${startBracket}{2}`).test(text);
|
||||
const type = isEscapedChar ? '' : startBracket;
|
||||
return {
|
||||
type,
|
||||
...type === '' ? readPrintableChar(text, pos, context) : readTag(text, pos, type, context)
|
||||
};
|
||||
}
|
||||
function readPrintableChar(text, pos, context) {
|
||||
const descriptor = text[pos];
|
||||
assertDescriptor(descriptor, text, pos, context);
|
||||
pos += descriptor.length;
|
||||
return {
|
||||
consumedLength: pos,
|
||||
descriptor,
|
||||
releasePrevious: false,
|
||||
releaseSelf: true,
|
||||
repeat: 1
|
||||
};
|
||||
}
|
||||
function readTag(text, pos, startBracket, context) {
|
||||
var _text_slice_match, _text_slice_match1;
|
||||
const releasePreviousModifier = text[pos] === '/' ? '/' : '';
|
||||
pos += releasePreviousModifier.length;
|
||||
const escapedDescriptor = startBracket === '{' && text[pos] === '\\';
|
||||
pos += Number(escapedDescriptor);
|
||||
const descriptor = escapedDescriptor ? text[pos] : (_text_slice_match = text.slice(pos).match(startBracket === '{' ? /^\w+|^[^}>/]/ : /^\w+/)) === null || _text_slice_match === undefined ? undefined : _text_slice_match[0];
|
||||
assertDescriptor(descriptor, text, pos, context);
|
||||
pos += descriptor.length;
|
||||
var _text_slice_match_;
|
||||
const repeatModifier = (_text_slice_match_ = (_text_slice_match1 = text.slice(pos).match(/^>\d+/)) === null || _text_slice_match1 === undefined ? undefined : _text_slice_match1[0]) !== null && _text_slice_match_ !== undefined ? _text_slice_match_ : '';
|
||||
pos += repeatModifier.length;
|
||||
const releaseSelfModifier = text[pos] === '/' || !repeatModifier && text[pos] === '>' ? text[pos] : '';
|
||||
pos += releaseSelfModifier.length;
|
||||
const expectedEndBracket = bracketDict[startBracket];
|
||||
const endBracket = text[pos] === expectedEndBracket ? expectedEndBracket : '';
|
||||
if (!endBracket) {
|
||||
throw new Error(getErrorMessage([
|
||||
!repeatModifier && 'repeat modifier',
|
||||
!releaseSelfModifier && 'release modifier',
|
||||
`"${expectedEndBracket}"`
|
||||
].filter(Boolean).join(' or '), text[pos], text, context));
|
||||
}
|
||||
pos += endBracket.length;
|
||||
return {
|
||||
consumedLength: pos,
|
||||
descriptor,
|
||||
releasePrevious: !!releasePreviousModifier,
|
||||
repeat: repeatModifier ? Math.max(Number(repeatModifier.substr(1)), 1) : 1,
|
||||
releaseSelf: hasReleaseSelf(releaseSelfModifier, repeatModifier)
|
||||
};
|
||||
}
|
||||
function assertDescriptor(descriptor, text, pos, context) {
|
||||
if (!descriptor) {
|
||||
throw new Error(getErrorMessage('key descriptor', text[pos], text, context));
|
||||
}
|
||||
}
|
||||
function hasReleaseSelf(releaseSelfModifier, repeatModifier) {
|
||||
if (releaseSelfModifier) {
|
||||
return releaseSelfModifier === '/';
|
||||
}
|
||||
if (repeatModifier) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function getErrorMessage(expected, found, text, context) {
|
||||
return `Expected ${expected} but found "${found !== null && found !== undefined ? found : ''}" in "${text}"
|
||||
See ${context === 'pointer' ? `https://testing-library.com/docs/user-event/pointer#pressing-a-button-or-touching-the-screen` : `https://testing-library.com/docs/user-event/keyboard`}
|
||||
for more information about how userEvent parses your input.`;
|
||||
}
|
||||
|
||||
exports.readNextDescriptor = readNextDescriptor;
|
||||
Reference in New Issue
Block a user