From c4d3c03a18b1579fb26d8de4ed5eed6fb053fc9b Mon Sep 17 00:00:00 2001 From: Seyeong Jeon <86130706+skiende74@users.noreply.github.com> Date: Tue, 8 Oct 2024 10:15:53 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[FE]=20=EC=A0=91=EA=B7=BC=EC=84=B1=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=EC=9D=84=20=EC=9C=84=ED=95=B4=20=EC=9D=B8?= =?UTF-8?q?=ED=92=8B=ED=95=84=EB=93=9C=EC=9D=98=20label/input=EB=A5=BC=20?= =?UTF-8?q?=EC=84=9C=EB=A1=9C=20htmlFor,=20id=EB=A1=9C=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=ED=95=9C=EB=8B=A4.=20(#758)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/playwright-report/index.html | 68 +++++++++++++++++++ .../NewChecklist/NewRoomInfoForm/Address.tsx | 6 +- .../NewRoomInfoForm/DepositAndRent.tsx | 17 ++++- .../NewRoomInfoForm/MaintenanceFee.tsx | 11 ++- .../NewRoomInfoForm/OccupancyMonth.tsx | 10 ++- .../NewRoomInfoForm/RealEstate.tsx | 3 +- .../NewRoomInfoForm/RoomContractTerm.tsx | 11 ++- .../NewRoomInfoForm/RoomFloor.tsx | 3 +- .../NewChecklist/NewRoomInfoForm/RoomName.tsx | 4 +- .../NewChecklist/NewRoomInfoForm/RoomSize.tsx | 4 +- .../NewRoomInfoForm/RoomStructure.tsx | 19 +++--- .../src/components/_common/Badge/Badge.tsx | 2 +- .../_common/FormField/FormField.tsx | 21 +++--- frontend/test-results/.last-run.json | 4 ++ 14 files changed, 148 insertions(+), 35 deletions(-) create mode 100644 frontend/playwright-report/index.html create mode 100644 frontend/test-results/.last-run.json diff --git a/frontend/playwright-report/index.html b/frontend/playwright-report/index.html new file mode 100644 index 000000000..afc2c0879 --- /dev/null +++ b/frontend/playwright-report/index.html @@ -0,0 +1,68 @@ + + + + + + + + + Playwright Test Report + + + + +
+ + + \ No newline at end of file diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/Address.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/Address.tsx index 161dabd94..1e13a1a1b 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/Address.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/Address.tsx @@ -12,11 +12,11 @@ const Address = () => { return ( - + {address ? ( - + ) : ( - + )} {/*실시간 위치 모달*/} diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/DepositAndRent.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/DepositAndRent.tsx index 9b0773a04..d4c0f249b 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/DepositAndRent.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/DepositAndRent.tsx @@ -17,9 +17,22 @@ const DepositAndRent = () => { - + - + diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/MaintenanceFee.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/MaintenanceFee.tsx index 8a1016ba5..73bf9f1b6 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/MaintenanceFee.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/MaintenanceFee.tsx @@ -12,9 +12,16 @@ const MaintenanceFee = () => { return ( - + - + diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/OccupancyMonth.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/OccupancyMonth.tsx index 7574aeb4c..7483c3c50 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/OccupancyMonth.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/OccupancyMonth.tsx @@ -18,9 +18,15 @@ const OccupancyMonth = () => { return ( - + - + { return ( - + { onChange={actions.onChange} name={'realEstate'} value={realEstate} + id="realEstate" /> diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomContractTerm.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomContractTerm.tsx index 9bfe2a479..843e08204 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomContractTerm.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomContractTerm.tsx @@ -13,9 +13,16 @@ const RoomContractTerm = () => { return ( - + - + diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomFloor.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomFloor.tsx index a33be213b..8021d6ad6 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomFloor.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomFloor.tsx @@ -21,7 +21,7 @@ const RoomFloor = () => { }; return ( - + { name="floor" value={floor} onChange={actions.onChange} + id="floor" /> diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomName.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomName.tsx index b1604f176..a2bbbee15 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomName.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomName.tsx @@ -14,8 +14,8 @@ const RoomName = () => { return ( - - + + ); diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomSize.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomSize.tsx index 5d2a154e6..6a5f97a94 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomSize.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomSize.tsx @@ -12,9 +12,9 @@ const RoomSize = () => { return ( - + - + diff --git a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomStructure.tsx b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomStructure.tsx index 805aa2ec5..370b454b3 100644 --- a/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomStructure.tsx +++ b/frontend/src/components/NewChecklist/NewRoomInfoForm/RoomStructure.tsx @@ -21,17 +21,18 @@ const RoomStructure = () => { return ( - + {roomStructures.map(structure => ( - handleClickTagButton(structure)} - /> + ))} diff --git a/frontend/src/components/_common/Badge/Badge.tsx b/frontend/src/components/_common/Badge/Badge.tsx index 6174aa1f5..6dbe05813 100644 --- a/frontend/src/components/_common/Badge/Badge.tsx +++ b/frontend/src/components/_common/Badge/Badge.tsx @@ -21,7 +21,7 @@ const Badge = ({ size = 'short', label, isSelected = false, onClick, name, ...re }; return ( - + {label} ); diff --git a/frontend/src/components/_common/FormField/FormField.tsx b/frontend/src/components/_common/FormField/FormField.tsx index 2404685b3..f814ee01f 100644 --- a/frontend/src/components/_common/FormField/FormField.tsx +++ b/frontend/src/components/_common/FormField/FormField.tsx @@ -1,5 +1,5 @@ import styled from '@emotion/styled'; -import { HTMLAttributes } from 'react'; +import { ElementType, HTMLAttributes, LabelHTMLAttributes } from 'react'; import { InputRequiredDot } from '@/assets/assets'; import Input from '@/components/_common/Input/Input'; @@ -8,9 +8,10 @@ import theme from '@/styles/theme'; type GetProps = T extends React.FC ? P : never; -interface LabelProps extends HTMLAttributes { +interface LabelProps extends LabelHTMLAttributes { label: string; required?: boolean; + as?: ElementType; } const FormFieldWrapper = styled.div<{ rowGap?: string }>` @@ -21,13 +22,17 @@ const FormFieldWrapper = styled.div<{ rowGap?: string }>` `; const FormField = Object.assign(FormFieldWrapper, { - Label: ({ label, required = false, ...rest }: LabelProps) => ( - - {label} - {required && } - + Label: ({ label, required = false, ...rest }: LabelProps) => { + return ( + + {label} + {required && } + + ); + }, + TextBox: ({ text, ...rest }: { text: string } & HTMLAttributes) => ( + {text} ), - TextBox: ({ text }: { text: string }) => {text}, Input: ({ ...rest }: GetProps) => , ErrorMessage: ({ value, ...rest }: { value?: string } & HTMLAttributes) => ( {value ?? ''} diff --git a/frontend/test-results/.last-run.json b/frontend/test-results/.last-run.json new file mode 100644 index 000000000..344ea9e2c --- /dev/null +++ b/frontend/test-results/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "interrupted", + "failedTests": [] +} \ No newline at end of file From 3d2da54d2ee65420f698d8a157fae8c5bd4755d8 Mon Sep 17 00:00:00 2001 From: Seyeong Jeon <86130706+skiende74@users.noreply.github.com> Date: Tue, 8 Oct 2024 10:20:03 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[FE]=20playwright=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=EC=84=B8=ED=8C=85=ED=95=9C=EB=8B=A4.=20(#761)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/playwright.yml | 32 +++++++++++ frontend/.gitignore | 6 +- frontend/jest.config.js | 1 + frontend/package.json | 3 + frontend/playwright.config.ts | 80 +++++++++++++++++++++++++++ frontend/src/e2e/newChecklist.spec.ts | 10 ++++ frontend/tsconfig.json | 2 +- frontend/yarn.lock | 70 +++++++++++++++++++++-- 8 files changed, 198 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/playwright.yml create mode 100644 frontend/playwright.config.ts create mode 100644 frontend/src/e2e/newChecklist.spec.ts diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 000000000..71d867257 --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,32 @@ +name: Playwright Tests +on: + pull_request: + branches: [main, dev-fe] +jobs: + test: + timeout-minutes: 10 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: | + cd frontend + npm install -g yarn && yarn + - name: Install Playwright Browsers + run: | + cd frontend + yarn playwright install --with-deps + - name: Run Playwright tests + run: | + cd frontend + yarn playwright test + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 + working-directory: frontend diff --git a/frontend/.gitignore b/frontend/.gitignore index 411160487..23a606e53 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -23,4 +23,8 @@ stories .env.sentry-build-plugin -private* \ No newline at end of file +private* +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/frontend/jest.config.js b/frontend/jest.config.js index 7fccaac75..9b17aa539 100644 --- a/frontend/jest.config.js +++ b/frontend/jest.config.js @@ -9,4 +9,5 @@ module.exports = { '\\.svg': '/src/mocks/svg.ts', }, testEnvironment: 'jest-environment-jsdom', + testPathIgnorePatterns: ['\\.spec\\.ts$'], }; diff --git a/frontend/package.json b/frontend/package.json index db790fc0c..a3e4ade62 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,6 +15,7 @@ "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "test": "concurrently --names ,[TYPE] --prefix {name} \"jest\" \"tsc --noEmit\"", + "e2e": "playwright test", "postinstall": "cd .. && husky frontend/.husky", "format": "prettier --cache --write .", "lint": "eslint --cache .", @@ -44,6 +45,7 @@ "devDependencies": { "@chromatic-com/storybook": "^1.6.1", "@eslint/js": "^8.6.0", + "@playwright/test": "^1.47.2", "@sentry/webpack-plugin": "^2.22.4", "@storybook/addon-docs": "^8.3.0", "@storybook/addon-essentials": "^8.2.4", @@ -62,6 +64,7 @@ "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.0", "@types/jest": "^29.5.12", + "@types/node": "^22.7.4", "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "@webpack-cli/generators": "^3.0.7", diff --git a/frontend/playwright.config.ts b/frontend/playwright.config.ts new file mode 100644 index 000000000..2f8b7ed88 --- /dev/null +++ b/frontend/playwright.config.ts @@ -0,0 +1,80 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// import path from 'path'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './src/e2e', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + actionTimeout: 5000, // await 타임아웃 : 5초로 설정 + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://127.0.0.1:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); diff --git a/frontend/src/e2e/newChecklist.spec.ts b/frontend/src/e2e/newChecklist.spec.ts new file mode 100644 index 000000000..bfd52e358 --- /dev/null +++ b/frontend/src/e2e/newChecklist.spec.ts @@ -0,0 +1,10 @@ +import { test } from '@playwright/test'; + +test('빈 체크리스트를 제출할 수 있다.', async ({ page }) => { + await page.goto('http://localhost:3000/'); + await page.getByRole('button', { name: '방끗 둘러보기' }).click(); + await page.getByRole('button', { name: '전체 보기' }).click(); + await page.getByLabel('add').click(); + await page.getByRole('button', { name: '저장' }).click(); + await page.getByRole('button', { name: '체크리스트 저장하기' }).click(); +}); diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index b7bca3981..19b902153 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -20,5 +20,5 @@ "strict": true, "sourceMap": true }, - "include": ["src/**/*"] + "include": ["src/**/*", "*.ts"] } diff --git a/frontend/yarn.lock b/frontend/yarn.lock index e2293cc67..9e5d54231 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2858,6 +2858,13 @@ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== +"@playwright/test@^1.47.2": + version "1.47.2" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.47.2.tgz#dbe7051336bfc5cc599954214f9111181dbc7475" + integrity sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ== + dependencies: + playwright "1.47.2" + "@polka/url@^1.0.0-next.24": version "1.0.0-next.25" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" @@ -4233,6 +4240,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^22.7.4": + version "22.7.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc" + integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg== + dependencies: + undici-types "~6.19.2" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -8039,6 +8053,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -12353,6 +12372,20 @@ pkg-types@^1.1.1: mlly "^1.7.1" pathe "^1.1.2" +playwright-core@1.47.2: + version "1.47.2" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.47.2.tgz#7858da9377fa32a08be46ba47d7523dbd9460a4e" + integrity sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ== + +playwright@1.47.2: + version "1.47.2" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.47.2.tgz#155688aa06491ee21fb3e7555b748b525f86eb20" + integrity sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA== + dependencies: + playwright-core "1.47.2" + optionalDependencies: + fsevents "2.3.2" + polished@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548" @@ -14039,7 +14072,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -14142,7 +14184,14 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -14912,6 +14961,11 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -15874,8 +15928,7 @@ workbox-window@7.1.0: "@types/trusted-types" "^2.0.2" workbox-core "7.1.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - name wrap-ansi-cjs +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -15893,6 +15946,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"