From 620d66f24bc058272282b208b898e9521f2e6295 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 8 Mar 2024 15:43:18 +0100 Subject: [PATCH 1/2] chore: replace karma with wpt runner in user-interaction --- package-lock.json | 74 +++++++------------ package.json | 4 + .../package.json | 5 -- .../web-test-runner.config.mjs | 18 +---- .../package.json | 27 ++----- .../test/helper.test.ts | 5 +- .../test/userInteraction.nozone.test.ts | 5 +- .../test/userInteraction.test.ts | 4 +- ...-webpack.ts => web-test-runner.config.mjs} | 9 +-- .../karma.conf.js => web-test-runner.base.mjs | 22 ++++-- 10 files changed, 66 insertions(+), 107 deletions(-) rename plugins/web/opentelemetry-instrumentation-user-interaction/{test/index-webpack.ts => web-test-runner.config.mjs} (68%) rename plugins/web/opentelemetry-instrumentation-user-interaction/karma.conf.js => web-test-runner.base.mjs (53%) diff --git a/package-lock.json b/package-lock.json index b6ad2e28d5..a8b3964f9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,8 +17,12 @@ "metapackages/*" ], "devDependencies": { + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-node-resolve": "^15.2.3", "@typescript-eslint/eslint-plugin": "5.8.1", "@typescript-eslint/parser": "5.8.1", + "@web/dev-server-esbuild": "^1.0.2", + "@web/dev-server-rollup": "^0.6.1", "eslint": "8.7.0", "eslint-config-airbnb-base": "15.0.0", "eslint-config-prettier": "8.8.0", @@ -38662,16 +38666,11 @@ }, "devDependencies": { "@babel/core": "7.22.17", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.10", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "@web/dev-server-esbuild": "^1.0.1", - "@web/dev-server-rollup": "^0.6.1", "@web/test-runner": "^0.18.0", "chai": "^4.3.10", "sinon": "15.2.0", @@ -38747,34 +38746,19 @@ }, "devDependencies": { "@babel/core": "7.22.17", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", "@opentelemetry/instrumentation-xml-http-request": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.8.0", + "@types/chai": "^4.3.10", "@types/jquery": "3.5.20", - "@types/mocha": "7.0.2", + "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "@types/webpack-env": "1.16.2", - "babel-loader": "8.2.2", - "karma": "6.3.16", - "karma-chrome-launcher": "^3.1.1", - "karma-coverage-istanbul-reporter": "3.0.3", - "karma-jquery": "0.2.4", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "4.0.2", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", + "@web/test-runner": "^0.18.0", + "chai": "^4.3.10", "sinon": "15.2.0", - "ts-loader": "8.3.0", - "ts-mocha": "10.0.0", "typescript": "4.4.4", - "webpack": "4.46.0", - "webpack-cli": "4.7.2", - "webpack-merge": "5.8.0", "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0" }, "engines": { @@ -38785,6 +38769,12 @@ "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0" } }, + "plugins/web/opentelemetry-instrumentation-user-interaction/node_modules/@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + }, "plugins/web/opentelemetry-plugin-react-load": { "name": "@opentelemetry/plugin-react-load", "version": "0.30.0", @@ -45893,21 +45883,16 @@ "version": "file:plugins/web/opentelemetry-instrumentation-document-load", "requires": { "@babel/core": "7.22.17", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.10", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "@web/dev-server-esbuild": "^1.0.1", - "@web/dev-server-rollup": "^0.6.1", "@web/test-runner": "^0.18.0", "chai": "^4.3.10", "sinon": "15.2.0", @@ -47216,7 +47201,6 @@ "version": "file:plugins/web/opentelemetry-instrumentation-user-interaction", "requires": { "@babel/core": "7.22.17", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", "@opentelemetry/core": "^1.8.0", @@ -47224,30 +47208,24 @@ "@opentelemetry/instrumentation-xml-http-request": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-web": "^1.8.0", + "@types/chai": "^4.3.10", "@types/jquery": "3.5.20", - "@types/mocha": "7.0.2", + "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "@types/webpack-env": "1.16.2", - "babel-loader": "8.2.2", - "karma": "6.3.16", - "karma-chrome-launcher": "^3.1.1", - "karma-coverage-istanbul-reporter": "3.0.3", - "karma-jquery": "0.2.4", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "4.0.2", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", + "@web/test-runner": "^0.18.0", + "chai": "^4.3.10", "sinon": "15.2.0", - "ts-loader": "8.3.0", - "ts-mocha": "10.0.0", "typescript": "4.4.4", - "webpack": "4.46.0", - "webpack-cli": "4.7.2", - "webpack-merge": "5.8.0", "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0" + }, + "dependencies": { + "@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + } } }, "@opentelemetry/instrumentation-winston": { diff --git a/package.json b/package.json index 7deb3a06c5..86ca7fd048 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,12 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "devDependencies": { + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-node-resolve": "^15.2.3", "@typescript-eslint/eslint-plugin": "5.8.1", "@typescript-eslint/parser": "5.8.1", + "@web/dev-server-esbuild": "^1.0.2", + "@web/dev-server-rollup": "^0.6.1", "eslint": "8.7.0", "eslint-config-airbnb-base": "15.0.0", "eslint-config-prettier": "8.8.0", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 89b6968221..75df0733fa 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -52,16 +52,11 @@ }, "devDependencies": { "@babel/core": "7.22.17", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.10", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "@web/dev-server-esbuild": "^1.0.1", - "@web/dev-server-rollup": "^0.6.1", "@web/test-runner": "^0.18.0", "chai": "^4.3.10", "sinon": "15.2.0", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs b/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs index aeef46fe8e..2ee50935e3 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs +++ b/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs @@ -14,20 +14,4 @@ * limitations under the License. */ -import { nodeResolve as nodeResolveRollup } from '@rollup/plugin-node-resolve'; -import commonjsRollup from '@rollup/plugin-commonjs'; -import { esbuildPlugin } from '@web/dev-server-esbuild'; -import { fromRollup } from '@web/dev-server-rollup'; - -const nodeResolve = fromRollup(nodeResolveRollup); -const commonjs = fromRollup(commonjsRollup); - -export default { - files: ['test/**/*.test.ts'], - nodeResolve: true, - plugins: [ - esbuildPlugin({ ts: true }), - nodeResolve({ browser: true, preferBuiltins: false }), - commonjs(), - ], -}; +export { default } from '../../../web-test-runner.base.mjs'; diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 1066564f60..c865fa4b25 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -16,8 +16,8 @@ "version:update": "node ../../../scripts/version-update.js", "compile": "npm run version:update && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "prepublishOnly": "npm run compile", - "tdd": "karma start", - "test:browser": "nyc karma start --single-run", + "tdd": "wtr --watch", + "test:browser": "wtr --coverage", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json" }, "keywords": [ @@ -49,34 +49,19 @@ }, "devDependencies": { "@babel/core": "7.22.17", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", "@opentelemetry/instrumentation-xml-http-request": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.8.0", + "@types/chai": "^4.3.10", "@types/jquery": "3.5.20", - "@types/mocha": "7.0.2", + "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "@types/webpack-env": "1.16.2", - "babel-loader": "8.2.2", - "karma": "6.3.16", - "karma-chrome-launcher": "^3.1.1", - "karma-coverage-istanbul-reporter": "3.0.3", - "karma-jquery": "0.2.4", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "4.0.2", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", + "@web/test-runner": "^0.18.0", + "chai": "^4.3.10", "sinon": "15.2.0", - "ts-loader": "8.3.0", - "ts-mocha": "10.0.0", "typescript": "4.4.4", - "webpack": "4.46.0", - "webpack-cli": "4.7.2", - "webpack-merge": "5.8.0", "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0" }, "dependencies": { diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/test/helper.test.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/test/helper.test.ts index 4e55e171f3..29a059d8b7 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/test/helper.test.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/test/helper.test.ts @@ -15,7 +15,10 @@ */ import * as tracing from '@opentelemetry/sdk-trace-base'; -import * as assert from 'assert'; +// @ts-expect-error: not an export, but we want the prebundled version +import chai from 'chai/chai.js'; + +const { assert } = chai as typeof import('chai'); export class DummySpanExporter implements tracing.SpanExporter { export(spans: tracing.ReadableSpan[]) {} diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts index c62ef63ae2..7f91d07d66 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts @@ -21,7 +21,8 @@ import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request'; import * as tracing from '@opentelemetry/sdk-trace-base'; import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'; -import * as assert from 'assert'; +// @ts-expect-error: not an export, but we want the prebundled version +import chai from 'chai/chai.js'; import * as sinon from 'sinon'; import { UserInteractionInstrumentation } from '../src'; import { UserInteractionInstrumentationConfig } from '../src/types'; @@ -35,6 +36,8 @@ import { getData, } from './helper.test'; +const { assert } = chai as typeof import('chai'); + const FILE_URL = 'https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'; diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts index 792387e8c5..6080c04f44 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts @@ -23,7 +23,8 @@ import { import { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request'; import * as tracing from '@opentelemetry/sdk-trace-base'; import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'; -import * as assert from 'assert'; +// @ts-expect-error: not an export, but we want the prebundled version +import chai from 'chai/chai.js'; import * as sinon from 'sinon'; import 'zone.js'; import { UserInteractionInstrumentation } from '../src'; @@ -39,6 +40,7 @@ import { getData, } from './helper.test'; +const { assert } = chai as typeof import('chai'); const FILE_URL = 'https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'; diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/test/index-webpack.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/web-test-runner.config.mjs similarity index 68% rename from plugins/web/opentelemetry-instrumentation-user-interaction/test/index-webpack.ts rename to plugins/web/opentelemetry-instrumentation-user-interaction/web-test-runner.config.mjs index 061a48ccfa..2ee50935e3 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/test/index-webpack.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/web-test-runner.config.mjs @@ -1,11 +1,11 @@ -/* +/*! * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,8 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -const testsContext = require.context('.', true, /test$/); -testsContext.keys().forEach(testsContext); -const srcContext = require.context('.', true, /src$/); -srcContext.keys().forEach(srcContext); +export { default } from '../../../web-test-runner.base.mjs'; diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/karma.conf.js b/web-test-runner.base.mjs similarity index 53% rename from plugins/web/opentelemetry-instrumentation-user-interaction/karma.conf.js rename to web-test-runner.base.mjs index 4a4bd49791..aeef46fe8e 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/karma.conf.js +++ b/web-test-runner.base.mjs @@ -14,12 +14,20 @@ * limitations under the License. */ -const karmaWebpackConfig = require('../../../karma.webpack'); -const karmaBaseConfig = require('../../../karma.base'); +import { nodeResolve as nodeResolveRollup } from '@rollup/plugin-node-resolve'; +import commonjsRollup from '@rollup/plugin-commonjs'; +import { esbuildPlugin } from '@web/dev-server-esbuild'; +import { fromRollup } from '@web/dev-server-rollup'; -module.exports = (config) => { - config.set(Object.assign({}, karmaBaseConfig, { - frameworks: karmaBaseConfig.frameworks.concat(['jquery-1.8.3']), - webpack: karmaWebpackConfig, - })) +const nodeResolve = fromRollup(nodeResolveRollup); +const commonjs = fromRollup(commonjsRollup); + +export default { + files: ['test/**/*.test.ts'], + nodeResolve: true, + plugins: [ + esbuildPlugin({ ts: true }), + nodeResolve({ browser: true, preferBuiltins: false }), + commonjs(), + ], }; From 53a3653dc8b062563dcea65bb30d91bb7999ce40 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 8 Mar 2024 15:49:28 +0100 Subject: [PATCH 2/2] https link --- .../web/opentelemetry-instrumentation-user-interaction/LICENSE | 2 +- .../test/userInteraction.nozone.test.ts | 1 - .../web-test-runner.config.mjs | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE b/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE index e50e8c80f9..7fea82ac8e 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE @@ -192,7 +192,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts index 7f91d07d66..49c81a7f9b 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts @@ -37,7 +37,6 @@ import { } from './helper.test'; const { assert } = chai as typeof import('chai'); - const FILE_URL = 'https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'; diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/web-test-runner.config.mjs b/plugins/web/opentelemetry-instrumentation-user-interaction/web-test-runner.config.mjs index 2ee50935e3..6337f91f4a 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/web-test-runner.config.mjs +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/web-test-runner.config.mjs @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS,