diff --git a/packages/app/e2e/helpers/agent-bottom-anchor.ts b/packages/app/e2e/helpers/agent-bottom-anchor.ts index d32f46234..839fb9f13 100644 --- a/packages/app/e2e/helpers/agent-bottom-anchor.ts +++ b/packages/app/e2e/helpers/agent-bottom-anchor.ts @@ -194,7 +194,9 @@ export async function readScrollMetrics(page: Page): Promise { } export async function scrollUpFromBottom(page: Page, pixels: number): Promise { - await page.getByTestId("agent-chat-scroll").evaluate( + const scrollViewport = page.getByTestId("agent-chat-scroll"); + await expect(scrollViewport).toHaveCount(1, { timeout: 30000 }); + await scrollViewport.evaluate( (root: Element, amount: number) => { const rootElement = root as HTMLElement; const candidates = [rootElement, ...Array.from(rootElement.querySelectorAll("*"))]; @@ -210,9 +212,31 @@ export async function scrollUpFromBottom(page: Page, pixels: number): Promise NEAR_BOTTOM_THRESHOLD_PX) { + return; + } + + const box = await scrollViewport.boundingBox(); + if (!box) { + return; + } + await page.mouse.move(box.x + box.width / 2, box.y + Math.min(box.height / 2, 24)); + + let remaining = Math.max(0, pixels); + while (remaining > 0) { + const delta = Math.min(240, remaining); + await page.mouse.wheel(0, -delta); + remaining -= delta; + + if ((await readScrollMetrics(page)).distanceFromBottom > NEAR_BOTTOM_THRESHOLD_PX) { + return; + } + } } export async function waitForAgentReady(page: Page, expectedTailText?: string): Promise { diff --git a/packages/app/vitest.config.ts b/packages/app/vitest.config.ts index ede64482d..6580a9773 100644 --- a/packages/app/vitest.config.ts +++ b/packages/app/vitest.config.ts @@ -27,15 +27,29 @@ export default defineConfig({ }, }, resolve: { - alias: { - "@": path.resolve(__dirname, "src"), - "@server": path.resolve(__dirname, "../server/src"), + alias: [ + { + find: /^@getpaseo\/relay\/e2ee$/, + replacement: path.resolve(__dirname, "../relay/src/e2ee.ts"), + }, + { + find: /^@getpaseo\/relay$/, + replacement: path.resolve(__dirname, "../relay/src/index.ts"), + }, + { find: "@", replacement: path.resolve(__dirname, "src") }, + { find: "@server", replacement: path.resolve(__dirname, "../server/src") }, // Point to the ESM build so Vite can transform its imports and apply the // react alias below (the CJS build uses require('react') which bypasses // Vite alias resolution). - "react-native": path.resolve(rootNodeModules, "react-native-web/dist/index.js"), - react: path.resolve(appNodeModules, "react"), - "react-dom": path.resolve(appNodeModules, "react-dom"), - }, + { + find: "react-native", + replacement: path.resolve(rootNodeModules, "react-native-web/dist/index.js"), + }, + { find: "react", replacement: path.resolve(appNodeModules, "react") }, + { + find: "react-dom", + replacement: path.resolve(appNodeModules, "react-dom"), + }, + ], }, }); diff --git a/packages/relay/package.json b/packages/relay/package.json index ae46541e4..f15b0a594 100644 --- a/packages/relay/package.json +++ b/packages/relay/package.json @@ -13,21 +13,24 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "node": "./dist/index.js", - "import": "./src/index.ts", - "default": "./src/index.ts" + "default": [ + "./dist/index.js", + "./src/index.ts" + ] }, "./e2ee": { "types": "./dist/e2ee.d.ts", - "node": "./dist/e2ee.js", - "import": "./src/e2ee.ts", - "default": "./src/e2ee.ts" + "default": [ + "./dist/e2ee.js", + "./src/e2ee.ts" + ] }, "./cloudflare": { "types": "./dist/cloudflare-adapter.d.ts", - "node": "./dist/cloudflare-adapter.js", - "import": "./src/cloudflare-adapter.ts", - "default": "./src/cloudflare-adapter.ts" + "default": [ + "./dist/cloudflare-adapter.js", + "./src/cloudflare-adapter.ts" + ] } }, "scripts": {