From c0a33473f407e18656530b5ef84fd8ab4531b8b0 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Sun, 29 Mar 2026 10:50:57 -0700 Subject: [PATCH] chore: update dependencies --- pnpm-lock.yaml | 77 ++++++++++++++++++++++++++++++++- web/e2e/reviews.spec.ts | 25 +++++++++++ web/e2e/search.spec.ts | 25 +++++++++++ web/e2e/settings.spec.ts | 31 +++++++++++++ web/e2e/workspaces.spec.ts | 25 +++++++++++ web/test-results/.last-run.json | 4 ++ 6 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 web/e2e/reviews.spec.ts create mode 100644 web/e2e/search.spec.ts create mode 100644 web/e2e/settings.spec.ts create mode 100644 web/e2e/workspaces.spec.ts create mode 100644 web/test-results/.last-run.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36994d9..99e74b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,11 @@ settings: importers: - .: {} + .: + devDependencies: + husky: + specifier: ^9.0.0 + version: 9.1.7 backend: dependencies: @@ -198,6 +202,9 @@ importers: '@bytelyst/telemetry-client': specifier: ^0.1.0 version: 0.1.0 + '@bytelyst/ui': + specifier: file:../../learning_ai_common_plat/packages/ui + version: file:../learning_ai_common_plat/packages/ui(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) lucide-react: specifier: ^0.575.0 version: 0.575.0(react@19.2.0) @@ -965,6 +972,12 @@ packages: fastify: optional: true + '@bytelyst/ui@file:../learning_ai_common_plat/packages/ui': + resolution: {directory: ../learning_ai_common_plat/packages/ui, type: directory} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + '@csstools/color-helpers@6.0.2': resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} engines: {node: '>=20.19.0'} @@ -1697,6 +1710,19 @@ packages: '@radix-ui/primitive@1.1.3': resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + '@radix-ui/react-alert-dialog@1.1.15': + resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-collection@1.1.7': resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: @@ -2991,6 +3017,10 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3842,6 +3872,11 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -4273,6 +4308,11 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@0.460.0: + resolution: {integrity: sha512-BVtq/DykVeIvRTJvRAgCsOwaGL8Un3Bxh8MbDxMhEWlZay3T4IpEKDEpwt5KZ0KJMHzgm6jrltxlT5eXOWXDHg==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + lucide-react@0.575.0: resolution: {integrity: sha512-VuXgKZrk0uiDlWjGGXmKV6MSk9Yy4l10qgVvzGn2AWBx1Ylt0iBexKOAoA6I7JO3m+M9oeovJd3yYENfkUbOeg==} peerDependencies: @@ -6758,6 +6798,19 @@ snapshots: optionalDependencies: fastify: 5.7.4 + '@bytelyst/ui@file:../learning_ai_common_plat/packages/ui(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.0) + clsx: 2.1.1 + lucide-react: 0.460.0(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + '@csstools/color-helpers@6.0.2': {} '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': @@ -7592,6 +7645,20 @@ snapshots: '@radix-ui/primitive@1.1.3': {} + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.0) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.0) @@ -9032,6 +9099,8 @@ snapshots: clone@1.0.4: {} + clsx@2.1.1: {} + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -10155,6 +10224,8 @@ snapshots: transitivePeerDependencies: - supports-color + husky@9.1.7: {} + ignore@5.3.2: {} ignore@7.0.5: {} @@ -10604,6 +10675,10 @@ snapshots: dependencies: yallist: 3.1.1 + lucide-react@0.460.0(react@19.2.0): + dependencies: + react: 19.2.0 + lucide-react@0.575.0(react@19.2.0): dependencies: react: 19.2.0 diff --git a/web/e2e/reviews.spec.ts b/web/e2e/reviews.spec.ts new file mode 100644 index 0000000..d24eb9f --- /dev/null +++ b/web/e2e/reviews.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from "@playwright/test"; + +test.describe("Reviews Page", () => { + test("reviews page responds with 200", async ({ request }) => { + const res = await request.get("/reviews"); + expect(res.status()).toBe(200); + }); + + test("reviews page loads", async ({ page }) => { + await page.goto("/reviews"); + await page.waitForLoadState("domcontentloaded"); + await expect(page.locator("body")).toBeVisible(); + }); + + test("page renders without console errors", async ({ page }) => { + const errors: string[] = []; + page.on("pageerror", (err) => errors.push(err.message)); + await page.goto("/reviews"); + await page.waitForLoadState("domcontentloaded"); + const realErrors = errors.filter( + (e) => !e.includes("fetch") && !e.includes("Failed") + ); + expect(realErrors).toHaveLength(0); + }); +}); diff --git a/web/e2e/search.spec.ts b/web/e2e/search.spec.ts new file mode 100644 index 0000000..a5e04d4 --- /dev/null +++ b/web/e2e/search.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from "@playwright/test"; + +test.describe("Search Page", () => { + test("search page responds with 200", async ({ request }) => { + const res = await request.get("/search"); + expect(res.status()).toBe(200); + }); + + test("search page loads", async ({ page }) => { + await page.goto("/search"); + await page.waitForLoadState("domcontentloaded"); + await expect(page.locator("body")).toBeVisible(); + }); + + test("page renders without console errors", async ({ page }) => { + const errors: string[] = []; + page.on("pageerror", (err) => errors.push(err.message)); + await page.goto("/search"); + await page.waitForLoadState("domcontentloaded"); + const realErrors = errors.filter( + (e) => !e.includes("fetch") && !e.includes("Failed") + ); + expect(realErrors).toHaveLength(0); + }); +}); diff --git a/web/e2e/settings.spec.ts b/web/e2e/settings.spec.ts new file mode 100644 index 0000000..9ec3ca4 --- /dev/null +++ b/web/e2e/settings.spec.ts @@ -0,0 +1,31 @@ +import { test, expect } from "@playwright/test"; + +test.describe("Settings Page", () => { + test("settings page responds with 200", async ({ request }) => { + const res = await request.get("/settings"); + expect(res.status()).toBe(200); + }); + + test("shows product configuration section", async ({ page }) => { + await page.goto("/settings"); + await expect( + page.getByText(/product|configuration|notelett|backend/i).first() + ).toBeVisible({ timeout: 10_000 }); + }); + + test("all pages load without console errors", async ({ page }) => { + const errors: string[] = []; + page.on("pageerror", (err) => errors.push(err.message)); + + const routes = ["/dashboard", "/workspaces", "/search", "/reviews", "/settings"]; + for (const route of routes) { + await page.goto(route); + await page.waitForLoadState("domcontentloaded"); + } + + const realErrors = errors.filter( + (e) => !e.includes("fetch") && !e.includes("Failed") + ); + expect(realErrors).toHaveLength(0); + }); +}); diff --git a/web/e2e/workspaces.spec.ts b/web/e2e/workspaces.spec.ts new file mode 100644 index 0000000..01e8f6f --- /dev/null +++ b/web/e2e/workspaces.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from "@playwright/test"; + +test.describe("Workspaces Page", () => { + test("workspaces page responds with 200", async ({ request }) => { + const res = await request.get("/workspaces"); + expect(res.status()).toBe(200); + }); + + test("workspaces page loads", async ({ page }) => { + await page.goto("/workspaces"); + await page.waitForLoadState("domcontentloaded"); + await expect(page.locator("body")).toBeVisible(); + }); + + test("page renders without console errors", async ({ page }) => { + const errors: string[] = []; + page.on("pageerror", (err) => errors.push(err.message)); + await page.goto("/workspaces"); + await page.waitForLoadState("domcontentloaded"); + const realErrors = errors.filter( + (e) => !e.includes("fetch") && !e.includes("Failed") + ); + expect(realErrors).toHaveLength(0); + }); +}); diff --git a/web/test-results/.last-run.json b/web/test-results/.last-run.json new file mode 100644 index 0000000..cbcc1fb --- /dev/null +++ b/web/test-results/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "passed", + "failedTests": [] +} \ No newline at end of file