bruniai 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"compare-image-to-url.d.ts","sourceRoot":"","sources":["../src/compare-image-to-url.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AA8DpB;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAsElC"}
1
+ {"version":3,"file":"compare-image-to-url.d.ts","sourceRoot":"","sources":["../src/compare-image-to-url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AA+DpB;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAgElC"}
@@ -1,4 +1,4 @@
1
- import { Stagehand } from "@browserbasehq/stagehand";
1
+ import { createLocalStagehand } from "./stagehand.js";
2
2
  import { join } from "path";
3
3
  import { mkdirSync, existsSync } from "fs";
4
4
  import { tmpdir } from "os";
@@ -69,13 +69,7 @@ export async function compareImageToUrl(input) {
69
69
  if (!existsSync(imagesDir)) {
70
70
  mkdirSync(imagesDir, { recursive: true });
71
71
  }
72
- const stagehand = new Stagehand({
73
- env: "LOCAL",
74
- disablePino: true,
75
- localBrowserLaunchOptions: {
76
- headless: true,
77
- },
78
- });
72
+ const stagehand = await createLocalStagehand();
79
73
  try {
80
74
  await stagehand.init();
81
75
  const result = await performImageToUrlComparison({
@@ -1 +1 @@
1
- {"version":3,"file":"compare-image-to-url.js","sourceRoot":"","sources":["../src/compare-image-to-url.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-image-to-url.js","sourceRoot":"","sources":["../src/compare-image-to-url.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compare-urls.d.ts","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAyBtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAwE5B"}
1
+ {"version":3,"file":"compare-urls.d.ts","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA0BtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAkE5B"}
@@ -1,4 +1,4 @@
1
- import { Stagehand } from "@browserbasehq/stagehand";
1
+ import { createLocalStagehand } from "./stagehand.js";
2
2
  import { join } from "path";
3
3
  import { mkdirSync, existsSync } from "fs";
4
4
  import { tmpdir } from "os";
@@ -50,13 +50,7 @@ export async function compareUrls(input) {
50
50
  mkdirSync(imagesDir, { recursive: true });
51
51
  }
52
52
  // Initialize Stagehand.
53
- const stagehand = new Stagehand({
54
- env: "LOCAL",
55
- disablePino: true,
56
- localBrowserLaunchOptions: {
57
- headless: true,
58
- },
59
- });
53
+ const stagehand = await createLocalStagehand();
60
54
  try {
61
55
  await stagehand.init();
62
56
  // Perform the core comparison.
@@ -1 +1 @@
1
- {"version":3,"file":"compare-urls.js","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-urls.js","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,5 +6,7 @@
6
6
  */
7
7
  export { compareUrls } from "./compare-urls.js";
8
8
  export { compareImageToUrl } from "./compare-image-to-url.js";
9
+ export { sendReport } from "./report.js";
10
+ export type { SendReportInput } from "./report.js";
9
11
  export type { CompareImageToUrlInput, CompareImageToUrlOutput, CompareUrlsInput, CompareUrlsOutput, ComparisonImages, } from "./types.js";
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -6,4 +6,5 @@
6
6
  */
7
7
  export { compareUrls } from "./compare-urls.js";
8
8
  export { compareImageToUrl } from "./compare-image-to-url.js";
9
+ export { sendReport } from "./report.js";
9
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { CompareUrlsOutput } from "./types.js";
2
+ /** Comparison mode matching the reporter's ComparisonMode type. */
3
+ type ComparisonMode = "url-to-url" | "image-to-url" | "image-to-image";
4
+ export interface SendReportInput {
5
+ result: CompareUrlsOutput;
6
+ page: string;
7
+ baseUrl: string;
8
+ previewUrl: string;
9
+ bruniToken: string;
10
+ bruniApiUrl?: string;
11
+ comparisonMode?: ComparisonMode;
12
+ prNumber?: string;
13
+ repository?: string;
14
+ }
15
+ /**
16
+ * Send a comparison result to the Bruni reporting API and return the report URL.
17
+ *
18
+ * @param input - Report input containing the comparison result and metadata
19
+ * @returns Report URL if the report was successfully sent, null otherwise
20
+ */
21
+ export declare function sendReport(input: SendReportInput): Promise<string | null>;
22
+ export {};
23
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,mEAAmE;AACnE,KAAK,cAAc,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAsBvE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwExB"}
package/dist/report.js ADDED
@@ -0,0 +1,57 @@
1
+ async function importSourceModule(relativePath) {
2
+ return (await import(new URL(relativePath, import.meta.url).href));
3
+ }
4
+ async function loadReporterModule() {
5
+ if (import.meta.url.includes("/packages/bruniai/src/")) {
6
+ try {
7
+ return await import("../../../dist/reporter/index.js");
8
+ }
9
+ catch {
10
+ return await importSourceModule("../../../src/reporter/index.ts");
11
+ }
12
+ }
13
+ return await import("./runtime/reporter/index.js");
14
+ }
15
+ const DEFAULT_BRUNI_API_URL = "https://bruniai-app.vercel.app/api/tests";
16
+ /**
17
+ * Send a comparison result to the Bruni reporting API and return the report URL.
18
+ *
19
+ * @param input - Report input containing the comparison result and metadata
20
+ * @returns Report URL if the report was successfully sent, null otherwise
21
+ */
22
+ export async function sendReport(input) {
23
+ const { result, page, baseUrl, previewUrl, bruniToken, bruniApiUrl = DEFAULT_BRUNI_API_URL, comparisonMode = "url-to-url", prNumber = "", repository = "", } = input;
24
+ const { BruniReporter, parseMultiPageAnalysisResults, encodeImageCompressed } = await loadReporterModule();
25
+ const reporter = new BruniReporter(bruniToken, bruniApiUrl);
26
+ const imageRefs = {
27
+ base_screenshot: await encodeImageCompressed(result.images.base_screenshot, "WEBP", 1200, 60),
28
+ pr_screenshot: await encodeImageCompressed(result.images.preview_screenshot, "WEBP", 1200, 60),
29
+ diff_image: await encodeImageCompressed(result.images.diff_image, "WEBP", 1200, 70),
30
+ };
31
+ const multiPageReport = parseMultiPageAnalysisResults(prNumber, repository, [
32
+ {
33
+ page_path: page,
34
+ base_url: baseUrl,
35
+ pr_url: previewUrl,
36
+ visual_analysis: result.visual_analysis,
37
+ sections_analysis: result.sections_analysis,
38
+ image_refs: imageRefs,
39
+ },
40
+ ], comparisonMode);
41
+ const apiResponse = await reporter.sendMultiPageReport(multiPageReport);
42
+ if (apiResponse && apiResponse.length > 0) {
43
+ const firstResponse = apiResponse[0];
44
+ if (firstResponse.test && typeof firstResponse.test === "object") {
45
+ const testObj = firstResponse.test;
46
+ const reportId = testObj.id;
47
+ if (reportId) {
48
+ const baseApiUrl = bruniApiUrl
49
+ .replace("/api/tests", "")
50
+ .replace(/\/$/, "");
51
+ return `${baseApiUrl}/test/${reportId}`;
52
+ }
53
+ }
54
+ }
55
+ return null;
56
+ }
57
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAOA,KAAK,UAAU,kBAAkB,CAAI,YAAoB;IACvD,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAM,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,kBAAkB,CAC7B,gCAAgC,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACrD,CAAC;AAcD,MAAM,qBAAqB,GAAG,0CAA0C,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAsB;IAEtB,MAAM,EACJ,MAAM,EACN,IAAI,EACJ,OAAO,EACP,UAAU,EACV,UAAU,EACV,WAAW,GAAG,qBAAqB,EACnC,cAAc,GAAG,YAAY,EAC7B,QAAQ,GAAG,EAAE,EACb,UAAU,GAAG,EAAE,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,aAAa,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,GAC3E,MAAM,kBAAkB,EAAE,CAAC;IAE7B,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG;QAChB,eAAe,EAAE,MAAM,qBAAqB,CAC1C,MAAM,CAAC,MAAM,CAAC,eAAe,EAC7B,MAAM,EACN,IAAI,EACJ,EAAE,CACH;QACD,aAAa,EAAE,MAAM,qBAAqB,CACxC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAChC,MAAM,EACN,IAAI,EACJ,EAAE,CACH;QACD,UAAU,EAAE,MAAM,qBAAqB,CACrC,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,MAAM,EACN,IAAI,EACJ,EAAE,CACH;KACF,CAAC;IAEF,MAAM,eAAe,GAAG,6BAA6B,CACnD,QAAQ,EACR,UAAU,EACV;QACE;YACE,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,UAAU;YAClB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,UAAU,EAAE,SAAS;SACtB;KACF,EACD,cAAc,CACf,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAExE,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,aAAa,CAAC,IAAI,IAAI,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG,aAAa,CAAC,IAA+B,CAAC;YAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,UAAU,GAAG,WAAW;qBAC3B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;qBACzB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACtB,OAAO,GAAG,UAAU,SAAS,QAAQ,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Stagehand } from "@browserbasehq/stagehand";
2
+ export declare function createLocalStagehand(): Promise<Stagehand>;
3
+ //# sourceMappingURL=stagehand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stagehand.d.ts","sourceRoot":"","sources":["../../src/utils/stagehand.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA4HrD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,CAAC,CAM/D"}
@@ -0,0 +1,102 @@
1
+ import { existsSync } from "fs";
2
+ import { platform } from "os";
3
+ import { chromium } from "playwright";
4
+ import { Stagehand } from "@browserbasehq/stagehand";
5
+ const COMMON_BROWSER_PATHS = {
6
+ darwin: [
7
+ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
8
+ "/Applications/Chromium.app/Contents/MacOS/Chromium",
9
+ "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",
10
+ ],
11
+ linux: [
12
+ "/usr/bin/google-chrome-stable",
13
+ "/usr/bin/google-chrome",
14
+ "/usr/bin/chromium-browser",
15
+ "/usr/bin/chromium",
16
+ ],
17
+ win32: [
18
+ "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
19
+ "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
20
+ "C:\\Program Files\\Chromium\\Application\\chrome.exe",
21
+ ],
22
+ };
23
+ function firstExistingPath(paths) {
24
+ for (const candidate of paths) {
25
+ if (candidate && existsSync(candidate)) {
26
+ return candidate;
27
+ }
28
+ }
29
+ return undefined;
30
+ }
31
+ function resolvePlaywrightExecutablePath() {
32
+ try {
33
+ const executablePath = chromium.executablePath();
34
+ if (executablePath && existsSync(executablePath)) {
35
+ return executablePath;
36
+ }
37
+ }
38
+ catch {
39
+ // Fall through to system browser lookup.
40
+ }
41
+ return undefined;
42
+ }
43
+ function extractServerlessChromium(module) {
44
+ return module.default ?? module;
45
+ }
46
+ async function resolveServerlessChromiumLaunchOptions() {
47
+ if (!process.env.VERCEL) {
48
+ return null;
49
+ }
50
+ try {
51
+ const chromiumModule = extractServerlessChromium((await import("@sparticuz/chromium")));
52
+ const executablePath = await chromiumModule.executablePath?.();
53
+ if (!executablePath) {
54
+ return null;
55
+ }
56
+ return {
57
+ headless: true,
58
+ executablePath,
59
+ args: chromiumModule.args,
60
+ };
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ function resolveChromiumExecutablePath() {
67
+ const envPath = firstExistingPath([
68
+ process.env.CHROME_PATH,
69
+ process.env.CHROMIUM_PATH,
70
+ process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH,
71
+ ]);
72
+ if (envPath) {
73
+ return envPath;
74
+ }
75
+ const playwrightPath = resolvePlaywrightExecutablePath();
76
+ if (playwrightPath) {
77
+ return playwrightPath;
78
+ }
79
+ return firstExistingPath(COMMON_BROWSER_PATHS[platform()] || []);
80
+ }
81
+ async function getLocalBrowserLaunchOptions() {
82
+ const serverlessOptions = await resolveServerlessChromiumLaunchOptions();
83
+ if (serverlessOptions) {
84
+ return serverlessOptions;
85
+ }
86
+ const executablePath = resolveChromiumExecutablePath();
87
+ if (!executablePath) {
88
+ throw new Error("Unable to find a Chromium/Chrome executable. Set CHROME_PATH, install Playwright Chromium locally, or provide @sparticuz/chromium in serverless environments.");
89
+ }
90
+ return {
91
+ headless: true,
92
+ executablePath,
93
+ };
94
+ }
95
+ export async function createLocalStagehand() {
96
+ return new Stagehand({
97
+ env: "LOCAL",
98
+ disablePino: true,
99
+ localBrowserLaunchOptions: await getLocalBrowserLaunchOptions(),
100
+ });
101
+ }
102
+ //# sourceMappingURL=stagehand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stagehand.js","sourceRoot":"","sources":["../../src/utils/stagehand.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/vision/vision.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAQpB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC3C,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAwF/B;AAED;;;;;;GAMG;AACH,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CA8F/B"}
1
+ {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/vision/vision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,YAAY,CAAC;AASpB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC3C,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAkF/B;AAED;;;;;;GAMG;AACH,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAwF/B"}
@@ -1,5 +1,5 @@
1
- import { Stagehand } from "@browserbasehq/stagehand";
2
1
  import { validateAndFixEnums, generateMetadata } from "./utils.js";
2
+ import { createLocalStagehand } from "../utils/stagehand.js";
3
3
  import { analyzeBaseUrlAgent, analyzePreviewUrlAgent, analyzeImagesAgent, } from "./agents.js";
4
4
  import { combineAgentResults } from "./combiner.js";
5
5
  /**
@@ -31,13 +31,7 @@ import { combineAgentResults } from "./combiner.js";
31
31
  export async function analyzeImagesWithVision(base_screenshot, pr_screenshot, diff_image, base_url, preview_url, pr_number, repository, sections_analysis, user_id) {
32
32
  console.log(`\n${"=".repeat(50)}\n🔍 Starting sequential agent-based analysis\n${"=".repeat(50)}`);
33
33
  // Initialize Stagehand (shared across all agents).
34
- const stagehand = new Stagehand({
35
- env: "LOCAL",
36
- disablePino: true,
37
- localBrowserLaunchOptions: {
38
- headless: true,
39
- },
40
- });
34
+ const stagehand = await createLocalStagehand();
41
35
  try {
42
36
  await stagehand.init();
43
37
  // Agent 1: Analyze base URL structure and sections.
@@ -85,13 +79,7 @@ export async function analyzeImagesWithVision(base_screenshot, pr_screenshot, di
85
79
  export async function analyzeImagesWithVisionImageMode(base_screenshot, pr_screenshot, diff_image, base_url, preview_url, pr_number, repository, sections_analysis, user_id) {
86
80
  console.log(`\n${"=".repeat(50)}\n🔍 Starting image-baseline visual analysis (image-based only)\n${"=".repeat(50)}`);
87
81
  // Initialize Stagehand for image and preview URL analysis.
88
- const stagehand = new Stagehand({
89
- env: "LOCAL",
90
- disablePino: true,
91
- localBrowserLaunchOptions: {
92
- headless: true,
93
- },
94
- });
82
+ const stagehand = await createLocalStagehand();
95
83
  try {
96
84
  await stagehand.init();
97
85
  // For image baseline mode, we create a synthetic base analysis from the
@@ -1 +1 @@
1
- {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/vision/vision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/vision/vision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Stagehand } from "@browserbasehq/stagehand";
2
+ export declare function resolveChromiumExecutablePath(): string | undefined;
3
+ export declare function createLocalStagehand(): Promise<Stagehand>;
4
+ //# sourceMappingURL=stagehand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stagehand.d.ts","sourceRoot":"","sources":["../src/stagehand.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAqFrD,wBAAgB,6BAA6B,IAAI,MAAM,GAAG,SAAS,CAiBlE;AAsBD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,CAAC,CAM/D"}
@@ -0,0 +1,102 @@
1
+ import { existsSync } from "fs";
2
+ import { platform } from "os";
3
+ import { chromium } from "playwright";
4
+ import { Stagehand } from "@browserbasehq/stagehand";
5
+ const COMMON_BROWSER_PATHS = {
6
+ darwin: [
7
+ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
8
+ "/Applications/Chromium.app/Contents/MacOS/Chromium",
9
+ "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",
10
+ ],
11
+ linux: [
12
+ "/usr/bin/google-chrome-stable",
13
+ "/usr/bin/google-chrome",
14
+ "/usr/bin/chromium-browser",
15
+ "/usr/bin/chromium",
16
+ ],
17
+ win32: [
18
+ "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
19
+ "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
20
+ "C:\\Program Files\\Chromium\\Application\\chrome.exe",
21
+ ],
22
+ };
23
+ function firstExistingPath(paths) {
24
+ for (const candidate of paths) {
25
+ if (candidate && existsSync(candidate)) {
26
+ return candidate;
27
+ }
28
+ }
29
+ return undefined;
30
+ }
31
+ function resolvePlaywrightExecutablePath() {
32
+ try {
33
+ const executablePath = chromium.executablePath();
34
+ if (executablePath && existsSync(executablePath)) {
35
+ return executablePath;
36
+ }
37
+ }
38
+ catch {
39
+ // Fall through to system browser lookup.
40
+ }
41
+ return undefined;
42
+ }
43
+ function extractServerlessChromium(module) {
44
+ return module.default ?? module;
45
+ }
46
+ async function resolveServerlessChromiumLaunchOptions() {
47
+ if (!process.env.VERCEL) {
48
+ return null;
49
+ }
50
+ try {
51
+ const chromiumModule = extractServerlessChromium((await import("@sparticuz/chromium")));
52
+ const executablePath = await chromiumModule.executablePath?.();
53
+ if (!executablePath) {
54
+ return null;
55
+ }
56
+ return {
57
+ headless: true,
58
+ executablePath,
59
+ args: chromiumModule.args,
60
+ };
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ export function resolveChromiumExecutablePath() {
67
+ const envPath = firstExistingPath([
68
+ process.env.CHROME_PATH,
69
+ process.env.CHROMIUM_PATH,
70
+ process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH,
71
+ ]);
72
+ if (envPath) {
73
+ return envPath;
74
+ }
75
+ const playwrightPath = resolvePlaywrightExecutablePath();
76
+ if (playwrightPath) {
77
+ return playwrightPath;
78
+ }
79
+ return firstExistingPath(COMMON_BROWSER_PATHS[platform()] || []);
80
+ }
81
+ async function getLocalBrowserLaunchOptions() {
82
+ const serverlessOptions = await resolveServerlessChromiumLaunchOptions();
83
+ if (serverlessOptions) {
84
+ return serverlessOptions;
85
+ }
86
+ const executablePath = resolveChromiumExecutablePath();
87
+ if (!executablePath) {
88
+ throw new Error("Unable to find a Chromium/Chrome executable. Set CHROME_PATH, install Playwright Chromium locally, or provide @sparticuz/chromium in serverless environments.");
89
+ }
90
+ return {
91
+ headless: true,
92
+ executablePath,
93
+ };
94
+ }
95
+ export async function createLocalStagehand() {
96
+ return new Stagehand({
97
+ env: "LOCAL",
98
+ disablePino: true,
99
+ localBrowserLaunchOptions: await getLocalBrowserLaunchOptions(),
100
+ });
101
+ }
102
+ //# sourceMappingURL=stagehand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stagehand.js","sourceRoot":"","sources":["../src/stagehand.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bruniai",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "type": "module",
5
5
  "description": "AI-powered visual regression testing tool - core comparison library",
6
6
  "author": "Joao Garin",
@@ -22,14 +22,15 @@
22
22
  "dev": "tsx src/index.ts"
23
23
  },
24
24
  "dependencies": {
25
- "@browserbasehq/stagehand": "^3.0.1",
25
+ "@sparticuz/chromium": "^138.0.2",
26
+ "@browserbasehq/stagehand": "^3.2.1",
26
27
  "dotenv": "^16.0.0",
27
28
  "pixelmatch": "^7.1.0",
28
- "playwright": "^1.42.1",
29
+ "playwright": "^1.59.1",
29
30
  "pngjs": "^7.0.0",
30
31
  "sharp": "^0.34.5",
31
32
  "uuid": "^10.0.0",
32
- "zod": "^3.23.8"
33
+ "zod": "^3.25.76"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@types/node": "^20.11.24",
@@ -40,6 +41,6 @@
40
41
  "typescript": "^5.5.4"
41
42
  },
42
43
  "peerDependencies": {
43
- "@browserbasehq/stagehand": "^3.0.1"
44
+ "@browserbasehq/stagehand": "^3.2.1"
44
45
  }
45
46
  }