From 316e940b6522a7d6782fd08108ee5a0f3957c734 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Thu, 11 Dec 2025 10:43:07 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20playwright,=20dotenv=20=ED=8C=A8?= =?UTF-8?q?=ED=82=A4=EC=A7=80=20=EC=84=A4=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 8 +++++ package.json | 5 ++- playwright.config.ts | 78 ++++++++++++++++++++++++++++++++++++++++++++ pnpm-lock.yaml | 58 +++++++++++++++++++++++++++++--- 4 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 playwright.config.ts diff --git a/.gitignore b/.gitignore index a46e550c..f60f5a54 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,11 @@ next-env.d.ts *storybook.log storybook-static + +# Playwright +node_modules/ +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ +/playwright/.auth/ diff --git a/package.json b/package.json index a162a7f2..4ed30cd7 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage", - "sprite": "node scripts/sprite/generate-sprite.cjs" + "test:playwright": "playwright test", + "test:playwright:ui": "playwright test --ui" }, "devEngines": { "runtime": { @@ -61,6 +62,7 @@ "@commitlint/config-conventional": "^20.0.0", "@eslint/eslintrc": "^3", "@faker-js/faker": "^10.1.0", + "@playwright/test": "^1.57.0", "@storybook/addon-a11y": "^10.0.5", "@storybook/addon-docs": "^10.0.5", "@storybook/nextjs": "^10.1.4", @@ -79,6 +81,7 @@ "@typescript-eslint/parser": "^8.46.1", "babel-plugin-react-compiler": "^1.0.0", "chromatic": "^13.3.4", + "dotenv": "^17.2.3", "eslint": "^9", "eslint-config-next": "16.0.1", "eslint-config-prettier": "^10.1.8", diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 00000000..9f999ce3 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,78 @@ +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.test') }); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './e2e/tests', + /* 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://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* 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: 'pnpm dev', + url: 'http://localhost:3000', + reuseExistingServer: !process.env.CI, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af9ec79f..97614f8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) next: specifier: 16.0.7 - version: 16.0.7(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + version: 16.0.7(@babel/core@7.28.4)(@playwright/test@1.57.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react: specifier: 19.2.1 version: 19.2.1 @@ -66,6 +66,9 @@ importers: '@faker-js/faker': specifier: ^10.1.0 version: 10.1.0 + '@playwright/test': + specifier: ^1.57.0 + version: 1.57.0 '@storybook/addon-a11y': specifier: ^10.0.5 version: 10.0.5(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)) @@ -74,7 +77,7 @@ importers: version: 10.0.5(@types/react@19.2.2)(esbuild@0.27.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(webpack@5.102.1(esbuild@0.27.1)) '@storybook/nextjs': specifier: ^10.1.4 - version: 10.1.4(@types/webpack@5.28.5(esbuild@0.27.1))(babel-plugin-macros@3.1.0)(esbuild@0.27.1)(msw@2.11.2(@types/node@20.19.21)(typescript@5.9.3))(next@16.0.7(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(type-fest@4.41.0)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.27.1)) + version: 10.1.4(@types/webpack@5.28.5(esbuild@0.27.1))(babel-plugin-macros@3.1.0)(esbuild@0.27.1)(msw@2.11.2(@types/node@20.19.21)(typescript@5.9.3))(next@16.0.7(@babel/core@7.28.4)(@playwright/test@1.57.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(type-fest@4.41.0)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.27.1)) '@svgr/webpack': specifier: ^8.1.0 version: 8.1.0(typescript@5.9.3) @@ -120,6 +123,9 @@ importers: chromatic: specifier: ^13.3.4 version: 13.3.4 + dotenv: + specifier: ^17.2.3 + version: 17.2.3 eslint: specifier: ^9 version: 9.37.0(jiti@2.6.1) @@ -1912,6 +1918,11 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@playwright/test@1.57.0': + resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} + engines: {node: '>=18'} + hasBin: true + '@pmmmwh/react-refresh-webpack-plugin@0.5.17': resolution: {integrity: sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==} engines: {node: '>= 10.13'} @@ -3735,6 +3746,10 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -4210,6 +4225,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5602,6 +5622,16 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} + playwright-core@1.57.0: + resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.57.0: + resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + engines: {node: '>=18'} + hasBin: true + pony-cause@1.1.1: resolution: {integrity: sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==} engines: {node: '>=12.0.0'} @@ -9514,6 +9544,10 @@ snapshots: '@pkgr/core@0.2.9': {} + '@playwright/test@1.57.0': + dependencies: + playwright: 1.57.0 + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(esbuild@0.27.1))(react-refresh@0.14.2)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.27.1))': dependencies: ansi-html: 0.0.9 @@ -9858,7 +9892,7 @@ snapshots: react: 19.2.1 react-dom: 19.2.1(react@19.2.1) - '@storybook/nextjs@10.1.4(@types/webpack@5.28.5(esbuild@0.27.1))(babel-plugin-macros@3.1.0)(esbuild@0.27.1)(msw@2.11.2(@types/node@20.19.21)(typescript@5.9.3))(next@16.0.7(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(type-fest@4.41.0)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.27.1))': + '@storybook/nextjs@10.1.4(@types/webpack@5.28.5(esbuild@0.27.1))(babel-plugin-macros@3.1.0)(esbuild@0.27.1)(msw@2.11.2(@types/node@20.19.21)(typescript@5.9.3))(next@16.0.7(@babel/core@7.28.4)(@playwright/test@1.57.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(type-fest@4.41.0)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.27.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) @@ -9882,7 +9916,7 @@ snapshots: css-loader: 6.11.0(webpack@5.102.1(esbuild@0.27.1)) image-size: 2.0.2 loader-utils: 3.3.1 - next: 16.0.7(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + next: 16.0.7(@babel/core@7.28.4)(@playwright/test@1.57.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) node-polyfill-webpack-plugin: 2.0.1(webpack@5.102.1(esbuild@0.27.1)) postcss: 8.5.6 postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.27.1)) @@ -11611,6 +11645,8 @@ snapshots: dependencies: is-obj: 2.0.0 + dotenv@17.2.3: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -12308,6 +12344,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -13568,7 +13607,7 @@ snapshots: neo-async@2.6.2: {} - next@16.0.7(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + next@16.0.7(@babel/core@7.28.4)(@playwright/test@1.57.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@next/env': 16.0.7 '@swc/helpers': 0.5.15 @@ -13586,6 +13625,7 @@ snapshots: '@next/swc-linux-x64-musl': 16.0.7 '@next/swc-win32-arm64-msvc': 16.0.7 '@next/swc-win32-x64-msvc': 16.0.7 + '@playwright/test': 1.57.0 babel-plugin-react-compiler: 1.0.0 sharp: 0.34.4 transitivePeerDependencies: @@ -13937,6 +13977,14 @@ snapshots: dependencies: find-up: 6.3.0 + playwright-core@1.57.0: {} + + playwright@1.57.0: + dependencies: + playwright-core: 1.57.0 + optionalDependencies: + fsevents: 2.3.2 + pony-cause@1.1.1: {} possible-typed-array-names@1.1.0: {} From 1dca8d8bf127c388fccd9c658eab22e503eb322f Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Thu, 11 Dec 2025 10:43:27 +0900 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20msw=EA=B0=80=20=ED=99=98=EA=B2=BD?= =?UTF-8?q?=EB=B3=80=EC=88=98=EC=97=90=20=EC=9D=98=ED=95=B4=20on/off=20?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mock/index.ts | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/mock/index.ts b/src/mock/index.ts index e39c16e5..25933f76 100644 --- a/src/mock/index.ts +++ b/src/mock/index.ts @@ -11,23 +11,16 @@ declare global { } } -const config = { - enabledInDevelopment: true, - enabledInProduction: true, - onUnhandledRequest: 'bypass' as const, // bypass | warn | error -}; - export const initMocks = async () => { // MSW 활성화 여부 확인 - const isDev = process.env.NODE_ENV === 'development'; - const shouldEnable = isDev ? config.enabledInDevelopment : config.enabledInProduction; + const shouldEnable = process.env.NEXT_PUBLIC_MSW_ENABLED === 'true'; if (!shouldEnable) return; if (typeof window === 'undefined') { // Server const { server } = await import('./server'); server.listen({ - onUnhandledRequest: config.onUnhandledRequest, + onUnhandledRequest: 'bypass', }); console.log('🔶 MSW Server ready'); } else { @@ -41,7 +34,7 @@ export const initMocks = async () => { worker.use(...handlers); // 최초 실행: start() await worker.start({ - onUnhandledRequest: config.onUnhandledRequest, + onUnhandledRequest: 'bypass', }); console.log('🔷 MSW Client ready'); } else { From 719e255998701a3ee096c4304da2db22cc2a0dea Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Thu, 11 Dec 2025 10:43:46 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20E2E=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- e2e/tests/profile.test.ts | 17 +++++++++++++++++ src/app/(user)/profile/not-found.tsx | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 e2e/tests/profile.test.ts diff --git a/e2e/tests/profile.test.ts b/e2e/tests/profile.test.ts new file mode 100644 index 00000000..996a48e9 --- /dev/null +++ b/e2e/tests/profile.test.ts @@ -0,0 +1,17 @@ +import { expect, test } from '@playwright/test'; + +test('나의 프로필 페이지로 접속 시 마이페이지로 리다이렉트 되는 지 테스트', async ({ page }) => { + // 나의 프로필 페이지 방문 + await page.goto('/profile/1'); + + // redirect 대기 + await expect(page).toHaveURL('/mypage'); +}); + +test('존재하지 않는 프로필 페이지로 접속 시 404 리다이렉트 되는 지 테스트', async ({ page }) => { + // 나의 프로필 페이지 방문 + await page.goto('/profile/4'); + + // redirect 대기 + await expect(page.getByTestId('not-found-user')).toBeVisible(); +}); diff --git a/src/app/(user)/profile/not-found.tsx b/src/app/(user)/profile/not-found.tsx index 62ab4b34..c5834ac3 100644 --- a/src/app/(user)/profile/not-found.tsx +++ b/src/app/(user)/profile/not-found.tsx @@ -2,7 +2,7 @@ import Link from 'next/link'; const ProfileNotFound = () => { return ( -
+

존재하지 않는 유저입니다.

메인으로 돌아가기
From bdcdb4ab60dacc08c5b45fcf07e3ac71aa266bf4 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Thu, 11 Dec 2025 11:09:07 +0900 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20playwright=20test=EB=8A=94=20test=20?= =?UTF-8?q?coverage=EC=97=90=20=ED=8F=AC=ED=95=A8=EB=90=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jest.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jest.config.js b/jest.config.js index e8f08cfc..c01b7b82 100644 --- a/jest.config.js +++ b/jest.config.js @@ -12,8 +12,8 @@ const customJestConfig = { '^@/(.*)$': '/src/$1', }, testMatch: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'], - coveragePathIgnorePatterns: ['/node_modules/'], - testPathIgnorePatterns: ['/node_modules/'], + coveragePathIgnorePatterns: ['/node_modules/', '/.next/', '/e2e/'], + testPathIgnorePatterns: ['/node_modules/', '/.next/', '/e2e/'], collectCoverageFrom: [ 'src/**/*.{js,jsx,ts,tsx}', '!src/**/*.d.ts', From a76b4576a1dc895896ecad6c7560607feb7fab98 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Thu, 11 Dec 2025 13:03:58 +0900 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20e2e=20test=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95(=EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=ED=94=84=EB=A1=9C=ED=95=84=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=B0=A9=EB=AC=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- e2e/tests/profile.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/tests/profile.test.ts b/e2e/tests/profile.test.ts index 996a48e9..1000f4a9 100644 --- a/e2e/tests/profile.test.ts +++ b/e2e/tests/profile.test.ts @@ -9,7 +9,7 @@ test('나의 프로필 페이지로 접속 시 마이페이지로 리다이렉 }); test('존재하지 않는 프로필 페이지로 접속 시 404 리다이렉트 되는 지 테스트', async ({ page }) => { - // 나의 프로필 페이지 방문 + // 존재하지 않는 프로필 페이지 방문 await page.goto('/profile/4'); // redirect 대기 From f46dfb9d45025e03b86ca2616fc35e7b19232b5e Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Thu, 11 Dec 2025 13:05:57 +0900 Subject: [PATCH 6/6] =?UTF-8?q?fix:=20initMocks=20index.ts=20-=20SetupWork?= =?UTF-8?q?er=20type=20import=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mock/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mock/index.ts b/src/mock/index.ts index 25933f76..d1cc1c38 100644 --- a/src/mock/index.ts +++ b/src/mock/index.ts @@ -1,6 +1,6 @@ // src/mocks/index.ts -import { SetupWorker } from 'msw/browser'; +import type { SetupWorker } from 'msw/browser'; import { handlers } from './handlers';