diff --git a/apps/pwa/package.json b/apps/pwa/package.json index 389f60c..59330c0 100644 --- a/apps/pwa/package.json +++ b/apps/pwa/package.json @@ -8,7 +8,10 @@ "build": "tsc && vite build", "preview": "vite preview", "typecheck": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "test:e2e": "playwright test", + "test:e2e:ui": "playwright test --ui", + "test:e2e:headed": "playwright test --headed" }, "dependencies": { "@dnd-kit/core": "^6.3.1", @@ -31,6 +34,7 @@ "zustand": "5.0.14" }, "devDependencies": { + "@playwright/test": "1.60.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@types/react": "^19.0.0", diff --git a/package.json b/package.json index e6e84f2..9c2094e 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "dev:pwa": "pnpm --filter @familysync/pwa dev", "build": "pnpm --filter @familysync/api build && pnpm --filter @familysync/pwa build", "test": "pnpm --filter @familysync/api test", + "test:e2e": "pnpm --filter @familysync/pwa test:e2e", "lint": "pnpm -r lint", "typecheck": "pnpm -r typecheck" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbab6bf..52db3ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,6 +123,9 @@ importers: specifier: 5.0.14 version: 5.0.14(@types/react@19.2.16)(react@19.2.7) devDependencies: + '@playwright/test': + specifier: 1.60.0 + version: 1.60.0 '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.9.1 @@ -1251,6 +1254,11 @@ packages: '@oxc-project/types@0.133.0': resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + '@preact/signals-core@1.14.2': resolution: {integrity: sha512-RZHdBj9ZF4n40Rp4jS052EHHjBWf96P9oNdXPfhQTovCuWY9iQn3Gq+gOTJSgBO9A/JBuPfMOWsSX/lIU9Pc/A==} @@ -2136,6 +2144,11 @@ packages: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} + 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} @@ -2644,6 +2657,16 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -4319,6 +4342,10 @@ snapshots: '@oxc-project/types@0.133.0': {} + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + '@preact/signals-core@1.14.2': {} '@preact/signals@2.9.1(preact@10.29.2)': @@ -5129,6 +5156,9 @@ snapshots: jsonfile: 6.2.1 universalify: 2.0.1 + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -5610,6 +5640,14 @@ snapshots: picomatch@4.0.4: {} + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 + possible-typed-array-names@1.1.0: {} postcss@8.5.15: