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/expect/LICENSE
generated
vendored
Normal file
22
frontend/node_modules/@jest/expect/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.
|
||||
5
frontend/node_modules/@jest/expect/README.md
generated
vendored
Normal file
5
frontend/node_modules/@jest/expect/README.md
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
# @jest/expect
|
||||
|
||||
This package extends `expect` library with `jest-snapshot` matchers. It exports `jestExpect` object, which can be used as standalone replacement of `expect`.
|
||||
|
||||
The `jestExpect` function used in [Jest](https://jestjs.io/). You can find its documentation [on Jest's website](https://jestjs.io/docs/expect).
|
||||
43
frontend/node_modules/@jest/expect/build/index.d.mts
generated
vendored
Normal file
43
frontend/node_modules/@jest/expect/build/index.d.mts
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
import { AsymmetricMatchers, AsymmetricMatchers as AsymmetricMatchers$1, BaseExpect, MatcherContext, MatcherFunction, MatcherFunctionWithContext, MatcherState, MatcherUtils, Matchers, Matchers as Matchers$1 } from "expect";
|
||||
import { SnapshotMatchers, SnapshotState, addSerializer } from "jest-snapshot";
|
||||
|
||||
//#region src/types.d.ts
|
||||
|
||||
type JestExpect = {
|
||||
<T = unknown>(actual: T): JestMatchers<void, T> & Inverse<JestMatchers<void, T>> & PromiseMatchers<T>;
|
||||
addSnapshotSerializer: typeof addSerializer;
|
||||
} & BaseExpect & AsymmetricMatchers$1 & Inverse<Omit<AsymmetricMatchers$1, 'any' | 'anything'>>;
|
||||
type Inverse<Matchers> = {
|
||||
/**
|
||||
* Inverse next matcher. If you know how to test something, `.not` lets you test its opposite.
|
||||
*/
|
||||
not: Matchers$1;
|
||||
};
|
||||
type JestMatchers<R extends void | Promise<void>, T> = Matchers$1<R, T> & SnapshotMatchers<R, T>;
|
||||
type PromiseMatchers<T = unknown> = {
|
||||
/**
|
||||
* Unwraps the reason of a rejected promise so any other matcher can be chained.
|
||||
* If the promise is fulfilled the assertion fails.
|
||||
*/
|
||||
rejects: JestMatchers<Promise<void>, T> & Inverse<JestMatchers<Promise<void>, T>>;
|
||||
/**
|
||||
* Unwraps the value of a fulfilled promise so any other matcher can be chained.
|
||||
* If the promise is rejected the assertion fails.
|
||||
*/
|
||||
resolves: JestMatchers<Promise<void>, T> & Inverse<JestMatchers<Promise<void>, T>>;
|
||||
};
|
||||
declare module 'expect' {
|
||||
interface MatcherState {
|
||||
snapshotState: SnapshotState;
|
||||
/** Whether the test was called with `test.failing()` */
|
||||
testFailing?: boolean;
|
||||
}
|
||||
interface BaseExpect {
|
||||
addSnapshotSerializer: typeof addSerializer;
|
||||
}
|
||||
}
|
||||
//#endregion
|
||||
//#region src/index.d.ts
|
||||
declare const jestExpect: JestExpect;
|
||||
//#endregion
|
||||
export { AsymmetricMatchers, JestExpect, MatcherContext, MatcherFunction, MatcherFunctionWithContext, MatcherState, MatcherUtils, Matchers, jestExpect };
|
||||
66
frontend/node_modules/@jest/expect/build/index.d.ts
generated
vendored
Normal file
66
frontend/node_modules/@jest/expect/build/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* 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 {
|
||||
AsymmetricMatchers,
|
||||
BaseExpect,
|
||||
Inverse,
|
||||
MatcherContext,
|
||||
MatcherFunction,
|
||||
MatcherFunctionWithContext,
|
||||
MatcherState,
|
||||
MatcherUtils,
|
||||
Matchers,
|
||||
} from 'expect';
|
||||
import {SnapshotMatchers, addSerializer} from 'jest-snapshot';
|
||||
|
||||
export {AsymmetricMatchers};
|
||||
|
||||
export declare type JestExpect = {
|
||||
<T = unknown>(
|
||||
actual: T,
|
||||
): JestMatchers<void, T> &
|
||||
Inverse<JestMatchers<void, T>> &
|
||||
PromiseMatchers<T>;
|
||||
addSnapshotSerializer: typeof addSerializer;
|
||||
} & BaseExpect &
|
||||
AsymmetricMatchers &
|
||||
Inverse<Omit<AsymmetricMatchers, 'any' | 'anything'>>;
|
||||
|
||||
export declare const jestExpect: JestExpect;
|
||||
|
||||
declare type JestMatchers<R extends void | Promise<void>, T> = Matchers<R, T> &
|
||||
SnapshotMatchers<R, T>;
|
||||
|
||||
export {MatcherContext};
|
||||
|
||||
export {MatcherFunction};
|
||||
|
||||
export {MatcherFunctionWithContext};
|
||||
|
||||
export {Matchers};
|
||||
|
||||
export {MatcherState};
|
||||
|
||||
export {MatcherUtils};
|
||||
|
||||
declare type PromiseMatchers<T = unknown> = {
|
||||
/**
|
||||
* Unwraps the reason of a rejected promise so any other matcher can be chained.
|
||||
* If the promise is fulfilled the assertion fails.
|
||||
*/
|
||||
rejects: JestMatchers<Promise<void>, T> &
|
||||
Inverse<JestMatchers<Promise<void>, T>>;
|
||||
/**
|
||||
* Unwraps the value of a fulfilled promise so any other matcher can be chained.
|
||||
* If the promise is rejected the assertion fails.
|
||||
*/
|
||||
resolves: JestMatchers<Promise<void>, T> &
|
||||
Inverse<JestMatchers<Promise<void>, T>>;
|
||||
};
|
||||
|
||||
export {};
|
||||
57
frontend/node_modules/@jest/expect/build/index.js
generated
vendored
Normal file
57
frontend/node_modules/@jest/expect/build/index.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
/*!
|
||||
* /**
|
||||
* * 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_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.jestExpect = void 0;
|
||||
function _expect() {
|
||||
const data = require("expect");
|
||||
_expect = function () {
|
||||
return data;
|
||||
};
|
||||
return data;
|
||||
}
|
||||
function _jestSnapshot() {
|
||||
const data = require("jest-snapshot");
|
||||
_jestSnapshot = 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.
|
||||
*/
|
||||
|
||||
function createJestExpect() {
|
||||
_expect().expect.extend({
|
||||
toMatchInlineSnapshot: _jestSnapshot().toMatchInlineSnapshot,
|
||||
toMatchSnapshot: _jestSnapshot().toMatchSnapshot,
|
||||
toThrowErrorMatchingInlineSnapshot: _jestSnapshot().toThrowErrorMatchingInlineSnapshot,
|
||||
toThrowErrorMatchingSnapshot: _jestSnapshot().toThrowErrorMatchingSnapshot
|
||||
});
|
||||
_expect().expect.addSnapshotSerializer = _jestSnapshot().addSerializer;
|
||||
return _expect().expect;
|
||||
}
|
||||
const jestExpect = exports.jestExpect = createJestExpect();
|
||||
})();
|
||||
|
||||
module.exports = __webpack_exports__;
|
||||
/******/ })()
|
||||
;
|
||||
3
frontend/node_modules/@jest/expect/build/index.mjs
generated
vendored
Normal file
3
frontend/node_modules/@jest/expect/build/index.mjs
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import cjsModule from './index.js';
|
||||
|
||||
export const jestExpect = cjsModule.jestExpect;
|
||||
32
frontend/node_modules/@jest/expect/package.json
generated
vendored
Normal file
32
frontend/node_modules/@jest/expect/package.json
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "@jest/expect",
|
||||
"version": "30.0.4",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/jestjs/jest.git",
|
||||
"directory": "packages/jest-expect"
|
||||
},
|
||||
"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": {
|
||||
"expect": "30.0.4",
|
||||
"jest-snapshot": "30.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "f4296d2bc85c1405f84ddf613a25d0bc3766b7e5"
|
||||
}
|
||||
Reference in New Issue
Block a user