@empiricalrun/playwright-utils 0.38.4 → 0.38.6

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @empiricalrun/playwright-utils
2
2
 
3
+ ## 0.38.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 26e5a97: feat: add proxy config helpers
8
+
9
+ ## 0.38.5
10
+
11
+ ### Patch Changes
12
+
13
+ - 86a9e1d: feat: improvements to overlay dismissal telemetry
14
+
3
15
  ## 0.38.4
4
16
 
5
17
  ### Patch Changes
@@ -0,0 +1,6 @@
1
+ import type { BrowserContextOptions } from "@playwright/test";
2
+ type ProxyConfig = NonNullable<BrowserContextOptions["proxy"]>;
3
+ type ProxyRegion = "ap-south-1";
4
+ export declare function getProxyConfig(region: ProxyRegion): ProxyConfig;
5
+ export {};
6
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/config/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,KAAK,WAAW,GAAG,WAAW,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/D,KAAK,WAAW,GAAG,YAAY,CAAC;AAOhC,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAM/D"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProxyConfig = getProxyConfig;
4
+ const proxyEndpoints = {
5
+ "ap-south-1": "http://prod-proxy-nlb-6b53da958ae0b30e.elb.ap-south-1.amazonaws.com:8080",
6
+ };
7
+ function getProxyConfig(region) {
8
+ return {
9
+ server: proxyEndpoints[region],
10
+ username: "proxyuser",
11
+ password: process.env.EMPIRICAL_PROXY_PASSWORD,
12
+ };
13
+ }
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from "./auth";
2
2
  export * from "./auth/google";
3
3
  export { solveRecaptcha } from "./captcha";
4
4
  export { baseConfig, chromeStablePath, devices } from "./config";
5
+ export { getProxyConfig } from "./config/proxy";
5
6
  export * from "./email";
6
7
  export * from "./kv";
7
8
  export * from "./playwright-extensions";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACjE,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC;AACrB,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC;AACrB,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.devices = exports.chromeStablePath = exports.baseConfig = exports.solveRecaptcha = void 0;
17
+ exports.getProxyConfig = exports.devices = exports.chromeStablePath = exports.baseConfig = exports.solveRecaptcha = void 0;
18
18
  __exportStar(require("./auth"), exports);
19
19
  __exportStar(require("./auth/google"), exports);
20
20
  var captcha_1 = require("./captcha");
@@ -23,6 +23,8 @@ var config_1 = require("./config");
23
23
  Object.defineProperty(exports, "baseConfig", { enumerable: true, get: function () { return config_1.baseConfig; } });
24
24
  Object.defineProperty(exports, "chromeStablePath", { enumerable: true, get: function () { return config_1.chromeStablePath; } });
25
25
  Object.defineProperty(exports, "devices", { enumerable: true, get: function () { return config_1.devices; } });
26
+ var proxy_1 = require("./config/proxy");
27
+ Object.defineProperty(exports, "getProxyConfig", { enumerable: true, get: function () { return proxy_1.getProxyConfig; } });
26
28
  __exportStar(require("./email"), exports);
27
29
  __exportStar(require("./kv"), exports);
28
30
  __exportStar(require("./playwright-extensions"), exports);
@@ -1,7 +1,9 @@
1
1
  import { TelemetryEvent } from "@empiricalrun/shared-types/telemetry";
2
2
  export declare function trackEvent(event: TelemetryEvent): Promise<void>;
