diff --git a/packages/cli/package.json b/packages/cli/package.json index a1038ef954..da1ec6f364 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -117,7 +117,7 @@ "run-script-webpack-plugin": "^0.1.0", "semver": "^7.3.2", "style-loader": "^3.3.1", - "swc-loader": "^0.1.15", + "swc-loader": "^0.2.1", "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", "util": "^0.12.3", diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 0e0e5891a3..74640bafd0 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import mockfs from 'mock-fs'; const executeShellCommand = jest.fn(); const commandExists = jest.fn(); @@ -24,7 +25,6 @@ jest.doMock('command-exists', () => commandExists); import { ContainerRunner } from '@backstage/backend-common'; import fs from 'fs-extra'; -import mockfs from 'mock-fs'; import path from 'path'; import { PassThrough } from 'stream'; diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx index def15abf8d..a67eb7eedd 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx @@ -13,6 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +jest.mock('./dom', () => ({ + ...jest.requireActual('./dom'), + useTechDocsReaderDom: jest.fn(), +})); + +jest.mock('../useReaderState', () => ({ + ...jest.requireActual('../useReaderState'), + useReaderState: jest.fn(), +})); + import React from 'react'; import { act, waitFor } from '@testing-library/react'; @@ -25,18 +35,8 @@ import { TechDocsReaderPageProvider, } from '@backstage/plugin-techdocs-react'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; - -const useTechDocsReaderDom = jest.fn(); -jest.mock('./dom', () => ({ - ...jest.requireActual('./dom'), - useTechDocsReaderDom, -})); -const useReaderState = jest.fn(); -jest.mock('../useReaderState', () => ({ - ...jest.requireActual('../useReaderState'), - useReaderState, -})); - +import { useTechDocsReaderDom } from './dom'; +import { useReaderState } from '../useReaderState'; import { TechDocsReaderPageContent } from './TechDocsReaderPageContent'; const mockEntityMetadata = { @@ -92,8 +92,10 @@ describe('', () => { it('should render techdocs page content', async () => { getEntityMetadata.mockResolvedValue(mockEntityMetadata); getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); - useTechDocsReaderDom.mockReturnValue(document.createElement('html')); - useReaderState.mockReturnValue({ state: 'cached' }); + (useTechDocsReaderDom as jest.Mock).mockReturnValue( + document.createElement('html'), + ); + (useReaderState as jest.Mock).mockReturnValue({ state: 'cached' }); await act(async () => { const rendered = await renderInTestApp( @@ -110,10 +112,34 @@ describe('', () => { }); }); + it('should render progress if there is no dom and reader state is checking', async () => { + getEntityMetadata.mockResolvedValue(mockEntityMetadata); + getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); + (useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined); + (useReaderState as jest.Mock).mockReturnValue({ state: 'CHECKING' }); + + await act(async () => { + const rendered = await renderInTestApp( + + + , + ); + + await waitFor(() => { + expect( + rendered.queryByTestId('techdocs-native-shadowroot'), + ).not.toBeInTheDocument(); + expect(rendered.getByRole('progressbar')).toBeInTheDocument(); + }); + }); + }); + it('should not render techdocs content if entity metadata is missing', async () => { getEntityMetadata.mockResolvedValue(undefined); - useTechDocsReaderDom.mockReturnValue(document.createElement('html')); - useReaderState.mockReturnValue({ state: 'cached' }); + (useTechDocsReaderDom as jest.Mock).mockReturnValue( + document.createElement('html'), + ); + (useReaderState as jest.Mock).mockReturnValue({ state: 'cached' }); await act(async () => { const rendered = await renderInTestApp( @@ -136,8 +162,10 @@ describe('', () => { it('should render 404 if there is no dom and reader state is not found', async () => { getEntityMetadata.mockResolvedValue(mockEntityMetadata); getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); - useTechDocsReaderDom.mockReturnValue(undefined); - useReaderState.mockReturnValue({ state: 'CONTENT_NOT_FOUND' }); + (useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined); + (useReaderState as jest.Mock).mockReturnValue({ + state: 'CONTENT_NOT_FOUND', + }); await act(async () => { const rendered = await renderInTestApp( diff --git a/yarn.lock b/yarn.lock index 992d49ca5f..754eee628d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6259,97 +6259,119 @@ "@svgr/plugin-jsx" "^6.3.1" "@svgr/plugin-svgo" "^6.3.1" -"@swc/core-android-arm-eabi@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.160.tgz#f5aaf852e9d104b4ad58d34851bac3bd41a64a60" - integrity sha512-VzFP7tYgvpkUhd8wgyNtERqvoPBBDretyMFxAxPe2SxClaBs9Ka95PdiPPZalRq+vFCb/dFxD8Vhz+XO16Kpjg== +"@swc/core-android-arm-eabi@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.239.tgz#4b9848b9dbeefb9c3de413f668d6c5a2b3f74333" + integrity sha512-v316u9E517XQ48YwtkvfwN3nKw6oirJrBOmniA0IM5qhZYOIHDvm3YEhD+hmlEXWbRJ2iwK3ecN3J/HN725I8g== + dependencies: + "@swc/wasm" "1.2.122" -"@swc/core-android-arm64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.160.tgz#458f7e6aff52958e0764c34500528c18bbb31894" - integrity sha512-m+xqQaa7TqW3Vm9MUvITtdU8OlAc/9yT+TgOS4l8WlfFI87IDnLLfinKKEp+xfKwzYDdIsh+sC+jdGdIBTMB+Q== +"@swc/core-android-arm64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.239.tgz#6f44c684924a62fb22474af49feabd2d33581ead" + integrity sha512-HZRYhiRpTetnABVZIVEVnDDBSu+O/FP8sD1g+/dnYx8RZzbfbAsxvnauTRRuWDaqr3wcjDxGYCHiNf8Chaf2LQ== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-darwin-arm64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.160.tgz#34d48b449de0eae9fddd71b064d36aa5353f22cc" - integrity sha512-9bG70KYKvjNf7tZtjOu1h4kDZPtoidZptIXPGSHuUgJ1BbSJYpfRR5xAmq4k37+GqOjIPJp4+lSGQPa2HfejpA== +"@swc/core-darwin-arm64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.239.tgz#c7339507d9ff62dd89d2e0e9c6c12be964ed6e9d" + integrity sha512-qucvHgJ5VQVZNdQacqbloWDYqZyD1pttBqyRWo3Wqr5mC+JAIJl+JsflFpV8QEgY52aMgk/cLVhTa46Si3L3Jw== -"@swc/core-darwin-x64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.160.tgz#109d92457df928717c73055f01c99ca88815000d" - integrity sha512-+b4HdKAVf/XPZ9DjgG2axGLbquPEuYwEP3zeWgbWn0s0FYQ7WTFxznf3YrTJE9MYadJeCOs3U80E2xVAtRRS9Q== +"@swc/core-darwin-x64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.239.tgz#957d9a6dd4e7ee748c8d76d47e3d91079932b8bf" + integrity sha512-0iunP9diQpjtacY+YQDwWmUANe4nA54aPDcum4O2vnhFeAXWoYX0b7FmYdq7UqxpP5IxcBgQAl7QhEfDnGrvoA== -"@swc/core-freebsd-x64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.160.tgz#debdccce0129aa856e496f06981cc8e8271fcb41" - integrity sha512-E5agJwv+RVMoZ8FQIPSO5wLPDQx6jqcMpV207EB3pPaxPWGe4n3DH3vcibHp80RACDNdiaqo5lBeBnGJI4ithw== +"@swc/core-freebsd-x64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.239.tgz#cb824b681f6efb9456387083990556ac2e2ca16d" + integrity sha512-CA5yf6hd6czwIHlp/89Y03B+19+3EWCAPESjAPmJFjiNv4aGtzkSH+cYljmKYSkkQlYXGdKAc3d5GwL0sUaQgQ== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-linux-arm-gnueabihf@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.160.tgz#27669f1084c152153c017fc320b6a92cd6b71244" - integrity sha512-uCttZRNx+lWVhCYGC6/pGUej08g1SQc5am6R9NVFh111goytcdlPnC4jV8oWzq2QhDWkkKxLoP2CZOytzI4+0w== +"@swc/core-linux-arm-gnueabihf@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.239.tgz#c88aca1b8bcb36eff80a3f6668c80e3a97c2a806" + integrity sha512-/GsCHvbPcsFF6kYiWyDan8zq1t/Jc5/ksMTWuENmokMBGdTECffFZAtx44V25Iw6Ip6Oe5Uzo7Mdabh4U6sbmA== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-linux-arm64-gnu@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.160.tgz#a8ecadee30639c298e9c2175099d55c1c82f912e" - integrity sha512-sB18roiv8m/zsY6tXLSrbUls0eKkSkxOEF0ennXVEtz97rMJ+WWnkOc8gI+rUpj3MHbVAIxyDNyyZU4cH5g1jQ== +"@swc/core-linux-arm64-gnu@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.239.tgz#3e1d113c57d3b031aff78b140dcf3d5bb0b96ec9" + integrity sha512-VZ/oShno1H+ElO5FuhIacSvSgv5Ftzifkv1iAy9pi8e9cV6Y5RCxIEm6C28nCXNiyrSo5/AqqejGEZKt2pEblA== -"@swc/core-linux-arm64-musl@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.160.tgz#1a2cf738c8a394fcb21fe91f13b1fb9c775cca0b" - integrity sha512-PJ7Ukb+BRR3pGYcUag8qRWOB11eByc5YLx/xAMSc3bRmaYW/oj6s8k+1DYiR//BAuNQdf14MpMFzDuWiDEUh7A== +"@swc/core-linux-arm64-musl@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.239.tgz#f7aacbdd2797a35ec5a0c55a128119735f9a0b8e" + integrity sha512-d24/2NEuvRAVFEFNRwwjlzuZhe442oUnhLuWRqh13bRBY7cRde3KIrxl4IMiVd5GvVKUy4JlhClmiV7Su9nVKw== -"@swc/core-linux-x64-gnu@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.160.tgz#f54c4e0510b69d68f56e681050b717991627ad68" - integrity sha512-wVh8Q86xz3t0y5zoUryWQ64bFG/YxdcykBgaog8lU9xkFb1KSqVRE9ia7aKA12/ZtAfpJZLRBleZxBAcaCg9FQ== +"@swc/core-linux-x64-gnu@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.239.tgz#84d64156ccd513319ff30474c5d5feec1f2d30ef" + integrity sha512-OKjj99kfCSrMEvWbWftSAgj29v5TxII+KCAuA284NoGYVcezzaO37C4TfrDjOW5/wtvDfWk97w8FfsOmrWKl0A== -"@swc/core-linux-x64-musl@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.160.tgz#6f8ec092d8b65a9750faf0a2323b52f39c5bd540" - integrity sha512-AnWdarl9WWuDdbc2AX1w76W1jaekSCokxRrWdSGUgQytaZRtybKZEgThvJCQDrSlYQD4XDOhhVRCurTvy4JsfQ== +"@swc/core-linux-x64-musl@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.239.tgz#d40c6b98eab92aea3920c3b63055f661491c1403" + integrity sha512-BsX/ivpDmYFeqOHz5gA5OqtskO5mkEKyBRhhVnzc9AG9tbhz8X5zZMLPV398RCn48lmS/uS8MPXHkJKAlYA1BA== -"@swc/core-win32-arm64-msvc@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.160.tgz#b4f226ab86e550762b5cc83d0ebe4cf43f1a3624" - integrity sha512-ScL27mZRTwEIqBIv9RY34nQvyBvhosiM5Lus4dCFmS71flPcAEv7hJgy4GE3YUQV0ryGNK9NaO43H8sAyNwKVQ== +"@swc/core-win32-arm64-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.239.tgz#2aa64338bf111109bef89e42f12e57cb2812edea" + integrity sha512-C5es8Aou6+PnZmk+h+Kay/UCctkwCPRonwRajLDa88x2elhmxE1pdLIPAJVp5RpOlFoPRbJAkc5I+4fV5njZ9g== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-win32-ia32-msvc@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.160.tgz#243bb5b15eab76f4c8f004381d63c6d72a8cef68" - integrity sha512-e75zbWlhlyrd5HdrYzELa6OlZxgyaVpJj+c9xMD95HcdklVbmsyt1vuqRxMyqaZUDLyehwwCDRX/ZeDme//M/A== +"@swc/core-win32-ia32-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.239.tgz#842d747ec3c864f4f9217f1b1964cb814ee51dc7" + integrity sha512-24VMplxQTtOJk7cxpBViq9HozSc6Pg6MxBMuudTmGh6z3L//VxLn0wpUR9jLEvRUk/2i1p1DKpc6RQ0tYcNf9A== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-win32-x64-msvc@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.160.tgz#8708986433e891687bb4a836a683f90bc95e1fce" - integrity sha512-GAYT+WzYQY4sr17S21yJh4flJp/sQ62mAs6RfN89p7jIWgm0Bl/SooRl6ocsftTlnZm7K7QC8zmQVeNCWDCLPw== +"@swc/core-win32-x64-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.239.tgz#e0bbbedfcebf2dcf876cdfb438318407cbe4b288" + integrity sha512-qktIdFdGS6dpDnOGnImrOA9GpNMsVaGAycGcvoqoUYEkPf8dFCLKthEOzqA1fU01wKn3r1M5mi1eluM1ld5Hng== "@swc/core@^1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.160.tgz#d91730a5021d4c8aef87855dde11fc8931496176" - integrity sha512-nXoC7HA+aY7AtBPsiqGXocoRLAzzA7MV+InWQtILN7Uru4hB9+rLnLCPc3zSdg7pgnxJLa1tHup1Rz7Vv6TcIQ== + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.239.tgz#4a28f9962f5e7ae1094368243c52168d36258eef" + integrity sha512-U3tbnOBykfLGIJRQ+bSxVsgyTPQ5l9zTe2YQq3GULnxe6rfsgEYN54Uelp9vr3w7LXfW0k+bteXS6YGLpmnEfw== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.160" - "@swc/core-android-arm64" "1.2.160" - "@swc/core-darwin-arm64" "1.2.160" - "@swc/core-darwin-x64" "1.2.160" - "@swc/core-freebsd-x64" "1.2.160" - "@swc/core-linux-arm-gnueabihf" "1.2.160" - "@swc/core-linux-arm64-gnu" "1.2.160" - "@swc/core-linux-arm64-musl" "1.2.160" - "@swc/core-linux-x64-gnu" "1.2.160" - "@swc/core-linux-x64-musl" "1.2.160" - "@swc/core-win32-arm64-msvc" "1.2.160" - "@swc/core-win32-ia32-msvc" "1.2.160" - "@swc/core-win32-x64-msvc" "1.2.160" + "@swc/core-android-arm-eabi" "1.2.239" + "@swc/core-android-arm64" "1.2.239" + "@swc/core-darwin-arm64" "1.2.239" + "@swc/core-darwin-x64" "1.2.239" + "@swc/core-freebsd-x64" "1.2.239" + "@swc/core-linux-arm-gnueabihf" "1.2.239" + "@swc/core-linux-arm64-gnu" "1.2.239" + "@swc/core-linux-arm64-musl" "1.2.239" + "@swc/core-linux-x64-gnu" "1.2.239" + "@swc/core-linux-x64-musl" "1.2.239" + "@swc/core-win32-arm64-msvc" "1.2.239" + "@swc/core-win32-ia32-msvc" "1.2.239" + "@swc/core-win32-x64-msvc" "1.2.239" "@swc/jest@^0.2.20": - version "0.2.20" - resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.20.tgz#2bddb4348fb730296b86cdcd96748be131b11395" - integrity sha512-5qSUBYY1wyIMn7p0Vl9qqV4hMI69oJwZCIPUpBsTFWN2wlwn6RDugzdgCn+bLXVYh+Cxi8bJcZ1uumDgsoL+FA== + version "0.2.22" + resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" + integrity sha512-PIUIk9IdB1oAVfF9zNIfYoMBoEhahrrSvyryFANas7swC1cF0L5HR0f9X4qfet46oyCHCBtNcSpN0XJEOFIKlw== dependencies: "@jest/create-cache-key-function" "^27.4.2" +"@swc/wasm@1.2.122": + version "1.2.122" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.122.tgz#87a5e654b26a71b2e84b801f41e45f823b856639" + integrity sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ== + +"@swc/wasm@1.2.130": + version "1.2.130" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" + integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== + "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -24763,12 +24785,10 @@ swap-case@^2.0.2: dependencies: tslib "^2.0.3" -swc-loader@^0.1.15: - version "0.1.15" - resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.1.15.tgz#cb9c630ccfbb46dabc5aebc5560cced658e32992" - integrity sha512-cn1WPIeQJvXM4bbo3OwdEIapsQ4uUGOfyFj0h2+2+brT0k76DCGnZXDE2KmcqTd2JSQ+b61z2NPMib7eEwMYYw== - dependencies: - loader-utils "^2.0.0" +swc-loader@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.1.tgz#43f2d1a746cf985476ca75ecac6234c7314fd9f8" + integrity sha512-opJG9R5Dl+Fa0QihOZO9v6vueB+JzRhJZw+c4ZRCqUHG2RZL10eHZRHMdQoDz6bvLp7XWe7XBIMUkuWtoGfMJw== swr@^1.1.2: version "1.3.0"