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:
22
frontend/node_modules/@jest/schemas/LICENSE
generated
vendored
Normal file
22
frontend/node_modules/@jest/schemas/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
Copyright Contributors to the Jest project.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
3
frontend/node_modules/@jest/schemas/README.md
generated
vendored
Normal file
3
frontend/node_modules/@jest/schemas/README.md
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# `@jest/schemas`
|
||||
|
||||
Experimental and currently incomplete module for JSON schemas for [Jest's](https://jestjs.io/) configuration.
|
||||
388
frontend/node_modules/@jest/schemas/build/index.d.ts
generated
vendored
Normal file
388
frontend/node_modules/@jest/schemas/build/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,388 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import {
|
||||
Static,
|
||||
TArray,
|
||||
TBoolean,
|
||||
TInteger,
|
||||
TIntersect,
|
||||
TLiteral,
|
||||
TNull,
|
||||
TNumber,
|
||||
TObject,
|
||||
TOptional,
|
||||
TRecord,
|
||||
TString,
|
||||
TTuple,
|
||||
TUnion,
|
||||
TUnknown,
|
||||
TUnsafe,
|
||||
} from '@sinclair/typebox';
|
||||
|
||||
export declare const FakeTimers: TIntersect<
|
||||
[
|
||||
TObject<{
|
||||
enableGlobally: TOptional<TBoolean>;
|
||||
}>,
|
||||
TUnion<
|
||||
[
|
||||
TObject<{
|
||||
advanceTimers: TOptional<TUnion<[TBoolean, TNumber]>>;
|
||||
doNotFake: TOptional<
|
||||
TArray<
|
||||
TUnion<
|
||||
[
|
||||
TLiteral<'Date'>,
|
||||
TLiteral<'hrtime'>,
|
||||
TLiteral<'nextTick'>,
|
||||
TLiteral<'performance'>,
|
||||
TLiteral<'queueMicrotask'>,
|
||||
TLiteral<'requestAnimationFrame'>,
|
||||
TLiteral<'cancelAnimationFrame'>,
|
||||
TLiteral<'requestIdleCallback'>,
|
||||
TLiteral<'cancelIdleCallback'>,
|
||||
TLiteral<'setImmediate'>,
|
||||
TLiteral<'clearImmediate'>,
|
||||
TLiteral<'setInterval'>,
|
||||
TLiteral<'clearInterval'>,
|
||||
TLiteral<'setTimeout'>,
|
||||
TLiteral<'clearTimeout'>,
|
||||
]
|
||||
>
|
||||
>
|
||||
>;
|
||||
now: TOptional<TInteger>;
|
||||
timerLimit: TOptional<TNumber>;
|
||||
legacyFakeTimers: TOptional<TLiteral<false>>;
|
||||
}>,
|
||||
TObject<{
|
||||
legacyFakeTimers: TOptional<TLiteral<true>>;
|
||||
}>,
|
||||
]
|
||||
>,
|
||||
]
|
||||
>;
|
||||
|
||||
export declare type FakeTimers = Static<typeof FakeTimers>;
|
||||
|
||||
export declare const InitialOptions: TObject<{
|
||||
automock: TOptional<TBoolean>;
|
||||
bail: TOptional<TUnion<[TBoolean, TNumber]>>;
|
||||
cache: TOptional<TBoolean>;
|
||||
cacheDirectory: TOptional<TString>;
|
||||
ci: TOptional<TBoolean>;
|
||||
clearMocks: TOptional<TBoolean>;
|
||||
changedFilesWithAncestor: TOptional<TBoolean>;
|
||||
changedSince: TOptional<TString>;
|
||||
collectCoverage: TOptional<TBoolean>;
|
||||
collectCoverageFrom: TOptional<TArray<TString>>;
|
||||
coverageDirectory: TOptional<TString>;
|
||||
coveragePathIgnorePatterns: TOptional<TArray<TString>>;
|
||||
coverageProvider: TOptional<TUnion<[TLiteral<'babel'>, TLiteral<'v8'>]>>;
|
||||
coverageReporters: TOptional<
|
||||
TArray<
|
||||
TUnion<
|
||||
[
|
||||
TUnion<
|
||||
[
|
||||
TLiteral<'clover'>,
|
||||
TLiteral<'cobertura'>,
|
||||
TLiteral<'html-spa'>,
|
||||
TLiteral<'html'>,
|
||||
TLiteral<'json'>,
|
||||
TLiteral<'json-summary'>,
|
||||
TLiteral<'lcov'>,
|
||||
TLiteral<'lcovonly'>,
|
||||
TLiteral<'none'>,
|
||||
TLiteral<'teamcity'>,
|
||||
TLiteral<'text'>,
|
||||
TLiteral<'text-lcov'>,
|
||||
TLiteral<'text-summary'>,
|
||||
]
|
||||
>,
|
||||
TTuple<
|
||||
[
|
||||
TUnion<
|
||||
[
|
||||
TLiteral<'clover'>,
|
||||
TLiteral<'cobertura'>,
|
||||
TLiteral<'html-spa'>,
|
||||
TLiteral<'html'>,
|
||||
TLiteral<'json'>,
|
||||
TLiteral<'json-summary'>,
|
||||
TLiteral<'lcov'>,
|
||||
TLiteral<'lcovonly'>,
|
||||
TLiteral<'none'>,
|
||||
TLiteral<'teamcity'>,
|
||||
TLiteral<'text'>,
|
||||
TLiteral<'text-lcov'>,
|
||||
TLiteral<'text-summary'>,
|
||||
]
|
||||
>,
|
||||
TRecord<TString, TUnknown>,
|
||||
]
|
||||
>,
|
||||
]
|
||||
>
|
||||
>
|
||||
>;
|
||||
coverageThreshold: TOptional<
|
||||
TUnsafe<{
|
||||
[path: string]: {
|
||||
branches?: number | undefined;
|
||||
functions?: number | undefined;
|
||||
lines?: number | undefined;
|
||||
statements?: number | undefined;
|
||||
};
|
||||
global: Static<
|
||||
TObject<{
|
||||
branches: TOptional<TNumber>;
|
||||
functions: TOptional<TNumber>;
|
||||
lines: TOptional<TNumber>;
|
||||
statements: TOptional<TNumber>;
|
||||
}>
|
||||
>;
|
||||
}>
|
||||
>;
|
||||
dependencyExtractor: TOptional<TString>;
|
||||
detectLeaks: TOptional<TBoolean>;
|
||||
detectOpenHandles: TOptional<TBoolean>;
|
||||
displayName: TOptional<
|
||||
TUnion<
|
||||
[
|
||||
TString,
|
||||
TObject<{
|
||||
name: TString;
|
||||
color: TUnion<
|
||||
[
|
||||
TLiteral<'black'>,
|
||||
TLiteral<'red'>,
|
||||
TLiteral<'green'>,
|
||||
TLiteral<'yellow'>,
|
||||
TLiteral<'blue'>,
|
||||
TLiteral<'magenta'>,
|
||||
TLiteral<'cyan'>,
|
||||
TLiteral<'white'>,
|
||||
TLiteral<'gray'>,
|
||||
TLiteral<'grey'>,
|
||||
TLiteral<'blackBright'>,
|
||||
TLiteral<'redBright'>,
|
||||
TLiteral<'greenBright'>,
|
||||
TLiteral<'yellowBright'>,
|
||||
TLiteral<'blueBright'>,
|
||||
TLiteral<'magentaBright'>,
|
||||
TLiteral<'cyanBright'>,
|
||||
TLiteral<'whiteBright'>,
|
||||
]
|
||||
>;
|
||||
}>,
|
||||
]
|
||||
>
|
||||
>;
|
||||
expand: TOptional<TBoolean>;
|
||||
extensionsToTreatAsEsm: TOptional<TArray<TString>>;
|
||||
fakeTimers: TOptional<
|
||||
TIntersect<
|
||||
[
|
||||
TObject<{
|
||||
enableGlobally: TOptional<TBoolean>;
|
||||
}>,
|
||||
TUnion<
|
||||
[
|
||||
TObject<{
|
||||
advanceTimers: TOptional<TUnion<[TBoolean, TNumber]>>;
|
||||
doNotFake: TOptional<
|
||||
TArray<
|
||||
TUnion<
|
||||
[
|
||||
TLiteral<'Date'>,
|
||||
TLiteral<'hrtime'>,
|
||||
TLiteral<'nextTick'>,
|
||||
TLiteral<'performance'>,
|
||||
TLiteral<'queueMicrotask'>,
|
||||
TLiteral<'requestAnimationFrame'>,
|
||||
TLiteral<'cancelAnimationFrame'>,
|
||||
TLiteral<'requestIdleCallback'>,
|
||||
TLiteral<'cancelIdleCallback'>,
|
||||
TLiteral<'setImmediate'>,
|
||||
TLiteral<'clearImmediate'>,
|
||||
TLiteral<'setInterval'>,
|
||||
TLiteral<'clearInterval'>,
|
||||
TLiteral<'setTimeout'>,
|
||||
TLiteral<'clearTimeout'>,
|
||||
]
|
||||
>
|
||||
>
|
||||
>;
|
||||
now: TOptional<TInteger>;
|
||||
timerLimit: TOptional<TNumber>;
|
||||
legacyFakeTimers: TOptional<TLiteral<false>>;
|
||||
}>,
|
||||
TObject<{
|
||||
legacyFakeTimers: TOptional<TLiteral<true>>;
|
||||
}>,
|
||||
]
|
||||
>,
|
||||
]
|
||||
>
|
||||
>;
|
||||
filter: TOptional<TString>;
|
||||
findRelatedTests: TOptional<TBoolean>;
|
||||
forceCoverageMatch: TOptional<TArray<TString>>;
|
||||
forceExit: TOptional<TBoolean>;
|
||||
json: TOptional<TBoolean>;
|
||||
globals: TOptional<TRecord<TString, TUnknown>>;
|
||||
globalSetup: TOptional<TUnion<[TString, TNull]>>;
|
||||
globalTeardown: TOptional<TUnion<[TString, TNull]>>;
|
||||
haste: TOptional<
|
||||
TObject<{
|
||||
computeSha1: TOptional<TBoolean>;
|
||||
defaultPlatform: TOptional<TUnion<[TString, TNull]>>;
|
||||
forceNodeFilesystemAPI: TOptional<TBoolean>;
|
||||
enableSymlinks: TOptional<TBoolean>;
|
||||
hasteImplModulePath: TOptional<TString>;
|
||||
platforms: TOptional<TArray<TString>>;
|
||||
throwOnModuleCollision: TOptional<TBoolean>;
|
||||
hasteMapModulePath: TOptional<TString>;
|
||||
retainAllFiles: TOptional<TBoolean>;
|
||||
}>
|
||||
>;
|
||||
id: TOptional<TString>;
|
||||
injectGlobals: TOptional<TBoolean>;
|
||||
reporters: TOptional<
|
||||
TArray<TUnion<[TString, TTuple<[TString, TRecord<TString, TUnknown>]>]>>
|
||||
>;
|
||||
logHeapUsage: TOptional<TBoolean>;
|
||||
lastCommit: TOptional<TBoolean>;
|
||||
listTests: TOptional<TBoolean>;
|
||||
maxConcurrency: TOptional<TInteger>;
|
||||
maxWorkers: TOptional<TUnion<[TString, TInteger]>>;
|
||||
moduleDirectories: TOptional<TArray<TString>>;
|
||||
moduleFileExtensions: TOptional<TArray<TString>>;
|
||||
moduleNameMapper: TOptional<
|
||||
TRecord<TString, TUnion<[TString, TArray<TString>]>>
|
||||
>;
|
||||
modulePathIgnorePatterns: TOptional<TArray<TString>>;
|
||||
modulePaths: TOptional<TArray<TString>>;
|
||||
noStackTrace: TOptional<TBoolean>;
|
||||
notify: TOptional<TBoolean>;
|
||||
notifyMode: TOptional<TString>;
|
||||
onlyChanged: TOptional<TBoolean>;
|
||||
onlyFailures: TOptional<TBoolean>;
|
||||
openHandlesTimeout: TOptional<TNumber>;
|
||||
outputFile: TOptional<TString>;
|
||||
passWithNoTests: TOptional<TBoolean>;
|
||||
preset: TOptional<TUnion<[TString, TNull]>>;
|
||||
prettierPath: TOptional<TUnion<[TString, TNull]>>;
|
||||
projects: TOptional<TArray<TUnion<[TString, TRecord<TString, TUnknown>]>>>;
|
||||
randomize: TOptional<TBoolean>;
|
||||
replname: TOptional<TUnion<[TString, TNull]>>;
|
||||
resetMocks: TOptional<TBoolean>;
|
||||
resetModules: TOptional<TBoolean>;
|
||||
resolver: TOptional<TUnion<[TString, TNull]>>;
|
||||
restoreMocks: TOptional<TBoolean>;
|
||||
rootDir: TOptional<TString>;
|
||||
roots: TOptional<TArray<TString>>;
|
||||
runner: TOptional<TString>;
|
||||
runTestsByPath: TOptional<TBoolean>;
|
||||
runtime: TOptional<TString>;
|
||||
sandboxInjectedGlobals: TOptional<TArray<TString>>;
|
||||
setupFiles: TOptional<TArray<TString>>;
|
||||
setupFilesAfterEnv: TOptional<TArray<TString>>;
|
||||
showSeed: TOptional<TBoolean>;
|
||||
silent: TOptional<TBoolean>;
|
||||
skipFilter: TOptional<TBoolean>;
|
||||
skipNodeResolution: TOptional<TBoolean>;
|
||||
slowTestThreshold: TOptional<TNumber>;
|
||||
snapshotResolver: TOptional<TString>;
|
||||
snapshotSerializers: TOptional<TArray<TString>>;
|
||||
snapshotFormat: TOptional<
|
||||
TObject<{
|
||||
callToJSON: TOptional<TBoolean>;
|
||||
compareKeys: TOptional<TNull>;
|
||||
escapeRegex: TOptional<TBoolean>;
|
||||
escapeString: TOptional<TBoolean>;
|
||||
highlight: TOptional<TBoolean>;
|
||||
indent: TOptional<TInteger>;
|
||||
maxDepth: TOptional<TInteger>;
|
||||
maxWidth: TOptional<TInteger>;
|
||||
min: TOptional<TBoolean>;
|
||||
printBasicPrototype: TOptional<TBoolean>;
|
||||
printFunctionName: TOptional<TBoolean>;
|
||||
theme: TOptional<
|
||||
TObject<{
|
||||
comment: TOptional<TString>;
|
||||
content: TOptional<TString>;
|
||||
prop: TOptional<TString>;
|
||||
tag: TOptional<TString>;
|
||||
value: TOptional<TString>;
|
||||
}>
|
||||
>;
|
||||
}>
|
||||
>;
|
||||
errorOnDeprecated: TOptional<TBoolean>;
|
||||
testEnvironment: TOptional<TString>;
|
||||
testEnvironmentOptions: TOptional<TRecord<TString, TUnknown>>;
|
||||
testFailureExitCode: TOptional<TInteger>;
|
||||
testLocationInResults: TOptional<TBoolean>;
|
||||
testMatch: TOptional<TArray<TString>>;
|
||||
testNamePattern: TOptional<TString>;
|
||||
testPathIgnorePatterns: TOptional<TArray<TString>>;
|
||||
testRegex: TOptional<TUnion<[TString, TArray<TString>]>>;
|
||||
testResultsProcessor: TOptional<TString>;
|
||||
testRunner: TOptional<TString>;
|
||||
testSequencer: TOptional<TString>;
|
||||
testTimeout: TOptional<TNumber>;
|
||||
transform: TOptional<
|
||||
TRecord<TString, TUnion<[TString, TTuple<[TString, TUnknown]>]>>
|
||||
>;
|
||||
transformIgnorePatterns: TOptional<TArray<TString>>;
|
||||
watchPathIgnorePatterns: TOptional<TArray<TString>>;
|
||||
unmockedModulePathPatterns: TOptional<TArray<TString>>;
|
||||
updateSnapshot: TOptional<TBoolean>;
|
||||
useStderr: TOptional<TBoolean>;
|
||||
verbose: TOptional<TBoolean>;
|
||||
waitForUnhandledRejections: TOptional<TBoolean>;
|
||||
watch: TOptional<TBoolean>;
|
||||
watchAll: TOptional<TBoolean>;
|
||||
watchman: TOptional<TBoolean>;
|
||||
watchPlugins: TOptional<
|
||||
TArray<TUnion<[TString, TTuple<[TString, TUnknown]>]>>
|
||||
>;
|
||||
workerIdleMemoryLimit: TOptional<TUnion<[TNumber, TString]>>;
|
||||
workerThreads: TOptional<TBoolean>;
|
||||
}>;
|
||||
|
||||
export declare type InitialOptions = Static<typeof InitialOptions>;
|
||||
|
||||
export declare const SnapshotFormat: TObject<{
|
||||
callToJSON: TOptional<TBoolean>;
|
||||
compareKeys: TOptional<TNull>;
|
||||
escapeRegex: TOptional<TBoolean>;
|
||||
escapeString: TOptional<TBoolean>;
|
||||
highlight: TOptional<TBoolean>;
|
||||
indent: TOptional<TInteger>;
|
||||
maxDepth: TOptional<TInteger>;
|
||||
maxWidth: TOptional<TInteger>;
|
||||
min: TOptional<TBoolean>;
|
||||
printBasicPrototype: TOptional<TBoolean>;
|
||||
printFunctionName: TOptional<TBoolean>;
|
||||
theme: TOptional<
|
||||
TObject<{
|
||||
comment: TOptional<TString>;
|
||||
content: TOptional<TString>;
|
||||
prop: TOptional<TString>;
|
||||
tag: TOptional<TString>;
|
||||
value: TOptional<TString>;
|
||||
}>
|
||||
>;
|
||||
}>;
|
||||
|
||||
export declare type SnapshotFormat = Static<typeof SnapshotFormat>;
|
||||
|
||||
export {};
|
||||
332
frontend/node_modules/@jest/schemas/build/index.js
generated
vendored
Normal file
332
frontend/node_modules/@jest/schemas/build/index.js
generated
vendored
Normal file
@@ -0,0 +1,332 @@
|
||||
/*!
|
||||
* /**
|
||||
* * Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
* *
|
||||
* * This source code is licensed under the MIT license found in the
|
||||
* * LICENSE file in the root directory of this source tree.
|
||||
* * /
|
||||
*/
|
||||
/******/ (() => { // webpackBootstrap
|
||||
/******/ "use strict";
|
||||
/******/ var __webpack_modules__ = ({
|
||||
|
||||
/***/ "./src/raw-types.ts":
|
||||
/***/ ((__unused_webpack_module, exports) => {
|
||||
|
||||
|
||||
|
||||
Object.defineProperty(exports, "__esModule", ({
|
||||
value: true
|
||||
}));
|
||||
exports.SnapshotFormat = exports.InitialOptions = exports.FakeTimers = exports.CoverageReporterNames = exports.ChalkForegroundColors = void 0;
|
||||
function _typebox() {
|
||||
const data = require("@sinclair/typebox");
|
||||
_typebox = function () {
|
||||
return data;
|
||||
};
|
||||
return data;
|
||||
}
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/* eslint-disable sort-keys */
|
||||
|
||||
const SnapshotFormat = exports.SnapshotFormat = _typebox().Type.Partial(_typebox().Type.Object({
|
||||
callToJSON: _typebox().Type.Boolean(),
|
||||
compareKeys: _typebox().Type.Null(),
|
||||
escapeRegex: _typebox().Type.Boolean(),
|
||||
escapeString: _typebox().Type.Boolean(),
|
||||
highlight: _typebox().Type.Boolean(),
|
||||
indent: _typebox().Type.Integer({
|
||||
minimum: 0
|
||||
}),
|
||||
maxDepth: _typebox().Type.Integer({
|
||||
minimum: 0
|
||||
}),
|
||||
maxWidth: _typebox().Type.Integer({
|
||||
minimum: 0
|
||||
}),
|
||||
min: _typebox().Type.Boolean(),
|
||||
printBasicPrototype: _typebox().Type.Boolean(),
|
||||
printFunctionName: _typebox().Type.Boolean(),
|
||||
theme: _typebox().Type.Partial(_typebox().Type.Object({
|
||||
comment: _typebox().Type.String(),
|
||||
content: _typebox().Type.String(),
|
||||
prop: _typebox().Type.String(),
|
||||
tag: _typebox().Type.String(),
|
||||
value: _typebox().Type.String()
|
||||
}))
|
||||
}));
|
||||
const CoverageProvider = _typebox().Type.Union([_typebox().Type.Literal('babel'), _typebox().Type.Literal('v8')]);
|
||||
const CoverageThresholdValue = _typebox().Type.Partial(_typebox().Type.Object({
|
||||
branches: _typebox().Type.Number({
|
||||
minimum: 0,
|
||||
maximum: 100
|
||||
}),
|
||||
functions: _typebox().Type.Number({
|
||||
minimum: 0,
|
||||
maximum: 100
|
||||
}),
|
||||
lines: _typebox().Type.Number({
|
||||
minimum: 0,
|
||||
maximum: 100
|
||||
}),
|
||||
statements: _typebox().Type.Number({
|
||||
minimum: 0,
|
||||
maximum: 100
|
||||
})
|
||||
}));
|
||||
const CoverageThresholdBase = _typebox().Type.Object({
|
||||
global: CoverageThresholdValue
|
||||
}, {
|
||||
additionalProperties: CoverageThresholdValue
|
||||
});
|
||||
const CoverageThreshold = _typebox().Type.Unsafe(CoverageThresholdBase);
|
||||
|
||||
// TODO: add type test that these are all the colors available in chalk.ForegroundColor
|
||||
const ChalkForegroundColors = exports.ChalkForegroundColors = _typebox().Type.Union([_typebox().Type.Literal('black'), _typebox().Type.Literal('red'), _typebox().Type.Literal('green'), _typebox().Type.Literal('yellow'), _typebox().Type.Literal('blue'), _typebox().Type.Literal('magenta'), _typebox().Type.Literal('cyan'), _typebox().Type.Literal('white'), _typebox().Type.Literal('gray'), _typebox().Type.Literal('grey'), _typebox().Type.Literal('blackBright'), _typebox().Type.Literal('redBright'), _typebox().Type.Literal('greenBright'), _typebox().Type.Literal('yellowBright'), _typebox().Type.Literal('blueBright'), _typebox().Type.Literal('magentaBright'), _typebox().Type.Literal('cyanBright'), _typebox().Type.Literal('whiteBright')]);
|
||||
const DisplayName = _typebox().Type.Object({
|
||||
name: _typebox().Type.String(),
|
||||
color: ChalkForegroundColors
|
||||
});
|
||||
|
||||
// TODO: verify these are the names of istanbulReport.ReportOptions
|
||||
const CoverageReporterNames = exports.CoverageReporterNames = _typebox().Type.Union([_typebox().Type.Literal('clover'), _typebox().Type.Literal('cobertura'), _typebox().Type.Literal('html-spa'), _typebox().Type.Literal('html'), _typebox().Type.Literal('json'), _typebox().Type.Literal('json-summary'), _typebox().Type.Literal('lcov'), _typebox().Type.Literal('lcovonly'), _typebox().Type.Literal('none'), _typebox().Type.Literal('teamcity'), _typebox().Type.Literal('text'), _typebox().Type.Literal('text-lcov'), _typebox().Type.Literal('text-summary')]);
|
||||
const CoverageReporters = _typebox().Type.Array(_typebox().Type.Union([CoverageReporterNames, _typebox().Type.Tuple([CoverageReporterNames, _typebox().Type.Record(_typebox().Type.String(), _typebox().Type.Unknown())])]));
|
||||
const GlobalFakeTimersConfig = _typebox().Type.Partial(_typebox().Type.Object({
|
||||
enableGlobally: _typebox().Type.Boolean({
|
||||
description: 'Whether fake timers should be enabled globally for all test files.',
|
||||
default: false
|
||||
})
|
||||
}));
|
||||
const FakeableAPI = _typebox().Type.Union([_typebox().Type.Literal('Date'), _typebox().Type.Literal('hrtime'), _typebox().Type.Literal('nextTick'), _typebox().Type.Literal('performance'), _typebox().Type.Literal('queueMicrotask'), _typebox().Type.Literal('requestAnimationFrame'), _typebox().Type.Literal('cancelAnimationFrame'), _typebox().Type.Literal('requestIdleCallback'), _typebox().Type.Literal('cancelIdleCallback'), _typebox().Type.Literal('setImmediate'), _typebox().Type.Literal('clearImmediate'), _typebox().Type.Literal('setInterval'), _typebox().Type.Literal('clearInterval'), _typebox().Type.Literal('setTimeout'), _typebox().Type.Literal('clearTimeout')]);
|
||||
const FakeTimersConfig = _typebox().Type.Partial(_typebox().Type.Object({
|
||||
advanceTimers: _typebox().Type.Union([_typebox().Type.Boolean(), _typebox().Type.Number({
|
||||
minimum: 0
|
||||
})], {
|
||||
description: 'If set to `true` all timers will be advanced automatically by 20 milliseconds every 20 milliseconds. A custom ' + 'time delta may be provided by passing a number.',
|
||||
default: false
|
||||
}),
|
||||
doNotFake: _typebox().Type.Array(FakeableAPI, {
|
||||
description: 'List of names of APIs (e.g. `Date`, `nextTick()`, `setImmediate()`, `setTimeout()`) that should not be faked.' + '\n\nThe default is `[]`, meaning all APIs are faked.',
|
||||
default: []
|
||||
}),
|
||||
now: _typebox().Type.Integer({
|
||||
minimum: 0,
|
||||
description: 'Sets current system time to be used by fake timers.\n\nThe default is `Date.now()`.'
|
||||
}),
|
||||
timerLimit: _typebox().Type.Number({
|
||||
description: 'The maximum number of recursive timers that will be run when calling `jest.runAllTimers()`.',
|
||||
default: 100_000,
|
||||
minimum: 0
|
||||
}),
|
||||
legacyFakeTimers: _typebox().Type.Literal(false, {
|
||||
description: 'Use the old fake timers implementation instead of one backed by `@sinonjs/fake-timers`.',
|
||||
default: false
|
||||
})
|
||||
}));
|
||||
const LegacyFakeTimersConfig = _typebox().Type.Partial(_typebox().Type.Object({
|
||||
legacyFakeTimers: _typebox().Type.Literal(true, {
|
||||
description: 'Use the old fake timers implementation instead of one backed by `@sinonjs/fake-timers`.',
|
||||
default: true
|
||||
})
|
||||
}));
|
||||
const FakeTimers = exports.FakeTimers = _typebox().Type.Intersect([GlobalFakeTimersConfig, _typebox().Type.Union([FakeTimersConfig, LegacyFakeTimersConfig])]);
|
||||
const HasteConfig = _typebox().Type.Partial(_typebox().Type.Object({
|
||||
computeSha1: _typebox().Type.Boolean({
|
||||
description: 'Whether to hash files using SHA-1.'
|
||||
}),
|
||||
defaultPlatform: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Null()], {
|
||||
description: 'The platform to use as the default, e.g. `ios`.'
|
||||
}),
|
||||
forceNodeFilesystemAPI: _typebox().Type.Boolean({
|
||||
description: "Whether to force the use of Node's `fs` API when reading files rather than shelling out to `find`."
|
||||
}),
|
||||
enableSymlinks: _typebox().Type.Boolean({
|
||||
description: 'Whether to follow symlinks when crawling for files.' + '\n\tThis options cannot be used in projects which use watchman.' + '\n\tProjects with `watchman` set to true will error if this option is set to true.'
|
||||
}),
|
||||
hasteImplModulePath: _typebox().Type.String({
|
||||
description: 'Path to a custom implementation of Haste.'
|
||||
}),
|
||||
platforms: _typebox().Type.Array(_typebox().Type.String(), {
|
||||
description: "All platforms to target, e.g ['ios', 'android']."
|
||||
}),
|
||||
throwOnModuleCollision: _typebox().Type.Boolean({
|
||||
description: 'Whether to throw an error on module collision.'
|
||||
}),
|
||||
hasteMapModulePath: _typebox().Type.String({
|
||||
description: 'Custom HasteMap module'
|
||||
}),
|
||||
retainAllFiles: _typebox().Type.Boolean({
|
||||
description: 'Whether to retain all files, allowing e.g. search for tests in `node_modules`.'
|
||||
})
|
||||
}));
|
||||
const InitialOptions = exports.InitialOptions = _typebox().Type.Partial(_typebox().Type.Object({
|
||||
automock: _typebox().Type.Boolean(),
|
||||
bail: _typebox().Type.Union([_typebox().Type.Boolean(), _typebox().Type.Number()]),
|
||||
cache: _typebox().Type.Boolean(),
|
||||
cacheDirectory: _typebox().Type.String(),
|
||||
ci: _typebox().Type.Boolean(),
|
||||
clearMocks: _typebox().Type.Boolean(),
|
||||
changedFilesWithAncestor: _typebox().Type.Boolean(),
|
||||
changedSince: _typebox().Type.String(),
|
||||
collectCoverage: _typebox().Type.Boolean(),
|
||||
collectCoverageFrom: _typebox().Type.Array(_typebox().Type.String()),
|
||||
coverageDirectory: _typebox().Type.String(),
|
||||
coveragePathIgnorePatterns: _typebox().Type.Array(_typebox().Type.String()),
|
||||
coverageProvider: CoverageProvider,
|
||||
coverageReporters: CoverageReporters,
|
||||
coverageThreshold: CoverageThreshold,
|
||||
dependencyExtractor: _typebox().Type.String(),
|
||||
detectLeaks: _typebox().Type.Boolean(),
|
||||
detectOpenHandles: _typebox().Type.Boolean(),
|
||||
displayName: _typebox().Type.Union([_typebox().Type.String(), DisplayName]),
|
||||
expand: _typebox().Type.Boolean(),
|
||||
extensionsToTreatAsEsm: _typebox().Type.Array(_typebox().Type.String()),
|
||||
fakeTimers: FakeTimers,
|
||||
filter: _typebox().Type.String(),
|
||||
findRelatedTests: _typebox().Type.Boolean(),
|
||||
forceCoverageMatch: _typebox().Type.Array(_typebox().Type.String()),
|
||||
forceExit: _typebox().Type.Boolean(),
|
||||
json: _typebox().Type.Boolean(),
|
||||
globals: _typebox().Type.Record(_typebox().Type.String(), _typebox().Type.Unknown()),
|
||||
globalSetup: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Null()]),
|
||||
globalTeardown: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Null()]),
|
||||
haste: HasteConfig,
|
||||
id: _typebox().Type.String(),
|
||||
injectGlobals: _typebox().Type.Boolean(),
|
||||
reporters: _typebox().Type.Array(_typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Tuple([_typebox().Type.String(), _typebox().Type.Record(_typebox().Type.String(), _typebox().Type.Unknown())])])),
|
||||
logHeapUsage: _typebox().Type.Boolean(),
|
||||
lastCommit: _typebox().Type.Boolean(),
|
||||
listTests: _typebox().Type.Boolean(),
|
||||
maxConcurrency: _typebox().Type.Integer(),
|
||||
maxWorkers: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Integer()]),
|
||||
moduleDirectories: _typebox().Type.Array(_typebox().Type.String()),
|
||||
moduleFileExtensions: _typebox().Type.Array(_typebox().Type.String()),
|
||||
moduleNameMapper: _typebox().Type.Record(_typebox().Type.String(), _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Array(_typebox().Type.String())])),
|
||||
modulePathIgnorePatterns: _typebox().Type.Array(_typebox().Type.String()),
|
||||
modulePaths: _typebox().Type.Array(_typebox().Type.String()),
|
||||
noStackTrace: _typebox().Type.Boolean(),
|
||||
notify: _typebox().Type.Boolean(),
|
||||
notifyMode: _typebox().Type.String(),
|
||||
onlyChanged: _typebox().Type.Boolean(),
|
||||
onlyFailures: _typebox().Type.Boolean(),
|
||||
openHandlesTimeout: _typebox().Type.Number(),
|
||||
outputFile: _typebox().Type.String(),
|
||||
passWithNoTests: _typebox().Type.Boolean(),
|
||||
preset: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Null()]),
|
||||
prettierPath: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Null()]),
|
||||
projects: _typebox().Type.Array(_typebox().Type.Union([_typebox().Type.String(),
|
||||
// TODO: Make sure to type these correctly
|
||||
_typebox().Type.Record(_typebox().Type.String(), _typebox().Type.Unknown())])),
|
||||
randomize: _typebox().Type.Boolean(),
|
||||
replname: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Null()]),
|
||||
resetMocks: _typebox().Type.Boolean(),
|
||||
resetModules: _typebox().Type.Boolean(),
|
||||
resolver: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Null()]),
|
||||
restoreMocks: _typebox().Type.Boolean(),
|
||||
rootDir: _typebox().Type.String(),
|
||||
roots: _typebox().Type.Array(_typebox().Type.String()),
|
||||
runner: _typebox().Type.String(),
|
||||
runTestsByPath: _typebox().Type.Boolean(),
|
||||
runtime: _typebox().Type.String(),
|
||||
sandboxInjectedGlobals: _typebox().Type.Array(_typebox().Type.String()),
|
||||
setupFiles: _typebox().Type.Array(_typebox().Type.String()),
|
||||
setupFilesAfterEnv: _typebox().Type.Array(_typebox().Type.String()),
|
||||
showSeed: _typebox().Type.Boolean(),
|
||||
silent: _typebox().Type.Boolean(),
|
||||
skipFilter: _typebox().Type.Boolean(),
|
||||
skipNodeResolution: _typebox().Type.Boolean(),
|
||||
slowTestThreshold: _typebox().Type.Number(),
|
||||
snapshotResolver: _typebox().Type.String(),
|
||||
snapshotSerializers: _typebox().Type.Array(_typebox().Type.String()),
|
||||
snapshotFormat: SnapshotFormat,
|
||||
errorOnDeprecated: _typebox().Type.Boolean(),
|
||||
testEnvironment: _typebox().Type.String(),
|
||||
testEnvironmentOptions: _typebox().Type.Record(_typebox().Type.String(), _typebox().Type.Unknown()),
|
||||
testFailureExitCode: _typebox().Type.Integer(),
|
||||
testLocationInResults: _typebox().Type.Boolean(),
|
||||
testMatch: _typebox().Type.Array(_typebox().Type.String()),
|
||||
testNamePattern: _typebox().Type.String(),
|
||||
testPathIgnorePatterns: _typebox().Type.Array(_typebox().Type.String()),
|
||||
testRegex: _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Array(_typebox().Type.String())]),
|
||||
testResultsProcessor: _typebox().Type.String(),
|
||||
testRunner: _typebox().Type.String(),
|
||||
testSequencer: _typebox().Type.String(),
|
||||
testTimeout: _typebox().Type.Number(),
|
||||
transform: _typebox().Type.Record(_typebox().Type.String(), _typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Tuple([_typebox().Type.String(), _typebox().Type.Unknown()])])),
|
||||
transformIgnorePatterns: _typebox().Type.Array(_typebox().Type.String()),
|
||||
watchPathIgnorePatterns: _typebox().Type.Array(_typebox().Type.String()),
|
||||
unmockedModulePathPatterns: _typebox().Type.Array(_typebox().Type.String()),
|
||||
updateSnapshot: _typebox().Type.Boolean(),
|
||||
useStderr: _typebox().Type.Boolean(),
|
||||
verbose: _typebox().Type.Boolean(),
|
||||
waitForUnhandledRejections: _typebox().Type.Boolean(),
|
||||
watch: _typebox().Type.Boolean(),
|
||||
watchAll: _typebox().Type.Boolean(),
|
||||
watchman: _typebox().Type.Boolean(),
|
||||
watchPlugins: _typebox().Type.Array(_typebox().Type.Union([_typebox().Type.String(), _typebox().Type.Tuple([_typebox().Type.String(), _typebox().Type.Unknown()])])),
|
||||
workerIdleMemoryLimit: _typebox().Type.Union([_typebox().Type.Number(), _typebox().Type.String()]),
|
||||
workerThreads: _typebox().Type.Boolean()
|
||||
}));
|
||||
|
||||
/***/ })
|
||||
|
||||
/******/ });
|
||||
/************************************************************************/
|
||||
/******/ // The module cache
|
||||
/******/ var __webpack_module_cache__ = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/ // Check if module is in cache
|
||||
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
||||
/******/ if (cachedModule !== undefined) {
|
||||
/******/ return cachedModule.exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = __webpack_module_cache__[moduleId] = {
|
||||
/******/ // no module.id needed
|
||||
/******/ // no module.loaded needed
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/************************************************************************/
|
||||
var __webpack_exports__ = {};
|
||||
// This entry needs to be wrapped in an IIFE because it uses a non-standard name for the exports (exports).
|
||||
(() => {
|
||||
var exports = __webpack_exports__;
|
||||
|
||||
|
||||
Object.defineProperty(exports, "__esModule", ({
|
||||
value: true
|
||||
}));
|
||||
exports.SnapshotFormat = exports.InitialOptions = exports.FakeTimers = void 0;
|
||||
var types = _interopRequireWildcard(__webpack_require__("./src/raw-types.ts"));
|
||||
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
const SnapshotFormat = exports.SnapshotFormat = types.SnapshotFormat;
|
||||
const InitialOptions = exports.InitialOptions = types.InitialOptions;
|
||||
const FakeTimers = exports.FakeTimers = types.FakeTimers;
|
||||
})();
|
||||
|
||||
module.exports = __webpack_exports__;
|
||||
/******/ })()
|
||||
;
|
||||
5
frontend/node_modules/@jest/schemas/build/index.mjs
generated
vendored
Normal file
5
frontend/node_modules/@jest/schemas/build/index.mjs
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import cjsModule from './index.js';
|
||||
|
||||
export const FakeTimers = cjsModule.FakeTimers;
|
||||
export const InitialOptions = cjsModule.InitialOptions;
|
||||
export const SnapshotFormat = cjsModule.SnapshotFormat;
|
||||
31
frontend/node_modules/@jest/schemas/package.json
generated
vendored
Normal file
31
frontend/node_modules/@jest/schemas/package.json
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "@jest/schemas",
|
||||
"version": "30.0.1",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/jestjs/jest.git",
|
||||
"directory": "packages/jest-schemas"
|
||||
},
|
||||
"license": "MIT",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./build/index.d.ts",
|
||||
"require": "./build/index.js",
|
||||
"import": "./build/index.mjs",
|
||||
"default": "./build/index.js"
|
||||
},
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sinclair/typebox": "^0.34.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "5ce865b4060189fe74cd486544816c079194a0f7"
|
||||
}
|
||||
Reference in New Issue
Block a user