diff --git a/packages/next/package.json b/packages/next/package.json index 5eb19eb1ddcffc..86eb5cf15ca1b0 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -234,7 +234,6 @@ "image-size": "1.0.0", "is-docker": "2.0.0", "is-wsl": "2.2.0", - "jest-docblock": "29.4.3", "jest-worker": "27.0.0-next.5", "json5": "2.2.3", "jsonwebtoken": "9.0.0", diff --git a/packages/next/src/build/swc/jest-transformer.ts b/packages/next/src/build/swc/jest-transformer.ts index d2691139488663..350a8e2536db56 100644 --- a/packages/next/src/build/swc/jest-transformer.ts +++ b/packages/next/src/build/swc/jest-transformer.ts @@ -29,7 +29,6 @@ DEALINGS IN THE SOFTWARE. import vm from 'vm' import { transformSync } from './index' import { getJestSWCOptions } from './options' -import * as docblock from 'next/dist/compiled/jest-docblock' import type { TransformerCreator, TransformOptions, @@ -77,30 +76,16 @@ function isEsm( ) } -function getTestEnvironment( - src: string, - jestConfig: Config.ProjectConfig -): string { - const docblockPragmas = docblock.parse(docblock.extract(src)) - const pragma = docblockPragmas['jest-environment'] - const environment = - (Array.isArray(pragma) ? pragma[0] : pragma) ?? jestConfig.testEnvironment - return environment -} - const createTransformer: TransformerCreator< SyncTransformer, JestTransformerConfig > = (inputOptions) => ({ process(src, filename, jestOptions) { const jestConfig = getJestConfig(jestOptions) - const testEnvironment = getTestEnvironment(src, jestConfig) const swcTransformOpts = getJestSWCOptions({ - // When target is node it's similar to the server option set in SWC. - isServer: - testEnvironment === 'node' || - testEnvironment.includes('jest-environment-node'), + // Always target server when compiling during test, to pass server-only validations and allow testing pages with metadatas + isServer: true, filename, jsConfig: inputOptions?.jsConfig, resolvedBaseUrl: inputOptions?.resolvedBaseUrl, diff --git a/packages/next/src/compiled/jest-docblock/LICENSE b/packages/next/src/compiled/jest-docblock/LICENSE deleted file mode 100644 index b93be90515ccd0..00000000000000 --- a/packages/next/src/compiled/jest-docblock/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) Meta Platforms, Inc. and affiliates. - -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. diff --git a/packages/next/src/compiled/jest-docblock/index.js b/packages/next/src/compiled/jest-docblock/index.js deleted file mode 100644 index 240ca16b9aac36..00000000000000 --- a/packages/next/src/compiled/jest-docblock/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={381:e=>{const detectNewline=e=>{if(typeof e!=="string"){throw new TypeError("Expected a string")}const t=e.match(/(?:\r?\n)/g)||[];if(t.length===0){return}const r=t.filter((e=>e==="\r\n")).length;const n=t.length-r;return r>n?"\r\n":"\n"};e.exports=detectNewline;e.exports.graceful=e=>typeof e==="string"&&detectNewline(e)||"\n"},37:e=>{e.exports=require("os")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var s=t[r]={exports:{}};var c=true;try{e[r](s,s.exports,__nccwpck_require__);c=false}finally{if(c)delete t[r]}return s.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r={};(()=>{var e=r;Object.defineProperty(e,"__esModule",{value:true});e.extract=extract;e.parse=parse;e.parseWithComments=parseWithComments;e.print=print;e.strip=strip;function _os(){const e=__nccwpck_require__(37);_os=function(){return e};return e}function _detectNewline(){const e=_interopRequireDefault(__nccwpck_require__(381));_detectNewline=function(){return e};return e}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const t=/\*\/$/;const n=/^\/\*\*?/;const s=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/;const c=/(^|\s+)\/\/([^\r\n]*)/g;const o=/^(\r?\n)+/;const i=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g;const a=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g;const u=/(\r?\n|^) *\* ?/g;const p=[];function extract(e){const t=e.match(s);return t?t[0].trimLeft():""}function strip(e){const t=e.match(s);return t&&t[0]?e.substring(t[0].length):e}function parse(e){return parseWithComments(e).pragmas}function parseWithComments(e){const r=(0,_detectNewline().default)(e)??_os().EOL;e=e.replace(n,"").replace(t,"").replace(u,"$1");let s="";while(s!==e){s=e;e=e.replace(i,`${r}$1 $2${r}`)}e=e.replace(o,"").trimRight();const _=Object.create(null);const l=e.replace(a,"").replace(o,"").trimRight();let f;while(f=a.exec(e)){const e=f[2].replace(c,"");if(typeof _[f[1]]==="string"||Array.isArray(_[f[1]])){_[f[1]]=p.concat(_[f[1]],e)}else{_[f[1]]=e}}return{comments:l,pragmas:_}}function print({comments:e="",pragmas:t={}}){const r=(0,_detectNewline().default)(e)??_os().EOL;const n="/**";const s=" *";const c=" */";const o=Object.keys(t);const i=o.map((e=>printKeyValues(e,t[e]))).reduce(((e,t)=>e.concat(t)),[]).map((e=>`${s} ${e}${r}`)).join("");if(!e){if(o.length===0){return""}if(o.length===1&&!Array.isArray(t[o[0]])){const e=t[o[0]];return`${n} ${printKeyValues(o[0],e)[0]}${c}`}}const a=e.split(r).map((e=>`${s} ${e}`)).join(r)+r;return n+r+(e?a:"")+(e&&o.length?s+r:"")+i+c}function printKeyValues(e,t){return p.concat(t).map((t=>`@${e} ${t}`.trim()))}})();module.exports=r})(); \ No newline at end of file diff --git a/packages/next/src/compiled/jest-docblock/package.json b/packages/next/src/compiled/jest-docblock/package.json deleted file mode 100644 index 78bc406c0d040f..00000000000000 --- a/packages/next/src/compiled/jest-docblock/package.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"jest-docblock","main":"index.js","license":"MIT"} diff --git a/packages/next/taskfile.js b/packages/next/taskfile.js index 722fd8e414b26a..e337bf68fb8cef 100644 --- a/packages/next/taskfile.js +++ b/packages/next/taskfile.js @@ -2179,15 +2179,6 @@ export async function ncc_https_proxy_agent(task, opts) { .target('src/compiled/https-proxy-agent') } -// eslint-disable-next-line camelcase -externals['jest-docblock'] = 'next/dist/compiled/jest-docblock' -export async function ncc_jest_docblock(task, opts) { - await task - .source(relative(__dirname, require.resolve('jest-docblock'))) - .ncc({ packageName: 'jest-docblock', externals }) - .target('src/compiled/jest-docblock') -} - export async function precompile(task, opts) { await task.parallel( [ @@ -2322,7 +2313,6 @@ export async function ncc(task, opts) { 'ncc_opentelemetry_api', 'ncc_http_proxy_agent', 'ncc_https_proxy_agent', - 'ncc_jest_docblock', 'ncc_mini_css_extract_plugin', ], opts diff --git a/packages/next/types/misc.d.ts b/packages/next/types/misc.d.ts index 2b68db60026069..d288bb92496df0 100644 --- a/packages/next/types/misc.d.ts +++ b/packages/next/types/misc.d.ts @@ -454,8 +454,3 @@ declare module 'next/dist/compiled/@opentelemetry/api' { import * as m from '@opentelemetry/api' export = m } - -declare module 'next/dist/compiled/jest-docblock' { - import m from 'jest-docblock' - export = m -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d92cacb079e7c8..7a1d94a9638395 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1111,9 +1111,6 @@ importers: is-wsl: specifier: 2.2.0 version: 2.2.0 - jest-docblock: - specifier: 29.4.3 - version: 29.4.3 jest-worker: specifier: 27.0.0-next.5 version: 27.0.0-next.5 @@ -5908,7 +5905,7 @@ packages: npm-package-arg: 8.1.0 p-map: 4.0.0 pacote: 11.2.6 - semver: 7.3.7 + semver: 7.5.4 transitivePeerDependencies: - bluebird - supports-color @@ -5939,7 +5936,7 @@ packages: p-map-series: 2.1.0 p-waterfall: 2.1.1 read-package-tree: 5.3.1 - semver: 7.3.7 + semver: 7.5.4 dev: true /@lerna/changed@4.0.0: @@ -6044,7 +6041,7 @@ packages: npm-package-arg: 8.1.0 npmlog: 4.1.2 pify: 5.0.0 - semver: 7.3.7 + semver: 7.5.4 dev: true /@lerna/create-symlink@4.0.0: @@ -6072,7 +6069,7 @@ packages: p-reduce: 2.1.0 pacote: 11.2.6 pify: 5.0.0 - semver: 7.3.7 + semver: 7.5.4 slash: 3.0.0 validate-npm-package-license: 3.0.4 validate-npm-package-name: 3.0.0 @@ -6183,7 +6180,7 @@ packages: engines: {node: '>= 10.18.0'} dependencies: '@lerna/child-process': 4.0.0 - semver: 7.3.7 + semver: 7.5.4 dev: true /@lerna/import@4.0.0: @@ -6355,7 +6352,7 @@ packages: '@lerna/validation-error': 4.0.0 npm-package-arg: 8.1.0 npmlog: 4.1.2 - semver: 7.3.7 + semver: 7.5.4 dev: true /@lerna/package@4.0.0: @@ -6371,7 +6368,7 @@ packages: resolution: {integrity: sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==} engines: {node: '>= 10.18.0'} dependencies: - semver: 7.3.7 + semver: 7.5.4 dev: true /@lerna/profiler@4.0.0: @@ -6440,7 +6437,7 @@ packages: p-map: 4.0.0 p-pipe: 3.1.0 pacote: 11.2.6 - semver: 7.3.7 + semver: 7.5.4 transitivePeerDependencies: - bluebird - encoding @@ -6572,7 +6569,7 @@ packages: p-pipe: 3.1.0 p-reduce: 2.1.0 p-waterfall: 2.1.1 - semver: 7.3.7 + semver: 7.5.4 slash: 3.0.0 temp-write: 4.0.0 write-json-file: 4.3.0 @@ -6599,7 +6596,7 @@ packages: nopt: 5.0.0 npmlog: 4.1.2 rimraf: 3.0.2 - semver: 7.3.7 + semver: 7.5.4 tar: 6.1.15 transitivePeerDependencies: - encoding @@ -6704,7 +6701,7 @@ packages: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.7 + semver: 7.5.4 dev: true /@npmcli/git@2.0.4: @@ -6716,7 +6713,7 @@ packages: npm-pick-manifest: 6.1.0 promise-inflight: 1.0.1 promise-retry: 1.1.1 - semver: 7.3.7 + semver: 7.5.4 unique-filename: 1.1.1 which: 2.0.2 transitivePeerDependencies: @@ -6784,7 +6781,7 @@ packages: '@octokit/request-error': 5.0.0 '@octokit/types': 11.1.0 deprecation: 2.3.1 - lru-cache: 10.0.0 + lru-cache: 10.0.1 universal-github-app-jwt: 1.1.1 universal-user-agent: 6.0.0 dev: true @@ -7078,7 +7075,7 @@ packages: debug: 3.2.7 http-proxy-agent: 2.1.0 https-proxy-agent: 2.2.4 - lodash: 4.17.20 + lodash: 4.17.21 node-fetch: 2.6.7 url-template: 2.0.8 transitivePeerDependencies: @@ -7662,10 +7659,10 @@ packages: engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.21.4 - '@babel/runtime': 7.16.7 + '@babel/runtime': 7.22.3 '@types/aria-query': 5.0.1 aria-query: 5.0.0 - chalk: 4.1.0 + chalk: 4.1.2 dom-accessibility-api: 0.5.13 lz-string: 1.5.0 pretty-format: 27.5.1 @@ -8447,7 +8444,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: @@ -9539,7 +9536,7 @@ packages: resolution: {integrity: sha512-CKt4+Oy9k2wiN+hT1uZzOw7d8zb1anbQpf7KLwaaXRCi/4pzKdFKHf7v5mvoPmjkmxshh7eKZQuRop06r5WP4w==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.16.7 + '@babel/runtime': 7.22.3 cosmiconfig: 7.0.0 resolve: 1.22.1 dev: true @@ -10323,14 +10320,6 @@ packages: supports-color: 7.2.0 dev: false - /chalk@4.1.0: - resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -10951,7 +10940,7 @@ packages: git-raw-commits: 2.0.10 git-remote-origin-url: 2.0.0 git-semver-tags: 4.1.1 - lodash: 4.17.20 + lodash: 4.17.21 normalize-package-data: 3.0.0 q: 1.5.1 read-pkg: 3.0.0 @@ -10975,7 +10964,7 @@ packages: dateformat: 3.0.3 handlebars: 4.7.7 json-stringify-safe: 5.0.1 - lodash: 4.17.20 + lodash: 4.17.21 meow: 8.1.2 semver: 6.3.0 split: 1.0.1 @@ -10997,7 +10986,7 @@ packages: dependencies: JSONStream: 1.3.5 is-text-path: 1.0.1 - lodash: 4.17.20 + lodash: 4.17.21 meow: 8.1.2 split2: 2.2.0 through2: 4.0.2 @@ -12118,7 +12107,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.16.7 + '@babel/runtime': 7.22.3 csstype: 3.0.10 dev: true @@ -12923,11 +12912,6 @@ packages: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} - /eslint-visitor-keys@3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - /eslint-visitor-keys@3.4.1: resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -13017,7 +13001,7 @@ packages: optionator: 0.9.1 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.3.7 + semver: 7.5.4 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 table: 6.8.0 @@ -13044,7 +13028,7 @@ packages: escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 eslint-utils: 3.0.0(eslint@8.31.0) - eslint-visitor-keys: 3.3.0 + eslint-visitor-keys: 3.4.1 espree: 9.4.1 esquery: 1.4.0 esutils: 2.0.3 @@ -14146,7 +14130,7 @@ packages: hasBin: true dependencies: dargs: 7.0.0 - lodash: 4.17.20 + lodash: 4.17.21 meow: 8.1.2 split2: 3.2.2 through2: 4.0.2 @@ -15234,7 +15218,7 @@ packages: promzard: 0.3.0 read: 1.0.7 read-package-json: 3.0.0 - semver: 7.3.7 + semver: 7.5.4 validate-npm-package-license: 3.0.4 validate-npm-package-name: 3.0.0 dev: true @@ -15252,7 +15236,7 @@ packages: cli-width: 2.2.0 external-editor: 2.2.0 figures: 2.0.0 - lodash: 4.17.20 + lodash: 4.17.21 mute-stream: 0.0.7 run-async: 2.4.1 rxjs: 5.5.12 @@ -16013,7 +15997,7 @@ packages: hasBin: true dependencies: async: 3.2.4 - chalk: 4.1.0 + chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 dev: true @@ -16160,13 +16144,6 @@ packages: detect-newline: 3.1.0 dev: true - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - /jest-each@27.5.1: resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -16636,7 +16613,7 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.3.7 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true @@ -16666,7 +16643,7 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.3.7 + semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -17223,7 +17200,7 @@ packages: normalize-package-data: 3.0.0 npm-package-arg: 8.1.0 npm-registry-fetch: 9.0.0 - semver: 7.3.7 + semver: 7.5.4 ssri: 8.0.1 transitivePeerDependencies: - bluebird @@ -17709,8 +17686,8 @@ packages: engines: {node: '>=8'} dev: true - /lru-cache@10.0.0: - resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} engines: {node: 14 || >=16.14} dev: true @@ -19005,7 +18982,7 @@ packages: npmlog: 4.1.2 request: 2.88.2 rimraf: 3.0.2 - semver: 7.3.7 + semver: 7.5.4 tar: 6.1.15 which: 2.0.2 dev: true @@ -19087,7 +19064,7 @@ packages: dependencies: hosted-git-info: 3.0.8 resolve: 1.22.2 - semver: 7.3.7 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -19129,7 +19106,7 @@ packages: resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} engines: {node: '>=10'} dependencies: - semver: 7.3.7 + semver: 7.5.4 dev: true /npm-lifecycle@3.1.5: @@ -19154,7 +19131,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 3.0.8 - semver: 7.3.7 + semver: 7.5.4 validate-npm-package-name: 3.0.0 dev: true @@ -19174,7 +19151,7 @@ packages: dependencies: npm-install-checks: 4.0.0 npm-package-arg: 8.1.0 - semver: 7.3.7 + semver: 7.5.4 dev: true /npm-registry-fetch@9.0.0: @@ -21249,7 +21226,7 @@ packages: resolution: {integrity: sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ==} engines: {node: '>=10.0'} dependencies: - postcss: 8.4.14 + postcss: 8.4.24 dev: true /postcss-safe-parser@6.0.0(postcss@8.4.14): @@ -21417,7 +21394,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: colorette: 1.4.0 - nanoid: 3.1.32 + nanoid: 3.3.6 source-map: 0.6.1 dev: true @@ -21442,7 +21419,7 @@ packages: resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.1.32 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -22452,7 +22429,7 @@ packages: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} dependencies: rc: 1.2.8 - safe-buffer: 5.2.1 + safe-buffer: 5.2.0 dev: true /registry-auth-token@4.2.1: @@ -22937,7 +22914,7 @@ packages: peerDependencies: postcss: 8.x dependencies: - chalk: 4.1.0 + chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 cssnano: 4.1.10 import-cwd: 3.0.0 @@ -22989,7 +22966,7 @@ packages: peerDependencies: rollup: ^2.0.0 dependencies: - nanoid: 3.1.32 + nanoid: 3.3.6 open: 8.4.0 rollup: 2.35.1 source-map: 0.7.4 @@ -23264,6 +23241,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} @@ -25867,7 +25845,7 @@ packages: resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} engines: {node: '>=10'} dependencies: - lodash: 4.17.20 + lodash: 4.17.21 tr46: 2.1.0 webidl-conversions: 6.1.0 dev: true diff --git a/test/production/jest/server-only.test.ts b/test/production/jest/server-only.test.ts index 8cff3b170cfff4..904ba30198dc6b 100644 --- a/test/production/jest/server-only.test.ts +++ b/test/production/jest/server-only.test.ts @@ -8,10 +8,6 @@ describe('next/jest', () => { next = await createNext({ skipStart: true, files: { - 'app/page.jsx': `import { PI } from '../lib/util' - export default function Home() { - return

{PI}

- }`, 'app/layout.jsx': `export default function RootLayout({ children }) { return ( @@ -19,6 +15,12 @@ describe('next/jest', () => { ) }`, + + 'app/page.jsx': `import { PI } from '../lib/util' + export default function Home() { + return

{PI}

+ }`, + 'app/page.test.jsx': `import { render, screen } from '@testing-library/react' import '@testing-library/jest-dom' import Page from './page' @@ -27,13 +29,42 @@ describe('next/jest', () => { render() expect(screen.getByRole('heading')).toHaveTextContent('3.14') })`, - 'lib/util.js': `/** @jest-environment node */ + + 'app/[blog]/page.jsx': `import { Metadata } from 'next' + + export async function generateMetadata({ + params: { blog: title }, + }) { + return { title, description: 'A blog post about ' + title } + } + + export default function Page({ params }) { + return

All about {params.blog}

+ } + `, + + 'app/[blog]/page.test.jsx': `import { render, screen } from '@testing-library/react' + import '@testing-library/jest-dom' + import Page from './page' + + describe('Blog Page', () => { + it('has the appropriate title', () => { + render() + expect(screen.getByRole('heading')).toHaveTextContent('All about Jane') + }) + }) + `, + + 'lib/util.js': ` import 'server-only' export const PI = 3.14;`, - 'lib/utils.test.ts': `import { PI } from './util' + + 'lib/utils.test.ts': ` + import { PI } from './util' it('works from server-side code', () => { expect(PI).toEqual(3.14) })`, + 'jest.config.js': `module.exports = require('next/jest')({ dir: './' })({ testEnvironment: 'jsdom' })`, }, buildCommand: `yarn jest`, @@ -48,11 +79,11 @@ describe('next/jest', () => { afterAll(() => next.destroy()) - it('can run test against server side components', async () => { + it('can run test against server server only code', async () => { try { await next.start() } finally { - expect(next.cliOutput).toInclude('Tests: 2 passed, 2 total') + expect(next.cliOutput).toInclude('Tests: 3 passed, 3 total') } }) })