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>
68 lines
2.0 KiB
Markdown
68 lines
2.0 KiB
Markdown
# CSSOM
|
||
|
||
CSSOM.js is a CSS parser written in pure JavaScript. It is also a partial implementation of [CSS Object Model](http://dev.w3.org/csswg/cssom/).
|
||
|
||
CSSOM.parse("body {color: black}")
|
||
-> {
|
||
cssRules: [
|
||
{
|
||
selectorText: "body",
|
||
style: {
|
||
0: "color",
|
||
color: "black",
|
||
length: 1
|
||
}
|
||
}
|
||
]
|
||
}
|
||
|
||
|
||
## [Parser demo](http://nv.github.com/CSSOM/docs/parse.html)
|
||
|
||
Works well in Google Chrome 6+, Safari 5+, Firefox 3.6+, Opera 10.63+.
|
||
Doesn't work in IE < 9 because of unsupported getters/setters.
|
||
|
||
To use CSSOM.js in the browser you might want to build a one-file version that exposes a single `CSSOM` global variable:
|
||
|
||
➤ git clone https://github.com/NV/CSSOM.git
|
||
➤ cd CSSOM
|
||
➤ node build.js
|
||
build/CSSOM.js is done
|
||
|
||
To use it with Node.js or any other CommonJS loader:
|
||
|
||
➤ npm install cssom
|
||
|
||
## Don’t use it if...
|
||
|
||
You parse CSS to mungle, minify or reformat code like this:
|
||
|
||
```css
|
||
div {
|
||
background: gray;
|
||
background: linear-gradient(to bottom, white 0%, black 100%);
|
||
}
|
||
```
|
||
|
||
This pattern is often used to give browsers that don’t understand linear gradients a fallback solution (e.g. gray color in the example).
|
||
In CSSOM, `background: gray` [gets overwritten](http://nv.github.io/CSSOM/docs/parse.html#css=div%20%7B%0A%20%20%20%20%20%20background%3A%20gray%3B%0A%20%20%20%20background%3A%20linear-gradient(to%20bottom%2C%20white%200%25%2C%20black%20100%25)%3B%0A%7D).
|
||
It does **NOT** get preserved.
|
||
|
||
If you do CSS mungling, minification, or image inlining, considere using one of the following:
|
||
|
||
* [postcss](https://github.com/postcss/postcss)
|
||
* [reworkcss/css](https://github.com/reworkcss/css)
|
||
* [csso](https://github.com/css/csso)
|
||
* [mensch](https://github.com/brettstimmerman/mensch)
|
||
|
||
|
||
## [Tests](http://nv.github.com/CSSOM/spec/)
|
||
|
||
To run tests locally:
|
||
|
||
➤ git submodule init
|
||
➤ git submodule update
|
||
|
||
|
||
## [Who uses CSSOM.js](https://github.com/NV/CSSOM/wiki/Who-uses-CSSOM.js)
|