- 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>
53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
"use strict";
|
|
// FIXME:
|
|
// * support multiple backgrounds
|
|
// * also fix longhands
|
|
|
|
const parsers = require("../parsers");
|
|
const strings = require("../utils/strings");
|
|
const backgroundImage = require("./backgroundImage");
|
|
const backgroundPosition = require("./backgroundPosition");
|
|
const backgroundRepeat = require("./backgroundRepeat");
|
|
const backgroundAttachment = require("./backgroundAttachment");
|
|
const backgroundColor = require("./backgroundColor");
|
|
|
|
const shorthandFor = new Map([
|
|
["background-image", backgroundImage],
|
|
["background-position", backgroundPosition],
|
|
["background-repeat", backgroundRepeat],
|
|
["background-attachment", backgroundAttachment],
|
|
["background-color", backgroundColor]
|
|
]);
|
|
|
|
module.exports.definition = {
|
|
set(v) {
|
|
v = parsers.prepareValue(v, this._global);
|
|
if (/^none$/i.test(v)) {
|
|
for (const [key] of shorthandFor) {
|
|
this._setProperty(key, "");
|
|
}
|
|
this._setProperty("background", strings.asciiLowercase(v));
|
|
} else if (parsers.hasVarFunc(v)) {
|
|
for (const [key] of shorthandFor) {
|
|
this._setProperty(key, "");
|
|
}
|
|
this._setProperty("background", v);
|
|
} else {
|
|
this._shorthandSetter("background", v, shorthandFor);
|
|
}
|
|
},
|
|
get() {
|
|
let val = this.getPropertyValue("background");
|
|
if (parsers.hasVarFunc(val)) {
|
|
return val;
|
|
}
|
|
val = this._shorthandGetter("background", shorthandFor);
|
|
if (parsers.hasVarFunc(val)) {
|
|
return "";
|
|
}
|
|
return val;
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
};
|