- 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>
97 lines
2.5 KiB
JavaScript
97 lines
2.5 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
exports.test = exports.serialize = exports.default = void 0;
|
|
|
|
var _ansiRegex = _interopRequireDefault(require('ansi-regex'));
|
|
|
|
var _ansiStyles = _interopRequireDefault(require('ansi-styles'));
|
|
|
|
function _interopRequireDefault(obj) {
|
|
return obj && obj.__esModule ? obj : {default: obj};
|
|
}
|
|
|
|
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
const toHumanReadableAnsi = text =>
|
|
text.replace((0, _ansiRegex.default)(), match => {
|
|
switch (match) {
|
|
case _ansiStyles.default.red.close:
|
|
case _ansiStyles.default.green.close:
|
|
case _ansiStyles.default.cyan.close:
|
|
case _ansiStyles.default.gray.close:
|
|
case _ansiStyles.default.white.close:
|
|
case _ansiStyles.default.yellow.close:
|
|
case _ansiStyles.default.bgRed.close:
|
|
case _ansiStyles.default.bgGreen.close:
|
|
case _ansiStyles.default.bgYellow.close:
|
|
case _ansiStyles.default.inverse.close:
|
|
case _ansiStyles.default.dim.close:
|
|
case _ansiStyles.default.bold.close:
|
|
case _ansiStyles.default.reset.open:
|
|
case _ansiStyles.default.reset.close:
|
|
return '</>';
|
|
|
|
case _ansiStyles.default.red.open:
|
|
return '<red>';
|
|
|
|
case _ansiStyles.default.green.open:
|
|
return '<green>';
|
|
|
|
case _ansiStyles.default.cyan.open:
|
|
return '<cyan>';
|
|
|
|
case _ansiStyles.default.gray.open:
|
|
return '<gray>';
|
|
|
|
case _ansiStyles.default.white.open:
|
|
return '<white>';
|
|
|
|
case _ansiStyles.default.yellow.open:
|
|
return '<yellow>';
|
|
|
|
case _ansiStyles.default.bgRed.open:
|
|
return '<bgRed>';
|
|
|
|
case _ansiStyles.default.bgGreen.open:
|
|
return '<bgGreen>';
|
|
|
|
case _ansiStyles.default.bgYellow.open:
|
|
return '<bgYellow>';
|
|
|
|
case _ansiStyles.default.inverse.open:
|
|
return '<inverse>';
|
|
|
|
case _ansiStyles.default.dim.open:
|
|
return '<dim>';
|
|
|
|
case _ansiStyles.default.bold.open:
|
|
return '<bold>';
|
|
|
|
default:
|
|
return '';
|
|
}
|
|
});
|
|
|
|
const test = val =>
|
|
typeof val === 'string' && !!val.match((0, _ansiRegex.default)());
|
|
|
|
exports.test = test;
|
|
|
|
const serialize = (val, config, indentation, depth, refs, printer) =>
|
|
printer(toHumanReadableAnsi(val), config, indentation, depth, refs);
|
|
|
|
exports.serialize = serialize;
|
|
const plugin = {
|
|
serialize,
|
|
test
|
|
};
|
|
var _default = plugin;
|
|
exports.default = _default;
|