3
3
  export declare function trackOverlayDismissed(opts: {
4
+ original: string | undefined;
4
5
  description: string;
6
+ text: string | undefined;
5
7
  cache: boolean;
6
8
  success: boolean;
7
9
  testName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAKtE,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,GAAG,IAAI,CAkBP"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAKtE,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,GAAG,IAAI,CAoBP"}
package/dist/telemetry.js CHANGED
@@ -32,6 +32,8 @@ function trackOverlayDismissed(opts) {
32
32
  properties: {
33
33
  environment,
34
34
  overlay_description: opts.description,
35
+ overlay_text: opts.text ?? "",
36
+ original_locator: opts.original ?? "",
35
37
  cache_hit: opts.cache,
36
38
  success: opts.success,
37
39
  project_name: process.env.PROJECT_NAME ?? "",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/dismiss-overlays/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,WAKhE;AAED,qBAAa,mBAAmB;IAOlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,iBAAiB,CAIhB;gBAEoB,IAAI,EAAE,IAAI;IAEjC,WAAW;IAMX,GAAG,CACP,aAAa,EAAE,GAAG,EAClB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,EACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;YAkDF,QAAQ;CA6BvB;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,GACnB,cAAc,GAAG,SAAS,CAiC5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/dismiss-overlays/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,WAKhE;AAED,qBAAa,mBAAmB;IAOlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,iBAAiB,CAIhB;gBAEoB,IAAI,EAAE,IAAI;IAEjC,WAAW;IAMX,GAAG,CACP,aAAa,EAAE,GAAG,EAClB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,EACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;YAqDF,QAAQ;CA6BvB;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,GACnB,cAAc,GAAG,SAAS,CAiC5B"}
@@ -37,8 +37,14 @@ class OverlayDismissAgent {
37
37
  const description = (0, utils_1.overlayDescription)(element) ?? "unknown";
38
38
  const testName = testFn.info().title;
39
39
  reporter(`Attempting to auto-dismiss overlay: ${description}`);
40
+ const text = await (0, utils_1.textContent)(this.page, element);
41
+ const eventProps = {
42
+ description,
43
+ text,
44
+ testName,
45
+ original: originalFailingLocator(originalError.message),
46
+ };
40
47
  try {
41
- const text = await (0, utils_1.textContent)(this.page, element);
42
48
  const { success } = await (0, cache_1.executeFromCache)({
43
49
  page: this.page,
44
50
  dom: element?.interceptor,
@@ -46,19 +52,17 @@ class OverlayDismissAgent {
46
52
  });
47
53
  if (success) {
48
54
  (0, telemetry_1.trackOverlayDismissed)({
49
- description,
55
+ ...eventProps,
50
56
  cache: true,
51
57
  success: true,
52
- testName,
53
58
  });
54
59
  return;
55
60
  }
56
61
  const usage = await this.runAgent(element, text, testFn);
57
62
  (0, telemetry_1.trackOverlayDismissed)({
58
- description,
63
+ ...eventProps,
59
64
  cache: false,
60
65
  success: true,
61
- testName,
62
66
  tokens: usage.tokens,
63
67
  cost: usage.cost,
64
68
  });
@@ -66,10 +70,9 @@ class OverlayDismissAgent {
66
70
  catch (agentError) {
67
71
  reporter(`Error during overlay dismissal agent execution: ${agentError.toString()}`);
68
72
  (0, telemetry_1.trackOverlayDismissed)({
69
- description,
73
+ ...eventProps,
70
74
  cache: false,
71
75
  success: false,
72
- testName,
73
76
  });
74
77
  throw originalError;
75
78
  }
@@ -134,6 +137,15 @@ function extractInterceptingElement(errorMessage) {
134
137
  };
135
138
  }
136
139
  }
140
+ function originalFailingLocator(errorMessage) {
141
+ try {
142
+ const p = removeAnsiCodes(errorMessage).split("waiting for ")[1];
143
+ return p?.split("\n")[0];
144
+ }
145
+ catch {
146
+ return "";
147
+ }
148
+ }
137
149
  function removeAnsiCodes(str) {
138
150
  const ansiRegex = new RegExp(String.raw `\u001b\[[0-9;]*m`, "g");
139
151
  return str.replace(ansiRegex, "");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/playwright-utils",
3
- "version": "0.38.4",
3
+ "version": "0.38.6",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "author": "Empirical Team <hey@empirical.run>",
24
24
  "devDependencies": {
25
- "@playwright/test": "1.53.2",
25
+ "@playwright/test": "1.57.0",
26
26
  "@types/async-retry": "^1.4.8",
27
27
  "@types/authenticator": "^1.1.4",
28
28
  "@types/babel__code-frame": "^7.0.6",
@@ -30,7 +30,7 @@
30
30
  "@types/node": "^20.14.9",
31
31
  "@types/serve-handler": "^6.1.4",
32
32
  "@types/pg": "^8.11.6",
33
- "playwright-core": "1.53.2",
33
+ "playwright-core": "1.57.0",
34
34
  "serve-handler": "^6.1.6",
35
35
  "@empiricalrun/shared-types": "0.12.0"
36
36
  },
@@ -1 +1 @@
1
- {"root":["./src/email.ts","./src/index.ts","./src/kv.ts","./src/logger.ts","./src/mailosaur-client.ts","./src/playwright-extensions.ts","./src/postgres.ts","./src/telemetry.ts","./src/auth/google.ts","./src/auth/index.ts","./src/auth/types.ts","./src/captcha/index.ts","./src/captcha/vision.ts","./src/config/index.ts","./src/config/devices/types.ts","./src/overlay-tests/cache.spec.ts","./src/overlay-tests/click.spec.ts","./src/overlay-tests/fixtures.ts","./src/overlay-tests/patch.spec.ts","./src/reporter/blob-utils.ts","./src/reporter/empirical-reporter.ts","./src/reporter/uploader.ts","./src/reporter/util.ts","./src/test/constants.ts","./src/test/expect.ts","./src/test/index.ts","./src/test/types.ts","./src/test/video-labels.ts","./src/test/scripts/agent-capabilities.ts","./src/test/scripts/index.ts","./src/test/scripts/locator-highlights.ts","./src/test/scripts/locator-vision.ts","./src/test/scripts/mouse-pointer.ts","./src/test/scripts/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/cache.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/index.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/prompt.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/utils.ts","./src/test/scripts/pw-locator-patch/highlight/click.ts","./src/test/scripts/pw-locator-patch/highlight/expect.ts","./src/test/scripts/pw-locator-patch/highlight/hover.ts","./src/test/scripts/pw-locator-patch/highlight/inner-text.ts","./src/test/scripts/pw-locator-patch/highlight/input-value.ts","./src/test/scripts/pw-locator-patch/highlight/is-checked.ts","./src/test/scripts/pw-locator-patch/highlight/is-disabled.ts","./src/test/scripts/pw-locator-patch/highlight/is-editable.ts","./src/test/scripts/pw-locator-patch/highlight/text-content.ts","./src/test/scripts/pw-locator-patch/utils/index.ts","./src/test/scripts/pw-locator-patch/vision/query.ts"],"version":"5.8.3"}
1
+ {"root":["./src/email.ts","./src/index.ts","./src/kv.ts","./src/logger.ts","./src/mailosaur-client.ts","./src/playwright-extensions.ts","./src/postgres.ts","./src/telemetry.ts","./src/auth/google.ts","./src/auth/index.ts","./src/auth/types.ts","./src/captcha/index.ts","./src/captcha/vision.ts","./src/config/index.ts","./src/config/proxy.ts","./src/config/devices/types.ts","./src/overlay-tests/cache.spec.ts","./src/overlay-tests/click.spec.ts","./src/overlay-tests/fixtures.ts","./src/overlay-tests/patch.spec.ts","./src/reporter/blob-utils.ts","./src/reporter/empirical-reporter.ts","./src/reporter/uploader.ts","./src/reporter/util.ts","./src/test/constants.ts","./src/test/expect.ts","./src/test/index.ts","./src/test/types.ts","./src/test/video-labels.ts","./src/test/scripts/agent-capabilities.ts","./src/test/scripts/index.ts","./src/test/scripts/locator-highlights.ts","./src/test/scripts/locator-vision.ts","./src/test/scripts/mouse-pointer.ts","./src/test/scripts/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/cache.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/index.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/prompt.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/utils.ts","./src/test/scripts/pw-locator-patch/highlight/click.ts","./src/test/scripts/pw-locator-patch/highlight/expect.ts","./src/test/scripts/pw-locator-patch/highlight/hover.ts","./src/test/scripts/pw-locator-patch/highlight/inner-text.ts","./src/test/scripts/pw-locator-patch/highlight/input-value.ts","./src/test/scripts/pw-locator-patch/highlight/is-checked.ts","./src/test/scripts/pw-locator-patch/highlight/is-disabled.ts","./src/test/scripts/pw-locator-patch/highlight/is-editable.ts","./src/test/scripts/pw-locator-patch/highlight/text-content.ts","./src/test/scripts/pw-locator-patch/utils/index.ts","./src/test/scripts/pw-locator-patch/vision/query.ts"],"version":"5.8.3"}