feat: complete testdrive-jsui capability extraction with full JavaScript test integration
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>
This commit is contained in:
94
capabilities/testdrive-jsui/node_modules/@babel/preset-env/CONTRIBUTING.md
generated
vendored
Normal file
94
capabilities/testdrive-jsui/node_modules/@babel/preset-env/CONTRIBUTING.md
generated
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
# Contributing
|
||||
|
||||
## Adding a new plugin or polyfill to support (when approved in the next ECMAScript version)
|
||||
|
||||
### Update [`plugin-features.js`](https://github.com/babel/babel/blob/main/packages/babel-compat-data/scripts/data/plugin-features.js)
|
||||
|
||||
*Example:*
|
||||
|
||||
If you were going to add `**` which is in ES2016:
|
||||
|
||||
Find the relevant entries on [compat-table](https://kangax.github.io/compat-table/es2016plus/#test-exponentiation_(**)_operator):
|
||||
|
||||
`exponentiation (**) operator`
|
||||
|
||||
Find the corresponding babel plugin:
|
||||
|
||||
`@babel/plugin-transform-exponentiation-operator`
|
||||
|
||||
And add them in this structure:
|
||||
|
||||
```js
|
||||
// es2016
|
||||
"@babel/plugin-transform-exponentiation-operator": {
|
||||
features: [
|
||||
"exponentiation (**) operator",
|
||||
],
|
||||
},
|
||||
```
|
||||
|
||||
### Update data for `core-js@2` polyfilling
|
||||
|
||||
*Example:*
|
||||
|
||||
In case you want to add `Object.values` which is in ES2017:
|
||||
|
||||
Find the relevant feature and subfeature on [compat-table](https://kangax.github.io/compat-table/es2016plus/#test-Object_static_methods_Object.values)
|
||||
and split it with `/`:
|
||||
|
||||
`Object static methods / Object.values`
|
||||
|
||||
Find the corresponding module on [`core-js@2`](https://github.com/zloirock/core-js/tree/v2/modules):
|
||||
|
||||
`es7.object.values.js`
|
||||
|
||||
Find required ES version in [`corejs2-built-in-features.js`](https://github.com/babel/babel/blob/main/packages/babel-preset-env/data/corejs2-built-in-features.js) and add the new feature:
|
||||
|
||||
```js
|
||||
const es = {
|
||||
//...
|
||||
"es7.object.values": "Object static methods / Object.values"
|
||||
}
|
||||
```
|
||||
|
||||
If you want to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related `core-js` modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs2/built-in-definitions.js).
|
||||
|
||||
### Update data for `core-js@3` polyfilling
|
||||
|
||||
Just update the version of [`core-js-compat`](https://github.com/zloirock/core-js/tree/main/packages/core-js-compat) in dependencies.
|
||||
|
||||
If you want to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related [`core-js`](https://github.com/zloirock/core-js/tree/main/packages/core-js/modules) modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs3/built-in-definitions.js).
|
||||
|
||||
If you want to mark a new proposal as shipped, add it to [this list](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs3/shipped-proposals.js).
|
||||
|
||||
### Update [`plugins.json`](https://github.com/babel/babel/blob/main/packages/babel-preset-env/data/plugins.json)
|
||||
|
||||
Until `compat-table` is a standalone npm module for data we are using the git commit in `packages/babel-compat-data/scripts/download-compat-table.sh`
|
||||
|
||||
`COMPAT_TABLE_COMMIT=[latest-commit-hash]`,
|
||||
|
||||
So we update and then run `npm run build-data`. If there are no changes, then `plugins.json` will be the same.
|
||||
|
||||
## Tests
|
||||
|
||||
### Running tests
|
||||
See general [CONTRIBUTING.md](https://github.com/babel/babel/blob/main/CONTRIBUTING.md#running-lintingtests).
|
||||
|
||||
### Writing tests
|
||||
|
||||
#### General
|
||||
|
||||
All the tests for `@babel/preset-env` exist in the `test/fixtures` folder. The
|
||||
test setup and conventions are exactly the same as testing a Babel plugin, so
|
||||
please read our [documentation on writing tests](https://github.com/babel/babel/blob/main/CONTRIBUTING.md#babel-plugin-x).
|
||||
|
||||
#### Testing the `debug` option
|
||||
|
||||
Testing debug output to `stdout` is similar. Under the `test/debug-fixtures`,
|
||||
create a folder with a descriptive name of your test, and add the following:
|
||||
|
||||
* Add a `options.json` file (just as the other tests, this is essentially a
|
||||
`.babelrc`) with the desired test configuration (required)
|
||||
* Add a `stdout.txt` file with the expected debug output. For added
|
||||
convenience, if there is no `stdout.txt` present, the test runner will
|
||||
generate one for you.
|
||||
22
capabilities/testdrive-jsui/node_modules/@babel/preset-env/LICENSE
generated
vendored
Normal file
22
capabilities/testdrive-jsui/node_modules/@babel/preset-env/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||
|
||||
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.
|
||||
19
capabilities/testdrive-jsui/node_modules/@babel/preset-env/README.md
generated
vendored
Normal file
19
capabilities/testdrive-jsui/node_modules/@babel/preset-env/README.md
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# @babel/preset-env
|
||||
|
||||
> A Babel preset for each environment.
|
||||
|
||||
See our website [@babel/preset-env](https://babeljs.io/docs/babel-preset-env) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20preset-env%22+is%3Aopen) associated with this package.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```sh
|
||||
npm install --save-dev @babel/preset-env
|
||||
```
|
||||
|
||||
or using yarn:
|
||||
|
||||
```sh
|
||||
yarn add @babel/preset-env --dev
|
||||
```
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-in-modules.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-in-modules.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("@babel/compat-data/native-modules");
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-in-modules.json.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-in-modules.json.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("@babel/compat-data/native-modules");
|
||||
4
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-ins.js
generated
vendored
Normal file
4
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-ins.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// TODO: Remove in Babel 8
|
||||
// https://github.com/vuejs/vue-cli/issues/3671
|
||||
|
||||
module.exports = require("./corejs2-built-ins.json");
|
||||
4
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-ins.json.js
generated
vendored
Normal file
4
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/built-ins.json.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// TODO: Remove in Babel 8
|
||||
// https://github.com/vuejs/vue-cli/issues/3671
|
||||
|
||||
module.exports = require("./corejs2-built-ins.json");
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/core-js-compat.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/core-js-compat.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("core-js-compat/data.json");
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/corejs2-built-ins.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/corejs2-built-ins.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("@babel/compat-data/corejs2-built-ins");
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/corejs2-built-ins.json.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/corejs2-built-ins.json.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("@babel/compat-data/corejs2-built-ins");
|
||||
1
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/package.json
generated
vendored
Normal file
1
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/package.json
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{ "type": "commonjs" }
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/plugins.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/plugins.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("@babel/compat-data/plugins");
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/plugins.json.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/plugins.json.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("@babel/compat-data/plugins");
|
||||
4
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/shipped-proposals.js
generated
vendored
Normal file
4
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/shipped-proposals.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
const { pluginSyntaxMap, proposalPlugins, proposalSyntaxPlugins } = require("../lib/shipped-proposals");
|
||||
module.exports = { pluginSyntaxMap, proposalPlugins, proposalSyntaxPlugins };
|
||||
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/unreleased-labels.js
generated
vendored
Normal file
3
capabilities/testdrive-jsui/node_modules/@babel/preset-env/data/unreleased-labels.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// TODO: Remove in Babel 8
|
||||
|
||||
module.exports = require("@babel/helper-compilation-targets").unreleasedLabels;
|
||||
103
capabilities/testdrive-jsui/node_modules/@babel/preset-env/package.json
generated
vendored
Normal file
103
capabilities/testdrive-jsui/node_modules/@babel/preset-env/package.json
generated
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"name": "@babel/preset-env",
|
||||
"version": "7.28.5",
|
||||
"description": "A Babel preset for each environment.",
|
||||
"author": "The Babel Team (https://babel.dev/team)",
|
||||
"homepage": "https://babel.dev/docs/en/next/babel-preset-env",
|
||||
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20preset-env%22+is%3Aopen",
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/babel/babel.git",
|
||||
"directory": "packages/babel-preset-env"
|
||||
},
|
||||
"main": "./lib/index.js",
|
||||
"dependencies": {
|
||||
"@babel/compat-data": "^7.28.5",
|
||||
"@babel/helper-compilation-targets": "^7.27.2",
|
||||
"@babel/helper-plugin-utils": "^7.27.1",
|
||||
"@babel/helper-validator-option": "^7.27.1",
|
||||
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5",
|
||||
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
|
||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
|
||||
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
|
||||
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3",
|
||||
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
|
||||
"@babel/plugin-syntax-import-assertions": "^7.27.1",
|
||||
"@babel/plugin-syntax-import-attributes": "^7.27.1",
|
||||
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
|
||||
"@babel/plugin-transform-arrow-functions": "^7.27.1",
|
||||
"@babel/plugin-transform-async-generator-functions": "^7.28.0",
|
||||
"@babel/plugin-transform-async-to-generator": "^7.27.1",
|
||||
"@babel/plugin-transform-block-scoped-functions": "^7.27.1",
|
||||
"@babel/plugin-transform-block-scoping": "^7.28.5",
|
||||
"@babel/plugin-transform-class-properties": "^7.27.1",
|
||||
"@babel/plugin-transform-class-static-block": "^7.28.3",
|
||||
"@babel/plugin-transform-classes": "^7.28.4",
|
||||
"@babel/plugin-transform-computed-properties": "^7.27.1",
|
||||
"@babel/plugin-transform-destructuring": "^7.28.5",
|
||||
"@babel/plugin-transform-dotall-regex": "^7.27.1",
|
||||
"@babel/plugin-transform-duplicate-keys": "^7.27.1",
|
||||
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
|
||||
"@babel/plugin-transform-dynamic-import": "^7.27.1",
|
||||
"@babel/plugin-transform-explicit-resource-management": "^7.28.0",
|
||||
"@babel/plugin-transform-exponentiation-operator": "^7.28.5",
|
||||
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
|
||||
"@babel/plugin-transform-for-of": "^7.27.1",
|
||||
"@babel/plugin-transform-function-name": "^7.27.1",
|
||||
"@babel/plugin-transform-json-strings": "^7.27.1",
|
||||
"@babel/plugin-transform-literals": "^7.27.1",
|
||||
"@babel/plugin-transform-logical-assignment-operators": "^7.28.5",
|
||||
"@babel/plugin-transform-member-expression-literals": "^7.27.1",
|
||||
"@babel/plugin-transform-modules-amd": "^7.27.1",
|
||||
"@babel/plugin-transform-modules-commonjs": "^7.27.1",
|
||||
"@babel/plugin-transform-modules-systemjs": "^7.28.5",
|
||||
"@babel/plugin-transform-modules-umd": "^7.27.1",
|
||||
"@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1",
|
||||
"@babel/plugin-transform-new-target": "^7.27.1",
|
||||
"@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
|
||||
"@babel/plugin-transform-numeric-separator": "^7.27.1",
|
||||
"@babel/plugin-transform-object-rest-spread": "^7.28.4",
|
||||
"@babel/plugin-transform-object-super": "^7.27.1",
|
||||
"@babel/plugin-transform-optional-catch-binding": "^7.27.1",
|
||||
"@babel/plugin-transform-optional-chaining": "^7.28.5",
|
||||
"@babel/plugin-transform-parameters": "^7.27.7",
|
||||
"@babel/plugin-transform-private-methods": "^7.27.1",
|
||||
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
|
||||
"@babel/plugin-transform-property-literals": "^7.27.1",
|
||||
"@babel/plugin-transform-regenerator": "^7.28.4",
|
||||
"@babel/plugin-transform-regexp-modifiers": "^7.27.1",
|
||||
"@babel/plugin-transform-reserved-words": "^7.27.1",
|
||||
"@babel/plugin-transform-shorthand-properties": "^7.27.1",
|
||||
"@babel/plugin-transform-spread": "^7.27.1",
|
||||
"@babel/plugin-transform-sticky-regex": "^7.27.1",
|
||||
"@babel/plugin-transform-template-literals": "^7.27.1",
|
||||
"@babel/plugin-transform-typeof-symbol": "^7.27.1",
|
||||
"@babel/plugin-transform-unicode-escapes": "^7.27.1",
|
||||
"@babel/plugin-transform-unicode-property-regex": "^7.27.1",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.27.1",
|
||||
"@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
|
||||
"@babel/preset-modules": "0.1.6-no-external-plugins",
|
||||
"babel-plugin-polyfill-corejs2": "^0.4.14",
|
||||
"babel-plugin-polyfill-corejs3": "^0.13.0",
|
||||
"babel-plugin-polyfill-regenerator": "^0.6.5",
|
||||
"core-js-compat": "^3.43.0",
|
||||
"semver": "^6.3.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.28.5",
|
||||
"@babel/core-7.12": "npm:@babel/core@7.12.9",
|
||||
"@babel/helper-plugin-test-runner": "^7.27.1",
|
||||
"@babel/traverse": "^7.28.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"type": "commonjs"
|
||||
}
|
||||
Reference in New Issue
Block a user