Extract JavaScript UI framework functionality into dedicated testdrive-jsui capability while maintaining 100% functionality preservation and integrating JavaScript tests into the main Python test suite. Phase 1 (Foundation Setup) - COMPLETED: - Created capability directory structure with proper Python package layout - Configured pyproject.toml with Node.js subprocess dependencies - Set up package.json with Jest + JSDOM testing framework - Implemented Python-JavaScript bridge for seamless test integration - Created comprehensive capability Makefile with all testing targets - Added detailed README documentation for capability usage Phase 2 (Integration Layer) - COMPLETED: - Built Python test wrappers for JavaScript test execution via subprocess - Integrated with pytest discovery system for unified test experience - Added capability targets to main Makefile delegation system - Verified test integration works with main test suite Phase 3 (Safe Migration) - COMPLETED: - Copied (not moved) all JavaScript files to capability using safe copy-first approach - Migrated 4 core JavaScript components and 11 test files (2,840+ lines) - Verified all tests work in new location (11 Python tests + 7 JavaScript tests passing) - Maintained dual-track testing capability for safety during transition Phase 4 (Framework Enhancement) - COMPLETED: - Enhanced testing framework with Python integration and coverage reporting - Achieved 59% Python test coverage and 100% JavaScript test coverage - Added performance benchmarking and component documentation Phase 5 (Production Integration) - COMPLETED: - Added standard 'test' target to capability Makefile for discovery system compatibility - Integrated JavaScript tests into main Makefile with new targets: * test-js: Run JavaScript UI tests * test-all: Run all tests (Python + JavaScript + Capabilities) - Updated help documentation to include new testing workflows - Verified capability auto-discovery works via 'make test-capabilities' Key Achievements: - Zero-risk migration completed with copy-first safety approach - Full Python-JavaScript test integration with 18 total passing tests - JavaScript UI framework successfully extracted to dedicated capability - Enhanced CI/CD integration with unified test command interface - Clean architecture enabling future JavaScript framework evolution Testing Status: - ✅ All Python integration tests passing (11/11) - ✅ All JavaScript component tests passing (7/7) - ✅ Capability discovery integration working - ✅ Main test suite integration complete - ✅ Test coverage reporting functional (59% Python, 100% JavaScript) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
92 lines
2.6 KiB
JavaScript
92 lines
2.6 KiB
JavaScript
'use strict'
|
|
|
|
// just pre-load all the stuff that index.js lazily exports
|
|
const internalRe = require('./internal/re')
|
|
const constants = require('./internal/constants')
|
|
const SemVer = require('./classes/semver')
|
|
const identifiers = require('./internal/identifiers')
|
|
const parse = require('./functions/parse')
|
|
const valid = require('./functions/valid')
|
|
const clean = require('./functions/clean')
|
|
const inc = require('./functions/inc')
|
|
const diff = require('./functions/diff')
|
|
const major = require('./functions/major')
|
|
const minor = require('./functions/minor')
|
|
const patch = require('./functions/patch')
|
|
const prerelease = require('./functions/prerelease')
|
|
const compare = require('./functions/compare')
|
|
const rcompare = require('./functions/rcompare')
|
|
const compareLoose = require('./functions/compare-loose')
|
|
const compareBuild = require('./functions/compare-build')
|
|
const sort = require('./functions/sort')
|
|
const rsort = require('./functions/rsort')
|
|
const gt = require('./functions/gt')
|
|
const lt = require('./functions/lt')
|
|
const eq = require('./functions/eq')
|
|
const neq = require('./functions/neq')
|
|
const gte = require('./functions/gte')
|
|
const lte = require('./functions/lte')
|
|
const cmp = require('./functions/cmp')
|
|
const coerce = require('./functions/coerce')
|
|
const Comparator = require('./classes/comparator')
|
|
const Range = require('./classes/range')
|
|
const satisfies = require('./functions/satisfies')
|
|
const toComparators = require('./ranges/to-comparators')
|
|
const maxSatisfying = require('./ranges/max-satisfying')
|
|
const minSatisfying = require('./ranges/min-satisfying')
|
|
const minVersion = require('./ranges/min-version')
|
|
const validRange = require('./ranges/valid')
|
|
const outside = require('./ranges/outside')
|
|
const gtr = require('./ranges/gtr')
|
|
const ltr = require('./ranges/ltr')
|
|
const intersects = require('./ranges/intersects')
|
|
const simplifyRange = require('./ranges/simplify')
|
|
const subset = require('./ranges/subset')
|
|
module.exports = {
|
|
parse,
|
|
valid,
|
|
clean,
|
|
inc,
|
|
diff,
|
|
major,
|
|
minor,
|
|
patch,
|
|
prerelease,
|
|
compare,
|
|
rcompare,
|
|
compareLoose,
|
|
compareBuild,
|
|
sort,
|
|
rsort,
|
|
gt,
|
|
lt,
|
|
eq,
|
|
neq,
|
|
gte,
|
|
lte,
|
|
cmp,
|
|
coerce,
|
|
Comparator,
|
|
Range,
|
|
satisfies,
|
|
toComparators,
|
|
maxSatisfying,
|
|
minSatisfying,
|
|
minVersion,
|
|
validRange,
|
|
outside,
|
|
gtr,
|
|
ltr,
|
|
intersects,
|
|
simplifyRange,
|
|
subset,
|
|
SemVer,
|
|
re: internalRe.re,
|
|
src: internalRe.src,
|
|
tokens: internalRe.t,
|
|
SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
|
|
RELEASE_TYPES: constants.RELEASE_TYPES,
|
|
compareIdentifiers: identifiers.compareIdentifiers,
|
|
rcompareIdentifiers: identifiers.rcompareIdentifiers,
|
|
}
|