diff --git a/docs/docs/test-runner/writing-tests/code-coverage.md b/docs/docs/test-runner/writing-tests/code-coverage.md index 76d9db9c1..2955b0c6f 100644 --- a/docs/docs/test-runner/writing-tests/code-coverage.md +++ b/docs/docs/test-runner/writing-tests/code-coverage.md @@ -13,7 +13,7 @@ In the config you can define code coverage thresholds, the test run fails if you ```js // web-test-runner.config.mjs -module.exports = { +export default { coverageConfig: { report: true, reportDir: 'test-coverage', @@ -94,3 +94,27 @@ export default { ], }; ``` + +## Coverage reporting + +By default coverage reporting uses the lcov reporter. Should you want to use additional reporters, for example, cobertura, then the `reporter` config element should be modified. + +**Example config:** + +```js +// web-test-runner.config.mjs + +export default { + coverageConfig: { + report: true, + reportDir: 'test-coverage', + reporters: ['cobertura', 'lcov'] + threshold: { + statements: 70, + branches: 70, + functions: 70, + lines: 70, + }, + }, +}; +``` diff --git a/integration/test-runner/package.json b/integration/test-runner/package.json index 6b01b2ccf..b400da5c7 100644 --- a/integration/test-runner/package.json +++ b/integration/test-runner/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@web/dev-server-legacy": "^2.0.3", - "@web/test-runner-core": "^0.11.6" + "@web/test-runner-core": "^0.12.0" }, "devDependencies": { "@esm-bundle/chai": "^4.1.5" diff --git a/package-lock.json b/package-lock.json index 0fb6f19aa..fa139358a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,8 +57,8 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@web/dev-server-legacy": "^2.0.2", - "@web/test-runner-core": "^0.11.5" + "@web/dev-server-legacy": "^2.0.3", + "@web/test-runner-core": "^0.11.6" }, "devDependencies": { "@esm-bundle/chai": "^4.1.5" @@ -6449,7 +6449,8 @@ "node_modules/@types/mocha": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==" + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "dev": true }, "node_modules/@types/ms": { "version": "0.7.31", @@ -7244,6 +7245,10 @@ "resolved": "packages/dev-server-legacy", "link": true }, + "node_modules/@web/dev-server-polyfill": { + "resolved": "packages/dev-server-polyfill", + "link": true + }, "node_modules/@web/dev-server-rollup": { "resolved": "packages/dev-server-rollup", "link": true @@ -23137,9 +23142,9 @@ } }, "node_modules/postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -32542,7 +32547,7 @@ }, "packages/browser-logs": { "name": "@web/browser-logs", - "version": "0.3.3", + "version": "0.3.4", "license": "MIT", "dependencies": { "errorstacks": "^2.2.0" @@ -32557,7 +32562,7 @@ }, "packages/config-loader": { "name": "@web/config-loader", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "dependencies": { "semver": "^7.3.4" @@ -32568,14 +32573,14 @@ }, "packages/dev-server": { "name": "@web/dev-server", - "version": "0.3.4", + "version": "0.3.6", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.11", "@types/command-line-args": "^5.0.0", - "@web/config-loader": "^0.2.1", - "@web/dev-server-core": "^0.6.0", - "@web/dev-server-rollup": "^0.5.3", + "@web/config-loader": "^0.2.2", + "@web/dev-server-core": "^0.6.3", + "@web/dev-server-rollup": "^0.5.4", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", "command-line-usage": "^7.0.1", @@ -32592,7 +32597,7 @@ }, "devDependencies": { "@types/command-line-usage": "^5.0.1", - "lit-html": "^2.7.3", + "lit-html": "^2.7.3 || ^3.0.0", "puppeteer": "^20.0.0" }, "engines": { @@ -32601,12 +32606,12 @@ }, "packages/dev-server-core": { "name": "@web/dev-server-core", - "version": "0.6.1", + "version": "0.6.3", "license": "MIT", "dependencies": { "@types/koa": "^2.11.6", "@types/ws": "^7.4.0", - "@web/parse5-utils": "^2.0.0", + "@web/parse5-utils": "^2.0.2", "chokidar": "^3.4.3", "clone": "^2.1.2", "es-module-lexer": "^1.0.0", @@ -32657,19 +32662,19 @@ }, "packages/dev-server-esbuild": { "name": "@web/dev-server-esbuild", - "version": "0.4.2", + "version": "0.4.3", "license": "MIT", "dependencies": { "@mdn/browser-compat-data": "^4.0.0", - "@web/dev-server-core": "^0.6.0", + "@web/dev-server-core": "^0.6.2", "esbuild": "^0.16 || ^0.17", "parse5": "^6.0.1", "ua-parser-js": "^1.0.33" }, "devDependencies": { "@types/ua-parser-js": "^0.7.35", - "@web/dev-server-rollup": "^0.5.3", - "lit-element": "^3.0.0", + "@web/dev-server-rollup": "^0.5.4", + "lit-element": "^3.0.0 || ^4.0.1", "node-fetch": "3.0.0-beta.9", "preact": "^10.5.9" }, @@ -32696,13 +32701,13 @@ }, "packages/dev-server-hmr": { "name": "@web/dev-server-hmr", - "version": "0.3.1", + "version": "0.3.2", "license": "MIT", "dependencies": { - "@web/dev-server-core": "^0.6.0" + "@web/dev-server-core": "^0.6.2" }, "devDependencies": { - "lit-html": "^2.7.3", + "lit-html": "^2.7.3 || ^3.0.0", "puppeteer": "^20.0.0" }, "engines": { @@ -32711,13 +32716,13 @@ }, "packages/dev-server-import-maps": { "name": "@web/dev-server-import-maps", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { "@import-maps/resolve": "^1.0.1", "@types/parse5": "^6.0.1", - "@web/dev-server-core": "^0.6.0", - "@web/parse5-utils": "^2.0.0", + "@web/dev-server-core": "^0.6.2", + "@web/parse5-utils": "^2.0.2", "parse5": "^6.0.1", "picomatch": "^2.2.2" }, @@ -32730,7 +32735,7 @@ }, "packages/dev-server-legacy": { "name": "@web/dev-server-legacy", - "version": "2.0.2", + "version": "2.0.3", "license": "MIT", "dependencies": { "@babel/core": "^7.12.10", @@ -32742,8 +32747,8 @@ "@babel/plugin-transform-modules-systemjs": "^7.12.1", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-env": "^7.12.11", - "@web/dev-server-core": "^0.6.0", - "@web/polyfills-loader": "^2.0.0", + "@web/dev-server-core": "^0.6.2", + "@web/polyfills-loader": "^2.1.3", "browserslist": "^4.16.0", "browserslist-useragent": "^4.0.0", "caniuse-api": "^3.0.0", @@ -32760,13 +32765,25 @@ "node": ">=16.0.0" } }, + "packages/dev-server-polyfill": { + "name": "@web/dev-server-polyfill", + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@web/dev-server": "^0.3.6", + "@web/polyfills-loader": "^2.1.5" + }, + "engines": { + "node": ">=16.0.0" + } + }, "packages/dev-server-rollup": { "name": "@web/dev-server-rollup", - "version": "0.5.3", + "version": "0.5.4", "license": "MIT", "dependencies": { "@rollup/plugin-node-resolve": "^15.0.1", - "@web/dev-server-core": "^0.6.0", + "@web/dev-server-core": "^0.6.2", "nanocolors": "^0.2.1", "parse5": "^6.0.1", "rollup": "^3.15.0", @@ -32780,12 +32797,12 @@ "@rollup/plugin-replace": "^5.0.2", "@types/parse5": "^6.0.1", "@types/whatwg-url": "^11.0.0", - "@web/test-runner-chrome": "^0.14.2", - "@web/test-runner-core": "^0.11.5", + "@web/test-runner-chrome": "^0.14.3", + "@web/test-runner-core": "^0.11.6", "chai": "^4.2.0", "mocha": "^10.2.0", "node-fetch": "3.0.0-beta.9", - "postcss": "^8.0.0", + "postcss": "^8.4.31", "rollup-plugin-postcss": "^4.0.2" }, "engines": { @@ -32811,7 +32828,7 @@ }, "packages/dev-server-storybook": { "name": "@web/dev-server-storybook", - "version": "1.0.7", + "version": "1.0.8", "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", @@ -32821,7 +32838,7 @@ "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-terser": "^0.4.1", "@storybook/csf-tools": "^6.4.9", - "@web/dev-server-core": "^0.6.0", + "@web/dev-server-core": "^0.6.2", "@web/rollup-plugin-html": "^2.0.1", "@web/rollup-plugin-polyfills-loader": "^2.0.1", "@web/storybook-prebuilt": "^0.1.37", @@ -32838,7 +32855,7 @@ }, "devDependencies": { "@types/path-is-inside": "^1.0.0", - "@web/dev-server": "^0.3.4", + "@web/dev-server": "^0.3.5", "htm": "^3.1.0" }, "engines": { @@ -33019,7 +33036,7 @@ "@storybook/preview-api": "^7.0.0", "@web/storybook-prebuilt": "^0.1.37", "@web/storybook-utils": "^1.0.0", - "lit": "^2.7.5", + "lit": "^2.7.5 || ^3.0.0", "msw": "0.0.0-fetch.rc-23" }, "devDependencies": { @@ -33197,7 +33214,7 @@ }, "packages/parse5-utils": { "name": "@web/parse5-utils", - "version": "2.0.1", + "version": "2.0.2", "license": "MIT", "dependencies": { "@types/parse5": "^6.0.1", @@ -33212,11 +33229,11 @@ }, "packages/polyfills-loader": { "name": "@web/polyfills-loader", - "version": "2.1.2", + "version": "2.1.5", "license": "MIT", "dependencies": { "@babel/core": "^7.12.10", - "@web/parse5-utils": "^2.0.0", + "@web/parse5-utils": "^2.0.2", "@webcomponents/scoped-custom-element-registry": "^0.0.9", "@webcomponents/shadycss": "^1.11.0", "@webcomponents/webcomponentsjs": "^2.5.0", @@ -33246,7 +33263,7 @@ }, "packages/rollup-plugin-copy": { "name": "@web/rollup-plugin-copy", - "version": "0.4.0", + "version": "0.4.1", "license": "MIT", "dependencies": { "glob": "^7.1.6" @@ -33400,7 +33417,7 @@ } }, "packages/rollup-plugin-workbox": { - "version": "8.0.1", + "version": "8.0.2", "license": "MIT", "dependencies": { "esbuild": "^0.17.19", @@ -33410,7 +33427,7 @@ }, "packages/storybook-builder": { "name": "@web/storybook-builder", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { "@chialab/esbuild-plugin-commonjs": "^0.17.2", @@ -33523,7 +33540,7 @@ }, "packages/storybook-utils": { "name": "@web/storybook-utils", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "dependencies": { "@storybook/core-events": "^7.0.0" @@ -33577,17 +33594,17 @@ }, "packages/test-runner-browserstack": { "name": "@web/test-runner-browserstack", - "version": "0.6.1", + "version": "0.6.2", "license": "MIT", "dependencies": { - "@web/test-runner-webdriver": "^0.7.0", + "@web/test-runner-webdriver": "^0.7.1", "browserstack-local": "^1.4.8", "ip": "^1.1.5", "nanoid": "^3.1.25" }, "devDependencies": { "@types/ip": "^1.1.0", - "@web/dev-server-legacy": "^2.0.0", + "@web/dev-server-legacy": "^2.0.3", "portfinder": "^1.0.32" }, "engines": { @@ -33596,11 +33613,11 @@ }, "packages/test-runner-chrome": { "name": "@web/test-runner-chrome", - "version": "0.14.2", + "version": "0.14.3", "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.11.5", - "@web/test-runner-coverage-v8": "^0.7.0", + "@web/test-runner-core": "^0.11.6", + "@web/test-runner-coverage-v8": "^0.7.2", "async-mutex": "0.4.0", "chrome-launcher": "^0.15.0", "puppeteer-core": "^20.0.0" @@ -33623,16 +33640,16 @@ }, "packages/test-runner-commands": { "name": "@web/test-runner-commands", - "version": "0.8.1", + "version": "0.8.2", "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.11.1", + "@web/test-runner-core": "^0.11.6", "mkdirp": "^1.0.4" }, "devDependencies": { - "@web/test-runner-chrome": "^0.14.0", - "@web/test-runner-playwright": "^0.10.0", - "@web/test-runner-webdriver": "^0.7.0", + "@web/test-runner-chrome": "^0.14.3", + "@web/test-runner-playwright": "^0.10.2", + "@web/test-runner-webdriver": "^0.7.1", "mocha": "^10.2.0" }, "engines": { @@ -33652,7 +33669,7 @@ }, "packages/test-runner-core": { "name": "@web/test-runner-core", - "version": "0.11.5", + "version": "0.11.6", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.11", @@ -33662,8 +33679,8 @@ "@types/debounce": "^1.2.0", "@types/istanbul-lib-coverage": "^2.0.3", "@types/istanbul-reports": "^3.0.0", - "@web/browser-logs": "^0.3.2", - "@web/dev-server-core": "^0.6.0", + "@web/browser-logs": "^0.3.4", + "@web/dev-server-core": "^0.6.2", "chokidar": "^3.4.3", "cli-cursor": "^3.1.0", "co-body": "^6.1.0", @@ -33745,10 +33762,10 @@ }, "packages/test-runner-coverage-v8": { "name": "@web/test-runner-coverage-v8", - "version": "0.7.1", + "version": "0.7.2", "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.11.0", + "@web/test-runner-core": "^0.11.6", "istanbul-lib-coverage": "^3.0.0", "lru-cache": "^8.0.4", "picomatch": "^2.2.2", @@ -33764,17 +33781,17 @@ }, "packages/test-runner-junit-reporter": { "name": "@web/test-runner-junit-reporter", - "version": "0.6.1", + "version": "0.6.2", "license": "MIT", "dependencies": { - "@web/test-runner-chrome": "^0.14.0", - "@web/test-runner-core": "^0.11.0", + "@web/test-runner-chrome": "^0.14.3", + "@web/test-runner-core": "^0.11.6", "array-flat-polyfill": "^1.0.1", "xml": "^1.0.1" }, "devDependencies": { "@types/xml": "^1.0.5", - "@web/test-runner-playwright": "^0.10.0" + "@web/test-runner-playwright": "^0.10.2" }, "engines": { "node": ">=16.0.0" @@ -33785,10 +33802,10 @@ "version": "0.8.1", "license": "MIT", "dependencies": { - "@types/mocha": "^10.0.1", "@web/test-runner-core": "^0.11.1" }, "devDependencies": { + "@types/mocha": "^10.0.1", "deepmerge": "^4.2.2", "mocha": "^10.2.0" }, @@ -33798,11 +33815,11 @@ }, "packages/test-runner-playwright": { "name": "@web/test-runner-playwright", - "version": "0.10.1", + "version": "0.10.2", "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.11.0", - "@web/test-runner-coverage-v8": "^0.7.0", + "@web/test-runner-core": "^0.11.6", + "@web/test-runner-coverage-v8": "^0.7.2", "playwright": "^1.22.2" }, "devDependencies": { @@ -33815,11 +33832,11 @@ }, "packages/test-runner-puppeteer": { "name": "@web/test-runner-puppeteer", - "version": "0.14.0", + "version": "0.14.1", "license": "MIT", "dependencies": { - "@web/test-runner-chrome": "^0.14.0", - "@web/test-runner-core": "^0.11.1", + "@web/test-runner-chrome": "^0.14.3", + "@web/test-runner-core": "^0.11.6", "puppeteer": "^20.0.0" }, "devDependencies": { @@ -33832,10 +33849,10 @@ }, "packages/test-runner-saucelabs": { "name": "@web/test-runner-saucelabs", - "version": "0.10.0", + "version": "0.10.1", "license": "MIT", "dependencies": { - "@web/test-runner-webdriver": "^0.7.0", + "@web/test-runner-webdriver": "^0.7.1", "ip": "^1.1.5", "nanoid": "^3.1.25", "saucelabs": "^7.2.0", @@ -33844,8 +33861,8 @@ }, "devDependencies": { "@types/ip": "^1.1.0", - "@web/dev-server-esbuild": "^0.4.1", - "@web/dev-server-legacy": "^2.0.0", + "@web/dev-server-esbuild": "^0.4.3", + "@web/dev-server-legacy": "^2.0.3", "portfinder": "^1.0.32" }, "engines": { @@ -33854,10 +33871,10 @@ }, "packages/test-runner-selenium": { "name": "@web/test-runner-selenium", - "version": "0.6.0", + "version": "0.6.1", "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.11.0", + "@web/test-runner-core": "^0.11.6", "selenium-webdriver": "^4.0.0" }, "devDependencies": { @@ -33906,10 +33923,10 @@ }, "packages/test-runner-webdriver": { "name": "@web/test-runner-webdriver", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.11.1", + "@web/test-runner-core": "^0.11.6", "webdriverio": "^8.8.6" }, "devDependencies": { diff --git a/packages/dev-server-esbuild/CHANGELOG.md b/packages/dev-server-esbuild/CHANGELOG.md index 7ac0be2af..c149f1805 100644 --- a/packages/dev-server-esbuild/CHANGELOG.md +++ b/packages/dev-server-esbuild/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/dev-server-esbuild +## 0.4.4 + +### Patch Changes + +- ef6b2543: Use split versions for all lit dependencies + ## 0.4.3 ### Patch Changes diff --git a/packages/dev-server-esbuild/package.json b/packages/dev-server-esbuild/package.json index 41048ade0..217fe3219 100644 --- a/packages/dev-server-esbuild/package.json +++ b/packages/dev-server-esbuild/package.json @@ -1,6 +1,6 @@ { "name": "@web/dev-server-esbuild", - "version": "0.4.3", + "version": "0.4.4", "publishConfig": { "access": "public" }, @@ -60,7 +60,7 @@ "devDependencies": { "@types/ua-parser-js": "^0.7.35", "@web/dev-server-rollup": "^0.5.4", - "lit-element": "^3.0.0", + "lit-element": "^3.0.0 || ^4.0.1", "node-fetch": "3.0.0-beta.9", "preact": "^10.5.9" } diff --git a/packages/dev-server-hmr/CHANGELOG.md b/packages/dev-server-hmr/CHANGELOG.md index 66a9ce38c..6ffaf16a9 100644 --- a/packages/dev-server-hmr/CHANGELOG.md +++ b/packages/dev-server-hmr/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/dev-server-hmr +## 0.3.3 + +### Patch Changes + +- ef6b2543: Use split versions for all lit dependencies + ## 0.3.2 ### Patch Changes diff --git a/packages/dev-server-hmr/package.json b/packages/dev-server-hmr/package.json index 629a1442d..4b1cd25b1 100644 --- a/packages/dev-server-hmr/package.json +++ b/packages/dev-server-hmr/package.json @@ -1,6 +1,6 @@ { "name": "@web/dev-server-hmr", - "version": "0.3.2", + "version": "0.3.3", "publishConfig": { "access": "public" }, @@ -43,7 +43,7 @@ "@web/dev-server-core": "^0.6.2" }, "devDependencies": { - "lit-html": "^2.7.3", + "lit-html": "^2.7.3 || ^3.0.0", "puppeteer": "^20.0.0" } } diff --git a/packages/dev-server-polyfill/CHANGELOG.md b/packages/dev-server-polyfill/CHANGELOG.md new file mode 100644 index 000000000..00bdcdf8b --- /dev/null +++ b/packages/dev-server-polyfill/CHANGELOG.md @@ -0,0 +1,22 @@ +# @web/dev-server-polyfill + +## 1.0.3 + +### Patch Changes + +- 76a2f86f: update entrypoints +- 3aa8bb85: fix: use the correct package name in the comment markers +- Updated dependencies [76a2f86f] + - @web/polyfills-loader@2.1.5 + +## 1.0.2 + +### Patch Changes + +- fe56dec6: fix comment markers + +## 1.0.1 + +### Patch Changes + +- 90c8dcdc: feat: dev-server-polyfill diff --git a/packages/dev-server-polyfill/README.md b/packages/dev-server-polyfill/README.md new file mode 100644 index 000000000..c56ef4fea --- /dev/null +++ b/packages/dev-server-polyfill/README.md @@ -0,0 +1,45 @@ +# Dev server polyfill + +Plugin to load polyfills during development. Uses [`@web/polyfills-loader`](https://modern-web.dev/docs/building/polyfills-loader/) internally. + +## Usage + +`web-dev-server.config.js`: + +```js +import { polyfill } from '@web/dev-server-polyfill'; + +export default { + plugins: [ + polyfill({ + scopedCustomElementRegistry: true, + }), + ], +}; +``` + +You can find the supported polyfills [here](https://modern-web.dev/docs/building/polyfills-loader/#polyfills). + +You can also provide custom polyfills: + +`web-dev-server.config.js`: + +```js +import { polyfill } from '@web/dev-server-polyfill'; + +export default { + plugins: [ + polyfill({ + custom: [ + { + name: 'my-feature-polyfill', + path: 'path/to/my/polyfill.js', + test: "!('myFeature' in window)", + }, + ], + }), + ], +}; +``` + +You can find the configuration options for providing custom polyfills [here](https://modern-web.dev/docs/building/polyfills-loader/#custom-polyfills). diff --git a/packages/dev-server-polyfill/index.d.ts b/packages/dev-server-polyfill/index.d.ts new file mode 100644 index 000000000..c41020304 --- /dev/null +++ b/packages/dev-server-polyfill/index.d.ts @@ -0,0 +1,2 @@ +// this file is autogenerated with the generate-mjs-dts-entrypoints script +export * from './dist/index'; diff --git a/packages/dev-server-polyfill/package.json b/packages/dev-server-polyfill/package.json new file mode 100644 index 000000000..bc63f4bb1 --- /dev/null +++ b/packages/dev-server-polyfill/package.json @@ -0,0 +1,44 @@ +{ + "name": "@web/dev-server-polyfill", + "version": "1.0.3", + "publishConfig": { + "access": "public" + }, + "description": "Dev server plugin for loading polyfills", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/modernweb-dev/web.git", + "directory": "packages/dev-server-polyfill" + }, + "author": "modern-web", + "homepage": "https://github.com/modernweb-dev/web/tree/master/packages/dev-server-polyfill", + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "build": "tsc" + }, + "files": [ + "*.d.ts", + "*.js", + "CHANGELOG.md", + "dist", + "README.md" + ], + "keywords": [ + "web", + "polyfill" + ], + "dependencies": { + "@web/dev-server": "^0.3.6", + "@web/polyfills-loader": "^2.1.5" + } +} diff --git a/packages/dev-server-polyfill/src/index.ts b/packages/dev-server-polyfill/src/index.ts new file mode 100644 index 000000000..5394e27dc --- /dev/null +++ b/packages/dev-server-polyfill/src/index.ts @@ -0,0 +1,41 @@ +import { createPolyfillsData } from '@web/polyfills-loader'; +import type { PolyfillsConfig } from '@web/polyfills-loader'; +import type { Plugin } from '@web/dev-server-core'; + +export function polyfill(polyfillsConfig: PolyfillsConfig): Plugin { + let polyfillScripts: string[]; + + return { + name: 'polyfills-loader', + async serverStart() { + const polyfillsData = await createPolyfillsData({ polyfills: polyfillsConfig }); + + polyfillScripts = polyfillsData.map(({ name, type, test, content }) => { + return ` + + `; + }); + }, + transform(context) { + if (context.response.is('html')) { + return { + // @ts-expect-error + body: context.body.replace( + /
/, + ` + + + ${polyfillScripts.join('\n')} + + `, + ), + }; + } + return undefined; + }, + }; +} diff --git a/packages/dev-server-polyfill/tsconfig.json b/packages/dev-server-polyfill/tsconfig.json new file mode 100644 index 000000000..4ad773f21 --- /dev/null +++ b/packages/dev-server-polyfill/tsconfig.json @@ -0,0 +1,19 @@ +// Don't edit this file directly. It is generated by generate-ts-configs script + +{ + "extends": "../../tsconfig.node-base.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist", + "rootDir": "./src", + "composite": true, + "allowJs": true + }, + "include": [ + "src", + "types" + ], + "exclude": [ + "dist" + ] +} \ No newline at end of file diff --git a/packages/dev-server-rollup/package.json b/packages/dev-server-rollup/package.json index 906b354ba..138047aa3 100644 --- a/packages/dev-server-rollup/package.json +++ b/packages/dev-server-rollup/package.json @@ -63,12 +63,12 @@ "@rollup/plugin-replace": "^5.0.2", "@types/parse5": "^6.0.1", "@types/whatwg-url": "^11.0.0", - "@web/test-runner-chrome": "^0.14.3", - "@web/test-runner-core": "^0.11.6", + "@web/test-runner-chrome": "^0.14.4", + "@web/test-runner-core": "^0.12.0", "chai": "^4.2.0", "mocha": "^10.2.0", "node-fetch": "3.0.0-beta.9", - "postcss": "^8.0.0", + "postcss": "^8.4.31", "rollup-plugin-postcss": "^4.0.2" } } diff --git a/packages/dev-server/CHANGELOG.md b/packages/dev-server/CHANGELOG.md index 2713f6441..ee3053f26 100644 --- a/packages/dev-server/CHANGELOG.md +++ b/packages/dev-server/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/dev-server +## 0.3.7 + +### Patch Changes + +- ef6b2543: Use split versions for all lit dependencies + ## 0.3.6 ### Patch Changes diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index a7e12e2bd..561219fe9 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -1,6 +1,6 @@ { "name": "@web/dev-server", - "version": "0.3.6", + "version": "0.3.7", "publishConfig": { "access": "public" }, @@ -72,7 +72,7 @@ }, "devDependencies": { "@types/command-line-usage": "^5.0.1", - "lit-html": "^2.7.3", + "lit-html": "^2.7.3 || ^3.0.0", "puppeteer": "^20.0.0" } } diff --git a/packages/mocks/CHANGELOG.md b/packages/mocks/CHANGELOG.md index c98413b17..ee62b580a 100644 --- a/packages/mocks/CHANGELOG.md +++ b/packages/mocks/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/mocks +## 0.1.14 + +### Patch Changes + +- ef6b2543: Use split versions for all lit dependencies + ## 0.1.13 ### Patch Changes diff --git a/packages/mocks/package.json b/packages/mocks/package.json index 79bf73ca4..81798ed10 100644 --- a/packages/mocks/package.json +++ b/packages/mocks/package.json @@ -1,6 +1,6 @@ { "name": "@web/mocks", - "version": "0.1.13", + "version": "0.1.14", "publishConfig": { "access": "public" }, @@ -64,11 +64,11 @@ "@storybook/preview-api": "^7.0.0", "@web/storybook-prebuilt": "^0.1.37", "@web/storybook-utils": "^1.0.0", - "lit": "^2.7.5", + "lit": "^2.7.5 || ^3.0.0", "msw": "0.0.0-fetch.rc-23" }, "devDependencies": { - "@web/dev-server": "^0.3.0", + "@web/dev-server": "^0.3.7", "@web/dev-server-storybook": "^1.0.0" }, "wireit": { diff --git a/packages/polyfills-loader/CHANGELOG.md b/packages/polyfills-loader/CHANGELOG.md index c0fe28f66..3ea0c0ce7 100644 --- a/packages/polyfills-loader/CHANGELOG.md +++ b/packages/polyfills-loader/CHANGELOG.md @@ -1,5 +1,17 @@ # @web/polyfills-loader +## 2.1.5 + +### Patch Changes + +- 76a2f86f: update entrypoints + +## 2.1.4 + +### Patch Changes + +- 55d9ea1b: fix: export polyfills data + ## 2.1.3 ### Patch Changes diff --git a/packages/polyfills-loader/index.mjs b/packages/polyfills-loader/index.mjs index 5ce68d456..3dd11914b 100644 --- a/packages/polyfills-loader/index.mjs +++ b/packages/polyfills-loader/index.mjs @@ -2,6 +2,7 @@ import cjsEntrypoint from './dist/index.js'; const { + createPolyfillsData, createPolyfillsLoader, injectPolyfillsLoader, hasFileOfType, @@ -10,6 +11,7 @@ const { } = cjsEntrypoint; export { + createPolyfillsData, createPolyfillsLoader, injectPolyfillsLoader, hasFileOfType, diff --git a/packages/polyfills-loader/package.json b/packages/polyfills-loader/package.json index 931797274..7104951ef 100644 --- a/packages/polyfills-loader/package.json +++ b/packages/polyfills-loader/package.json @@ -1,6 +1,6 @@ { "name": "@web/polyfills-loader", - "version": "2.1.3", + "version": "2.1.5", "publishConfig": { "access": "public" }, diff --git a/packages/polyfills-loader/src/index.ts b/packages/polyfills-loader/src/index.ts index 6afa088e6..8af693afc 100644 --- a/packages/polyfills-loader/src/index.ts +++ b/packages/polyfills-loader/src/index.ts @@ -1,3 +1,4 @@ +export { createPolyfillsData } from './createPolyfillsData'; export { createPolyfillsLoader } from './createPolyfillsLoader'; export { injectPolyfillsLoader } from './injectPolyfillsLoader'; export { hasFileOfType, fileTypes, getScriptFileType } from './utils'; diff --git a/packages/storybook-builder/CHANGELOG.md b/packages/storybook-builder/CHANGELOG.md index 0a01c2338..3f0e7c6a3 100644 --- a/packages/storybook-builder/CHANGELOG.md +++ b/packages/storybook-builder/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/storybook-builder +## 0.1.3 + +### Patch Changes + +- afe4df6c: improve prebundling to target only really necessary packages + ## 0.1.2 ### Patch Changes diff --git a/packages/storybook-builder/package.json b/packages/storybook-builder/package.json index c9dd6400e..1e4c245c0 100644 --- a/packages/storybook-builder/package.json +++ b/packages/storybook-builder/package.json @@ -1,6 +1,6 @@ { "name": "@web/storybook-builder", - "version": "0.1.2", + "version": "0.1.3", "publishConfig": { "access": "public" }, diff --git a/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts b/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts index fddcd3202..ddf7d120c 100644 --- a/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts +++ b/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts @@ -62,129 +62,27 @@ function getModules() { return include; } -// taken from https://github.com/storybookjs/storybook/blob/v7.0.9/code/lib/builder-vite/src/optimizeDeps.ts#L7 +// this is different to https://github.com/storybookjs/storybook/blob/v7.0.0/code/lib/builder-vite/src/optimizeDeps.ts#L7 +// builder-vite bundles different dependencies for performance reasons +// we aim only at browserifying NodeJS dependencies (CommonJS/process.env/...) export const CANDIDATES = [ - '@base2/pretty-print-object', - '@emotion/core', - '@emotion/is-prop-valid', - '@emotion/styled', - '@mdx-js/react', - '@storybook/addon-docs > acorn-jsx', - '@storybook/addon-docs', - '@storybook/addon-essentials/docs/mdx-react-shim', - '@storybook/channel-postmessage', - '@storybook/channel-websocket', - '@storybook/client-api', - '@storybook/client-logger', - '@storybook/core/client', - '@storybook/global', - '@storybook/preview-api', - '@storybook/preview-web', - '@storybook/react > acorn-jsx', - '@storybook/react', - '@storybook/svelte', - '@storybook/types', - '@storybook/vue3', - 'acorn-jsx', - 'acorn-walk', - 'acorn', - 'airbnb-js-shims', - 'ansi-to-html', - 'axe-core', - 'color-convert', - 'deep-object-diff', + // @testing-library has ESM, but imports/exports are not working correctly between packages + // specifically "@testing-library/user-event" has "dist/esm/utils/misc/getWindow.js" (see https://cdn.jsdelivr.net/npm/@testing-library/user-event@14.4.3/dist/esm/utils/misc/getWindow.js) + // which uses "@testing-library/dom" in `import { getWindowFromNode } from '@testing-library/dom/dist/helpers.js';` + // which doesn't get resolved to "@testing-library/dom" ESM "dom.esm.js" (see https://cdn.jsdelivr.net/npm/@testing-library/dom@9.3.1/dist/@testing-library/dom.esm.js) + // and instead gets resolved to "@testing-library/dom" CommonJS "dist/helpers.js" (see https://cdn.jsdelivr.net/npm/@testing-library/dom@9.3.1/dist/helpers.js) + '@testing-library/dom', + '@testing-library/user-event', + + // CommonJS module used in Storybook MJS files 'doctrine', - 'emotion-theming', - 'escodegen', - 'estraverse', - 'fast-deep-equal', - 'html-tags', - 'isobject', + + // CommonJS module used in Storybook MJS files 'jest-mock', - 'loader-utils', - 'lodash/camelCase.js', - 'lodash/camelCase', - 'lodash/cloneDeep.js', - 'lodash/cloneDeep', - 'lodash/countBy.js', - 'lodash/countBy', - 'lodash/debounce.js', - 'lodash/debounce', - 'lodash/isEqual.js', - 'lodash/isEqual', - 'lodash/isFunction.js', - 'lodash/isFunction', - 'lodash/isPlainObject.js', - 'lodash/isPlainObject', - 'lodash/isString.js', - 'lodash/isString', - 'lodash/kebabCase.js', - 'lodash/kebabCase', - 'lodash/mapKeys.js', - 'lodash/mapKeys', + + // CommonJS module used in Storybook MJS files 'lodash/mapValues.js', - 'lodash/mapValues', - 'lodash/merge.js', - 'lodash/merge', - 'lodash/mergeWith.js', - 'lodash/mergeWith', - 'lodash/pick.js', - 'lodash/pick', - 'lodash/pickBy.js', - 'lodash/pickBy', - 'lodash/startCase.js', - 'lodash/startCase', - 'lodash/throttle.js', - 'lodash/throttle', - 'lodash/uniq.js', - 'lodash/uniq', - 'lodash/upperFirst.js', - 'lodash/upperFirst', - 'markdown-to-jsx', - 'memoizerific', - 'overlayscrollbars', - 'polished', - 'prettier/parser-babel', - 'prettier/parser-flow', - 'prettier/parser-typescript', - 'prop-types', - 'qs', - 'react-dom', - 'react-dom/client', - 'react-fast-compare', - 'react-is', - 'react-textarea-autosize', - 'react', - 'react/jsx-runtime', - 'refractor/core', - 'refractor/lang/bash.js', - 'refractor/lang/css.js', - 'refractor/lang/graphql.js', - 'refractor/lang/js-extras.js', - 'refractor/lang/json.js', - 'refractor/lang/jsx.js', - 'refractor/lang/markdown.js', - 'refractor/lang/markup.js', - 'refractor/lang/tsx.js', - 'refractor/lang/typescript.js', - 'refractor/lang/yaml.js', - 'regenerator-runtime/runtime.js', - 'slash', - 'store2', - 'synchronous-promise', - 'telejson', - 'ts-dedent', - 'unfetch', - 'util-deprecate', - 'vue', - 'warning', -]; -// we need more, probably Vite in builder-vite transforms those on the fly -CANDIDATES.push( - '@testing-library/user-event', - 'aria-query', - 'lz-string', - 'pretty-format', + // ESM, but uses `process.env.NODE_ENV` 'tiny-invariant', -); +]; diff --git a/packages/test-runner-chrome/CHANGELOG.md b/packages/test-runner-chrome/CHANGELOG.md index 922e412f7..0e603985a 100644 --- a/packages/test-runner-chrome/CHANGELOG.md +++ b/packages/test-runner-chrome/CHANGELOG.md @@ -1,5 +1,13 @@ # @web/test-runner-chrome +## 0.14.4 + +### Patch Changes + +- Updated dependencies [43be7391] + - @web/test-runner-core@0.12.0 + - @web/test-runner-coverage-v8@0.7.3 + ## 0.14.3 ### Patch Changes diff --git a/packages/test-runner-chrome/package.json b/packages/test-runner-chrome/package.json index dca73ebb5..72a0cbd71 100644 --- a/packages/test-runner-chrome/package.json +++ b/packages/test-runner-chrome/package.json @@ -1,6 +1,6 @@ { "name": "@web/test-runner-chrome", - "version": "0.14.3", + "version": "0.14.4", "publishConfig": { "access": "public" }, @@ -46,14 +46,14 @@ "launcher" ], "dependencies": { - "@web/test-runner-core": "^0.11.6", - "@web/test-runner-coverage-v8": "^0.7.2", + "@web/test-runner-core": "^0.12.0", + "@web/test-runner-coverage-v8": "^0.7.3", "async-mutex": "0.4.0", "chrome-launcher": "^0.15.0", "puppeteer-core": "^20.0.0" }, "devDependencies": { "@types/istanbul-reports": "^3.0.0", - "@web/test-runner-mocha": "^0.8.0" + "@web/test-runner-mocha": "^0.8.2" } } diff --git a/packages/test-runner-commands/CHANGELOG.md b/packages/test-runner-commands/CHANGELOG.md index b244af09f..c9896e7b8 100644 --- a/packages/test-runner-commands/CHANGELOG.md +++ b/packages/test-runner-commands/CHANGELOG.md @@ -1,5 +1,12 @@ # @web/test-runner-commands +## 0.8.3 + +### Patch Changes + +- Updated dependencies [43be7391] + - @web/test-runner-core@0.12.0 + ## 0.8.2 ### Patch Changes diff --git a/packages/test-runner-commands/package.json b/packages/test-runner-commands/package.json index 095cb172e..2644c8d27 100644 --- a/packages/test-runner-commands/package.json +++ b/packages/test-runner-commands/package.json @@ -1,6 +1,6 @@ { "name": "@web/test-runner-commands", - "version": "0.8.2", + "version": "0.8.3", "publishConfig": { "access": "public" }, @@ -49,13 +49,13 @@ "commands" ], "dependencies": { - "@web/test-runner-core": "^0.11.6", + "@web/test-runner-core": "^0.12.0", "mkdirp": "^1.0.4" }, "devDependencies": { - "@web/test-runner-chrome": "^0.14.3", - "@web/test-runner-playwright": "^0.10.2", - "@web/test-runner-webdriver": "^0.7.1", + "@web/test-runner-chrome": "^0.14.4", + "@web/test-runner-playwright": "^0.10.3", + "@web/test-runner-webdriver": "^0.7.2", "mocha": "^10.2.0" } } diff --git a/packages/test-runner-core/CHANGELOG.md b/packages/test-runner-core/CHANGELOG.md index 835b01806..494ba05dc 100644 --- a/packages/test-runner-core/CHANGELOG.md +++ b/packages/test-runner-core/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/test-runner-core +## 0.12.0 + +### Minor Changes + +- 43be7391: Add TestSession to filterBrowserLogs args so logs can be filtered on session result + ## 0.11.6 ### Patch Changes diff --git a/packages/test-runner-core/package.json b/packages/test-runner-core/package.json index 0c79e42f6..4d87fdc42 100644 --- a/packages/test-runner-core/package.json +++ b/packages/test-runner-core/package.json @@ -1,6 +1,6 @@ { "name": "@web/test-runner-core", - "version": "0.11.6", + "version": "0.12.0", "publishConfig": { "access": "public" }, diff --git a/packages/test-runner-core/src/config/TestRunnerCoreConfig.ts b/packages/test-runner-core/src/config/TestRunnerCoreConfig.ts index 08c82a4bd..6a17dacf8 100644 --- a/packages/test-runner-core/src/config/TestRunnerCoreConfig.ts +++ b/packages/test-runner-core/src/config/TestRunnerCoreConfig.ts @@ -1,6 +1,7 @@ import { Middleware } from '@web/dev-server-core'; import { BrowserLauncher } from '../browser-launcher/BrowserLauncher.js'; import { TestFramework } from '../test-framework/TestFramework.js'; +import { TestSession } from '../test-session/TestSession.js'; import { Reporter } from '../reporter/Reporter.js'; import { Logger } from '../logger/Logger.js'; import { TestRunnerPlugin } from '../server/TestRunnerPlugin.js'; @@ -46,7 +47,10 @@ export interface TestRunnerCoreConfig { watch: boolean; browserLogs?: boolean; - filterBrowserLogs?: (log: { type: string; args: any[] }) => boolean; + filterBrowserLogs?: ( + log: { type: string; args: any[] }, + session?: Partial