donobu 2.13.2 → 2.14.1

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.
Files changed (93) hide show
  1. package/dist/apis/SpecialFlowsApi.js +6 -6
  2. package/dist/apis/SpecialFlowsApi.js.map +1 -1
  3. package/dist/assets/donobu-virtual-mouse.svg +11 -0
  4. package/dist/assets/donobu.css +62 -0
  5. package/dist/assets/generated/parameter-schemas.json +145 -246
  6. package/dist/assets/generated/version +1 -1
  7. package/dist/esm/apis/SpecialFlowsApi.js +6 -6
  8. package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
  9. package/dist/esm/assets/donobu-virtual-mouse.svg +11 -0
  10. package/dist/esm/assets/donobu.css +62 -0
  11. package/dist/esm/assets/generated/parameter-schemas.json +145 -246
  12. package/dist/esm/assets/generated/version +1 -1
  13. package/dist/esm/managers/DonobuFlow.d.ts +3 -3
  14. package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
  15. package/dist/esm/managers/DonobuFlow.js +16 -20
  16. package/dist/esm/managers/DonobuFlow.js.map +1 -1
  17. package/dist/esm/managers/DonobuFlowsManager.d.ts +1 -1
  18. package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
  19. package/dist/esm/managers/DonobuFlowsManager.js +80 -77
  20. package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
  21. package/dist/esm/managers/InteractionVisualizer.d.ts +43 -0
  22. package/dist/esm/managers/InteractionVisualizer.d.ts.map +1 -0
  23. package/dist/esm/managers/InteractionVisualizer.js +223 -0
  24. package/dist/esm/managers/InteractionVisualizer.js.map +1 -0
  25. package/dist/esm/models/CreateDonobuFlow.d.ts +2 -2
  26. package/dist/esm/models/CreateDonobuFlow.d.ts.map +1 -1
  27. package/dist/esm/models/FlowMetadata.d.ts +2 -2
  28. package/dist/esm/models/FlowMetadata.d.ts.map +1 -1
  29. package/dist/esm/models/ToolCallContext.d.ts +2 -2
  30. package/dist/esm/models/ToolCallContext.d.ts.map +1 -1
  31. package/dist/esm/persistence/DonobuSqliteDb.d.ts.map +1 -1
  32. package/dist/esm/persistence/DonobuSqliteDb.js +35 -0
  33. package/dist/esm/persistence/DonobuSqliteDb.js.map +1 -1
  34. package/dist/esm/playwrightTestExtensions.d.ts.map +1 -1
  35. package/dist/esm/playwrightTestExtensions.js +5 -16
  36. package/dist/esm/playwrightTestExtensions.js.map +1 -1
  37. package/dist/esm/tools/ClickTool.d.ts +1 -1
  38. package/dist/esm/tools/ClickTool.d.ts.map +1 -1
  39. package/dist/esm/tools/ClickTool.js +8 -5
  40. package/dist/esm/tools/ClickTool.js.map +1 -1
  41. package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
  42. package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
  43. package/dist/esm/tools/ReplayableInteraction.js +4 -4
  44. package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
  45. package/dist/esm/utils/Logger.d.ts +2 -0
  46. package/dist/esm/utils/Logger.d.ts.map +1 -1
  47. package/dist/esm/utils/Logger.js +23 -14
  48. package/dist/esm/utils/Logger.js.map +1 -1
  49. package/dist/esm/utils/PlaywrightUtils.d.ts +8 -20
  50. package/dist/esm/utils/PlaywrightUtils.d.ts.map +1 -1
  51. package/dist/esm/utils/PlaywrightUtils.js +51 -168
  52. package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
  53. package/dist/managers/DonobuFlow.d.ts +3 -3
  54. package/dist/managers/DonobuFlow.d.ts.map +1 -1
  55. package/dist/managers/DonobuFlow.js +16 -20
  56. package/dist/managers/DonobuFlow.js.map +1 -1
  57. package/dist/managers/DonobuFlowsManager.d.ts +1 -1
  58. package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
  59. package/dist/managers/DonobuFlowsManager.js +80 -77
  60. package/dist/managers/DonobuFlowsManager.js.map +1 -1
  61. package/dist/managers/InteractionVisualizer.d.ts +43 -0
  62. package/dist/managers/InteractionVisualizer.d.ts.map +1 -0
  63. package/dist/managers/InteractionVisualizer.js +223 -0
  64. package/dist/managers/InteractionVisualizer.js.map +1 -0
  65. package/dist/models/CreateDonobuFlow.d.ts +2 -2
  66. package/dist/models/CreateDonobuFlow.d.ts.map +1 -1
  67. package/dist/models/FlowMetadata.d.ts +2 -2
  68. package/dist/models/FlowMetadata.d.ts.map +1 -1
  69. package/dist/models/ToolCallContext.d.ts +2 -2
  70. package/dist/models/ToolCallContext.d.ts.map +1 -1
  71. package/dist/persistence/DonobuSqliteDb.d.ts.map +1 -1
  72. package/dist/persistence/DonobuSqliteDb.js +35 -0
  73. package/dist/persistence/DonobuSqliteDb.js.map +1 -1
  74. package/dist/playwrightTestExtensions.d.ts.map +1 -1
  75. package/dist/playwrightTestExtensions.js +5 -16
  76. package/dist/playwrightTestExtensions.js.map +1 -1
  77. package/dist/tools/ClickTool.d.ts +1 -1
  78. package/dist/tools/ClickTool.d.ts.map +1 -1
  79. package/dist/tools/ClickTool.js +8 -5
  80. package/dist/tools/ClickTool.js.map +1 -1
  81. package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
  82. package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
  83. package/dist/tools/ReplayableInteraction.js +4 -4
  84. package/dist/tools/ReplayableInteraction.js.map +1 -1
  85. package/dist/utils/Logger.d.ts +2 -0
  86. package/dist/utils/Logger.d.ts.map +1 -1
  87. package/dist/utils/Logger.js +23 -14
  88. package/dist/utils/Logger.js.map +1 -1
  89. package/dist/utils/PlaywrightUtils.d.ts +8 -20
  90. package/dist/utils/PlaywrightUtils.d.ts.map +1 -1
  91. package/dist/utils/PlaywrightUtils.js +51 -168
  92. package/dist/utils/PlaywrightUtils.js.map +1 -1
  93. package/package.json +1 -1
@@ -3,31 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClickTool = void 0;
4
4
  const ReplayableInteraction_1 = require("./ReplayableInteraction");
5
5
  const MiscUtils_1 = require("../utils/MiscUtils");
6
+ const Logger_1 = require("../utils/Logger");
6
7
  class ClickTool extends ReplayableInteraction_1.ReplayableInteraction {
7
8
  constructor() {
8
9
  super(ClickTool.NAME, 'Click an element on a webpage.', 'SelectorBasedClickToolParameters', 'AnnotationBasedClickToolParameters');
9
10
  }
10
- async invoke(context, _parameters, element) {
11
+ async invoke(context, parameters, element) {
11
12
  const page = context.page;
12
13
  const box = await element.boundingBox();
13
14
  if (!box) {
14
15
  throw new Error(`Failed to retrieve element bounding box for '${element}'; element may be offscreen or detached.`);
15
16
  }
17
+ const clickDuration = MiscUtils_1.MiscUtils.generateHumanLikeClickDurationInMs();
16
18
  try {
17
19
  await element.click({
18
- delay: MiscUtils_1.MiscUtils.generateHumanLikeClickDurationInMs(),
20
+ delay: clickDuration,
19
21
  timeout: 1000,
20
22
  });
21
23
  return 'Clicked the element.';
22
24
  }
23
- catch (_error) {
25
+ catch (error) {
26
+ Logger_1.appLogger.warn(`Failed to directly click element with parameters ${JSON.stringify(parameters, null, 2)}, failing over to position based click...`, error);
24
27
  const x = box.x + box.width / 2;
25
28
  const y = box.y + box.height / 2;
26
29
  await page.mouse.move(x, y);
27
30
  await page.mouse.click(x, y, {
28
- delay: MiscUtils_1.MiscUtils.generateHumanLikeClickDurationInMs(),
31
+ delay: clickDuration,
29
32
  });
30
- return 'Clicked on the element.';
33
+ return `Clicked on the element at ${x}px by ${y}px.`;
31
34
  }
32
35
  }
33
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClickTool.js","sourceRoot":"","sources":["../../../src/tools/ClickTool.ts"],"names":[],"mappings":";;;AAEA,mEAIiC;AACjC,kDAA+C;AAU/C,MAAa,SAAU,SAAQ,6CAI9B;IAGC;QACE,KAAK,CACH,SAAS,CAAC,IAAI,EACd,gCAAgC,EAChC,kCAAkC,EAClC,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,WAAoC,EACpC,OAAgB;QAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;QAExC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,gDAAgD,OAAO,0CAA0C,CAClG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,CAAC;gBAClB,KAAK,EAAE,qBAAS,CAAC,kCAAkC,EAAE;gBACrD,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,sBAAsB,CAAC;QAChC,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC3B,KAAK,EAAE,qBAAS,CAAC,kCAAkC,EAAE;aACtD,CAAC,CAAC;YACH,OAAO,yBAAyB,CAAC;QACnC,CAAC;IACH,CAAC;;AA7CH,8BA8CC;AAzCwB,cAAI,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"ClickTool.js","sourceRoot":"","sources":["../../../src/tools/ClickTool.ts"],"names":[],"mappings":";;;AAEA,mEAIiC;AACjC,kDAA+C;AAC/C,4CAA4C;AAU5C,MAAa,SAAU,SAAQ,6CAI9B;IAGC;QACE,KAAK,CACH,SAAS,CAAC,IAAI,EACd,gCAAgC,EAChC,kCAAkC,EAClC,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,UAAmC,EACnC,OAAgB;QAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;QAExC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,gDAAgD,OAAO,0CAA0C,CAClG,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,qBAAS,CAAC,kCAAkC,EAAE,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,CAAC;gBAClB,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,sBAAsB,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAS,CAAC,IAAI,CACZ,oDAAoD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,2CAA2C,EAClI,KAAK,CACN,CAAC;YACF,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC3B,KAAK,EAAE,aAAa;aACrB,CAAC,CAAC;YACH,OAAO,6BAA6B,CAAC,SAAS,CAAC,KAAK,CAAC;QACvD,CAAC;IACH,CAAC;;AAnDH,8BAoDC;AA/CwB,cAAI,GAAG,OAAO,CAAC"}
@@ -29,7 +29,7 @@ business/entity. This tool should be called for each unique street view.`, 'Extr
29
29
  // Remove Google Maps survey if present
30
30
  await NavigateWithinStreetView_1.NavigateWithinStreetViewTool.removeGoogleMapsSurvey(page);
31
31
  if (firstCallForThisUrl) {
32
- await context.toolTipper.blipToolTip(page, page.locator('body'), `Skipping ${this.name} call since it has already extracted data for this view.`);
32
+ await context.interactionVisualizer.pointAt(page, page.locator('body'), `Skipping ${this.name} call since it has already extracted data for this view.`);
33
33
  const originalRec = firstCallForThisUrl.parameters
34
34
  .recommendedNextStepForStreetViewNavigator;
35
35
  const advice = !originalRec
@@ -1 +1 @@
1
- {"version":3,"file":"ExtractGoogleStreetviewEntityDataTool.js","sourceRoot":"","sources":["../../../src/tools/ExtractGoogleStreetviewEntityDataTool.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAI9B,8DAA2D;AAC3D,kDAA+C;AAE/C,yEAGoC;AACpC,iGAA8F;AAI9F,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,2CAA2B,CAAA;IAC3B,iCAAiB,CAAA;IACjB,mDAAmC,CAAA;IACnC,yCAAyB,CAAA;IACzB,uCAAuB,CAAA;AACzB,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AA8BD;;;GAGG;AACH,MAAa,qCAAsC,SAAQ,WAG1D;IAGC;QACE,KAAK,CACH,qCAAqC,CAAC,IAAI,EAC1C;yEACmE,EACnE,qDAAqD,EACrD,oDAAoD,EACpD,IAAI,CACL,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,IAAI,CACxB,OAAwB,EACxB,UAA+D;QAE/D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CACvD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,CAC5D,CAAC;QACF,uCAAuC;QACvC,MAAM,uDAA4B,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAEhE,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAClC,IAAI,EACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EACpB,YAAY,IAAI,CAAC,IAAI,0DAA0D,CAChF,CAAC;YAEF,MAAM,WAAW,GACf,mBAAmB,CAAC,UAAU;iBAC3B,yCAAyC,CAAC;YAC/C,MAAM,MAAM,GAAG,CAAC,WAAW;gBACzB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,6DAA6D,WAAW,+BAA+B,CAAC;YAE5G,OAAO;gBACL,YAAY,EAAE,IAAI;gBAClB,MAAM,EACJ,YAAY,IAAI,CAAC,IAAI;WACpB,uDAA4B,CAAC,IAAI;EAC1C,MAAM,EAAE,CAAC,IAAI,EAAE;gBACT,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,MAAM,iCAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,CACpE,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,UAAU,CACX,CAAC;YACF,MAAM,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACrE,MAAM,uBAAuB,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAC/D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CACrC,CAAC;YACF,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY;gBAC1C,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBACtE,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,0BAA0B,CACtE,OAAO,EACP,UAAU,EACV,uBAAuB,CACxB,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,eAAe,EAAE,uBAAuB;gBACxC,YAAY;gBACZ,eAAe,EAAE,0BAA0B;gBAC3C,OAAO,EAAE,kBAAkB;gBAC3B,uBAAuB;gBACvB,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,yCAAyC,EACvC,UAAU,CAAC,yCAAyC;aACpC,CAAC;YAErB,IAAI,0BAA0B,EAAE,CAAC;gBAC/B,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBAC7B,IAAI,EAAE,2EAAoC,CAAC,IAAI;oBAC/C,UAAU,EAAE,EAAE;iBACf,CAAC,CAAC;YACL,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IAEe,WAAW,CACzB,OAAwB,EACxB,UAA8D;QAE9D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,IAAU;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAEhD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,OAAwB,EACxB,UAAsB;QAEtB,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,wMAAwM;SAC5L,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC;SAClC,CAAC;QAExB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAU,CAAC,mBAAmB,CAC1D,CAAC,WAAW,CAAC,EACb,qCAAqC,CAAC,4BAA4B,CACnE,CAAC;QACF,qBAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC,MAAa,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACtC,OAAwB,EACxB,YAAoB,EACpB,eAAyB;QAEzB,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,6BAA6B,YAAY,sDAAsD,eAAe,EAAE;SACpG,CAAC;QACrB,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,CAAC,UAAU,CAAC;SACE,CAAC;QAExB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAU,CAAC,mBAAmB,CAC1D,CAAC,WAAW,CAAC,EACb,qCAAqC,CAAC,0BAA0B,CACjE,CAAC;QACF,qBAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC,MAAM,CAAC,eAAsB,CAAC;IAC/C,CAAC;;AAjKH,sFAwNC;AApNwB,0CAAI,GAAG,mCAAmC,CAAC;AA+J1C,kEAA4B,GAAgB;IAClE,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE;QACR,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAChB,2CAA2C;KAC5C;IACD,UAAU,EAAE;QACV,eAAe,EAAE;YACf,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,6CAA6C;YAC1D,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;aACf;SACF;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,iDAAiD;YAC9D,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;aACf;SACF;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE;gBACJ,aAAa;gBACb,QAAQ;gBACR,iBAAiB;gBACjB,YAAY;gBACZ,WAAW;aACZ;SACF;QACD,yCAAyC,EAAE;YACzC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,4CAA4C;SAC7G;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEsB,gEAA0B,GAAgB;IAChE,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,iBAAiB,CAAC;IAC7B,UAAU,EAAE;QACV,eAAe,EAAE;YACf,IAAI,EAAE,SAAS;YACf,WAAW,EACT,wFAAwF;SAC3F;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
1
+ {"version":3,"file":"ExtractGoogleStreetviewEntityDataTool.js","sourceRoot":"","sources":["../../../src/tools/ExtractGoogleStreetviewEntityDataTool.ts"],"names":[],"mappings":"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"}
@@ -77,10 +77,10 @@ class ReplayableInteraction extends Tool_1.Tool {
77
77
  throw new Error(`Failed to retrieve element bounding box for '${element}'; element may be offscreen or detached.`);
78
78
  }
79
79
  if (parameters.rationale) {
80
- // Show the tooltip at the original locator because if the element is
81
- // a label, the tip/mouse will be over the label and not the element
82
- // it is associated with.
83
- await context.toolTipper.blipToolTip(page, originalLocator, parameters.rationale);
80
+ // Show the rationale at the original locator because if the
81
+ // element is a label, the tip/mouse will be over the label and
82
+ // not the element it is associated with.
83
+ await context.interactionVisualizer.pointAt(page, originalLocator, parameters.rationale);
84
84
  }
85
85
  // Hide the control panel so that it will not block an interaction if the
86
86
  // target element is underneath the panel.
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayableInteraction.js","sourceRoot":"","sources":["../../../src/tools/ReplayableInteraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReplayableInteraction.js","sourceRoot":"","sources":["../../../src/tools/ReplayableInteraction.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import winston from 'winston';
2
+ import { AsyncLocalStorage } from 'async_hooks';
3
+ export declare const loggingContext: AsyncLocalStorage<unknown>;
2
4
  export declare const appLogger: winston.Logger;
3
5
  export declare const accessLogger: winston.Logger;
4
6
  //# sourceMappingURL=Logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/utils/Logger.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AA0C9B,eAAO,MAAM,SAAS,gBA6BpB,CAAC;AAGH,eAAO,MAAM,YAAY,gBA2BvB,CAAC"}
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/utils/Logger.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqChD,eAAO,MAAM,cAAc,4BAA0B,CAAC;AActD,eAAO,MAAM,SAAS,gBA+BpB,CAAC;AAGH,eAAO,MAAM,YAAY,gBA2BvB,CAAC"}
@@ -3,15 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.accessLogger = exports.appLogger = void 0;
6
+ exports.accessLogger = exports.appLogger = exports.loggingContext = void 0;
7
7
  // utils/logger.ts
8
8
  const winston_1 = __importDefault(require("winston"));
9
- const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file"));
10
9
  const path_1 = __importDefault(require("path"));
11
10
  const MiscUtils_1 = require("../utils/MiscUtils");
11
+ const async_hooks_1 = require("async_hooks");
12
12
  // Private constants and utility functions
13
- const APP_LOG_MAX_SIZE = '1m';
14
- const ACCESS_LOG_MAX_SIZE = '5m';
13
+ const LOG_MAX_SIZE_BYTES = 1 * 1024 * 1024; // 1 MB cap per file
15
14
  const MAX_FILES = 2;
16
15
  /**
17
16
  * Formats an error object into a detailed string representation
@@ -42,22 +41,32 @@ const errorAwareFormat = winston_1.default.format((info) => {
42
41
  }
43
42
  return info;
44
43
  });
44
+ exports.loggingContext = new async_hooks_1.AsyncLocalStorage();
45
+ // Format to add the currently running flow's ID (if any) from AsyncLocalStorage
46
+ const flowIdFormat = winston_1.default.format((info) => {
47
+ const store = exports.loggingContext.getStore();
48
+ const flowId = store?.flowId || '-';
49
+ return {
50
+ ...info,
51
+ flowId,
52
+ };
53
+ });
45
54
  // Create and export the application logger directly
46
55
  exports.appLogger = winston_1.default.createLogger({
47
56
  level: 'info',
48
- format: winston_1.default.format.combine(errorAwareFormat(), winston_1.default.format.timestamp({ format: timestampFormat }), winston_1.default.format.json()),
57
+ format: winston_1.default.format.combine(errorAwareFormat(), flowIdFormat(), winston_1.default.format.timestamp({ format: timestampFormat }), winston_1.default.format.json()),
49
58
  transports: [
50
59
  // Console transport (stderr)
51
60
  new winston_1.default.transports.Console({
52
61
  stderrLevels: ['info', 'warn', 'error'],
53
- format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: 'HH:mm:ss.SSS' }), winston_1.default.format.printf(({ timestamp, level, message, thread = 'main', stack }) => `${timestamp} [${thread}] ${level.toUpperCase().padEnd(5)} ${message}${stack ? '\n' + stack : ''}`)),
62
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: 'HH:mm:ss.SSS' }), flowIdFormat(), winston_1.default.format.printf(({ timestamp, level, message, flowId, stack }) => `${timestamp} [${flowId}] ${level.toUpperCase().padEnd(5)} ${message}${stack ? '\n' + stack : ''}`)),
54
63
  }),
55
- // File transport with rotation
56
- new winston_daily_rotate_file_1.default({
64
+ // File transport with size‑based rotation (1 MB per file, keep 2 files)
65
+ new winston_1.default.transports.File({
57
66
  filename: path_1.default.join(basePath, 'app.log'),
58
- maxSize: APP_LOG_MAX_SIZE,
67
+ maxsize: LOG_MAX_SIZE_BYTES,
59
68
  maxFiles: MAX_FILES,
60
- zippedArchive: false,
69
+ tailable: true,
61
70
  }),
62
71
  ],
63
72
  });
@@ -71,12 +80,12 @@ exports.accessLogger = winston_1.default.createLogger({
71
80
  stderrLevels: ['info', 'warn', 'error'],
72
81
  format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: 'HH:mm:ss.SSS' }), winston_1.default.format.printf(({ timestamp, message }) => `${timestamp} access - ${message}`)),
73
82
  }),
74
- // File transport with rotation
75
- new winston_daily_rotate_file_1.default({
83
+ // File transport with size‑based rotation (1 MB per file, keep 2 files)
84
+ new winston_1.default.transports.File({
76
85
  filename: path_1.default.join(basePath, 'access.log'),
77
- maxSize: ACCESS_LOG_MAX_SIZE,
86
+ maxsize: LOG_MAX_SIZE_BYTES,
78
87
  maxFiles: MAX_FILES,
79
- zippedArchive: false,
88
+ tailable: true,
80
89
  }),
81
90
  ],
82
91
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/utils/Logger.ts"],"names":[],"mappings":";;;;;;AAAA,kBAAkB;AAClB,sDAA8B;AAC9B,0FAAwD;AACxD,gDAAwB;AACxB,kDAA+C;AAE/C,0CAA0C;AAC1C,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB;;GAEG;AACH,SAAS,WAAW,CAAC,KAAY;IAC/B,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;AAC7E,CAAC;AAED,oCAAoC;AACpC,MAAM,QAAQ,GAAG,qBAAS,CAAC,oBAAoB,EAAE,CAAC;AAClD,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,iBAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IAC/C,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;QAC1B,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;SAC5B,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;QACvC,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACtD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI;SAClC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,oDAAoD;AACvC,QAAA,SAAS,GAAG,iBAAO,CAAC,YAAY,CAAC;IAC5C,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,gBAAgB,EAAE,EAClB,iBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,EACrD,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;IACD,UAAU,EAAE;QACV,6BAA6B;QAC7B,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;YACvC,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EACpD,iBAAO,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CACxD,GAAG,SAAS,KAAK,MAAM,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,GAClE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EACzB,EAAE,CACL,CACF;SACF,CAAC;QACF,+BAA+B;QAC/B,IAAI,mCAAe,CAAC;YAClB,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;YACxC,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,KAAK;SACrB,CAAC;KACH;CACF,CAAC,CAAC;AAEH,+CAA+C;AAClC,QAAA,YAAY,GAAG,iBAAO,CAAC,YAAY,CAAC;IAC/C,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,EACrD,iBAAO,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,aAAa,OAAO,EAAE,CAC/D,CACF;IACD,UAAU,EAAE;QACV,6BAA6B;QAC7B,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;YACvC,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EACpD,iBAAO,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,aAAa,OAAO,EAAE,CAC/D,CACF;SACF,CAAC;QACF,+BAA+B;QAC/B,IAAI,mCAAe,CAAC;YAClB,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;YAC3C,OAAO,EAAE,mBAAmB;YAC5B,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,KAAK;SACrB,CAAC;KACH;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/utils/Logger.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ElementHandle, Locator, Page } from 'playwright';
1
+ import { BrowserContext, ElementHandle, Locator, Page } from 'playwright';
2
2
  import { FlowMetadata, State } from '../models/FlowMetadata';
3
3
  import { InteractableElement } from '../models/InteractableElement';
4
4
  declare global {
@@ -75,27 +75,15 @@ export declare class PlaywrightUtils {
75
75
  static pageInteractionsTrackerInitScript(): string;
76
76
  static donobuControlPanelInitScript(): string;
77
77
  /**
78
- * Creates a visual sparkle effect at the specified browser-page coordinates,
79
- * automatically detecting if the point lies inside a same-origin iframe (and nesting deeper
80
- * if necessary). Injects the sparkle into that frame’s document at the correct local coords.
81
- *
82
- * @param page - The Playwright Page object
83
- * @param x - The x-coordinate in the top-level page coordinate space (relative to the browser window)
84
- * @param y - The y-coordinate in the top-level page coordinate space
85
- * @param durationMs - How long the sparkle remains (ms, default 800)
86
- * @param emoji - The emoji to display (default '✨')
87
- * @param size - CSS font-size for the emoji (default '40px')
88
- */
89
- static createSparkleEffect(page: Page, x: number, y: number, durationMs?: number, emoji?: string, size?: string): Promise<void>;
90
- /**
91
- * Recursively finds the deepest same-origin Frame that covers the point (top-level coordinates).
92
- * Returns the Frame plus the local coordinates (relative to that frame's viewport).
93
- *
94
- * If no same-origin child frame covers (x, y), it returns the main frame and the original coords.
78
+ * Sets up the given browser context so that it can be minimally used by the
79
+ * rest of Donobu. This involves registering virtual routes for serving up
80
+ * Donobu-specific content, and registering critical page initialization
81
+ * scripts.
95
82
  */
96
- private static findDeepestFrameAtPoint;
83
+ static setupBasicBrowserContext(browserContext: BrowserContext): Promise<void>;
97
84
  /**
98
- * Returns the given locator or its label, if it has one.
85
+ * Returns the given locator or its label, if it has one and is associated with a labelable element.
86
+ * Labelable elements include: button, input (except hidden), meter, output, progress, select, and textarea.
99
87
  */
100
88
  static getLocatorOrItsLabel(element: Locator): Promise<Locator>;
101
89
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/PlaywrightUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaywrightUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/PlaywrightUtils.ts"],"names":[],"mappings":"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"}
@@ -98,174 +98,36 @@ class PlaywrightUtils {
98
98
  return PlaywrightUtils.DONOBU_CONTROL_PANEL_INIT_SCRIPT;
99
99
  }
100
100
  /**
101
- * Creates a visual sparkle effect at the specified browser-page coordinates,
102
- * automatically detecting if the point lies inside a same-origin iframe (and nesting deeper
103
- * if necessary). Injects the sparkle into that frame’s document at the correct local coords.
104
- *
105
- * @param page - The Playwright Page object
106
- * @param x - The x-coordinate in the top-level page coordinate space (relative to the browser window)
107
- * @param y - The y-coordinate in the top-level page coordinate space
108
- * @param durationMs - How long the sparkle remains (ms, default 800)
109
- * @param emoji - The emoji to display (default '✨')
110
- * @param size - CSS font-size for the emoji (default '40px')
101
+ * Sets up the given browser context so that it can be minimally used by the
102
+ * rest of Donobu. This involves registering virtual routes for serving up
103
+ * Donobu-specific content, and registering critical page initialization
104
+ * scripts.
111
105
  */
112
- static async createSparkleEffect(page, x, y, durationMs = 800, emoji = '✨', size = '40px') {
113
- // 1) Find the deepest same-origin frame covering (x, y), recursing if iframes nest further.
114
- // Also get the coordinate in that frame’s local coordinate system.
115
- const { targetFrame, localX, localY } = await this.findDeepestFrameAtPoint(page, x, y);
116
- // 2) Inject the sparkle container & style in that frame
117
- await targetFrame.evaluate(({ x, y, emoji, size }) => {
118
- const containerId = 'playwright-sparkle-shadow-container';
119
- // Remove old container if needed
120
- const old = document.getElementById(containerId);
121
- if (old)
122
- old.remove();
123
- const container = document.createElement('div');
124
- container.id = containerId;
125
- const shadowRoot = container.attachShadow({ mode: 'open' });
126
- const sparkle = document.createElement('span');
127
- sparkle.id = 'playwright-sparkle-element';
128
- sparkle.textContent = emoji;
129
- // Position & style
130
- sparkle.style.position = 'fixed';
131
- sparkle.style.left = `${x}px`;
132
- sparkle.style.top = `${y}px`;
133
- sparkle.style.fontSize = size;
134
- sparkle.style.transform = 'translate(-50%, -50%)';
135
- sparkle.style.zIndex = '2147483647'; // Very large to float above most overlays
136
- sparkle.style.pointerEvents = 'none';
137
- sparkle.style.userSelect = 'none';
138
- sparkle.style.filter = 'drop-shadow(0 0 2px rgba(255,255,255,0.7))';
139
- sparkle.style.animation = 'sparkle-appear 0.3s ease-out forwards';
140
- const styleEl = document.createElement('style');
141
- styleEl.textContent = `
142
- :host {
143
- all: initial;
144
- }
145
- @keyframes sparkle-appear {
146
- 0% { opacity: 0; transform: translate(-50%, -50%) scale(0.5); }
147
- 50% { opacity: 1; transform: translate(-50%, -50%) scale(1.2); }
148
- 100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
149
- }
150
- @keyframes sparkle-disappear {
151
- 0% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
152
- 100% { opacity: 0; transform: translate(-50%, -50%) scale(0.5); }
153
- }
154
- `;
155
- shadowRoot.appendChild(styleEl);
156
- shadowRoot.appendChild(sparkle);
157
- document.body.appendChild(container);
158
- }, { x: localX, y: localY, emoji, size });
159
- // 3) Wait the duration
160
- await page.waitForTimeout(durationMs);
161
- // 4) Fade out and remove
162
- await targetFrame.evaluate(() => {
163
- const container = document.getElementById('playwright-sparkle-shadow-container');
164
- if (container && container.shadowRoot) {
165
- const sparkle = container.shadowRoot.getElementById('playwright-sparkle-element');
166
- if (sparkle) {
167
- sparkle.style.animation = 'sparkle-disappear 0.3s ease-in forwards';
168
- }
169
- setTimeout(() => {
170
- container.remove();
171
- }, 300);
172
- }
106
+ static async setupBasicBrowserContext(browserContext) {
107
+ // Add Donobu CSS and SVG routes to the browser so that are not violating
108
+ // the CSP of any of the pages we attempt to render our custom stuff on.
109
+ await browserContext.route('**/donobu-virtual-mouse.svg', async (route) => {
110
+ await route.fulfill({
111
+ status: 200,
112
+ contentType: 'image/svg+xml',
113
+ body: MiscUtils_1.MiscUtils.getResourceFileAsString('donobu-virtual-mouse.svg'),
114
+ });
173
115
  });
174
- // 5) Wait for removal
175
- await page.waitForTimeout(300);
176
- }
177
- /**
178
- * Recursively finds the deepest same-origin Frame that covers the point (top-level coordinates).
179
- * Returns the Frame plus the local coordinates (relative to that frame's viewport).
180
- *
181
- * If no same-origin child frame covers (x, y), it returns the main frame and the original coords.
182
- */
183
- static async findDeepestFrameAtPoint(page, x, y, frame = page.mainFrame()) {
184
- // We'll attempt to see if any child <iframe> in this frame covers the coordinate
185
- // Steps:
186
- // (1) Convert the top-level coordinate (x, y) into this frame's local coordinate system.
187
- // (2) If outside the frame's bounding client rect (in its parent), skip further checks.
188
- // (3) Check each child <iframe> inside this frame's DOM. If the point is inside that <iframe>,
189
- // convert to the child frame's coords and recurse. If the child frame is cross-origin,
190
- // skip it.
191
- //
192
- // If none of the children contain the point, we are the "deepest" frame for that point.
193
- // If we're the mainFrame, there's no parent boundingRect. So we start with (x, y) as is.
194
- let localX = x;
195
- let localY = y;
196
- // If there's a parent frame, we need to see where the <iframe> itself is in parent's coords
197
- // But we only do that if frame is NOT the main frame
198
- const parentFrame = frame.parentFrame();
199
- if (parentFrame) {
200
- // Evaluate bounding rect of the <iframe> that hosts this child frame
201
- // We'll do a small trick: find the <iframe> element in the parent that has frame.url()
202
- // or frame.name(). There's no direct method, so we rely on the frame element handle:
203
- const frameElement = await frame.frameElement();
204
- const box = await frameElement.boundingBox();
205
- if (!box) {
206
- // If we can't get bounding box, fallback
207
- return { targetFrame: page.mainFrame(), localX: x, localY: y };
208
- }
209
- // The bounding box's coords are relative to the parent's main page.
210
- // Convert our (x, y) from the parent's coordinate system to this child's local system.
211
- if (x < box.x ||
212
- y < box.y ||
213
- x > box.x + box.width ||
214
- y > box.y + box.height) {
215
- // The point is not inside this child frame's bounding box at all
216
- // so it's not relevant. We'll skip it. The caller will continue searching siblings.
217
- return { targetFrame: page.mainFrame(), localX: x, localY: y };
218
- }
219
- // So we are inside this child frame. Convert (x, y) to local coords
220
- localX = x - box.x; // offset from left
221
- localY = y - box.y; // offset from top
222
- // Now we must also account for the child frame's own scrolling. Evaluate in the child:
223
- const scrollOffsets = await frame.evaluate(() => {
224
- return { sx: window.scrollX, sy: window.scrollY };
116
+ await browserContext.route('**/donobu.css', async (route) => {
117
+ await route.fulfill({
118
+ status: 200,
119
+ contentType: 'text/css',
120
+ body: MiscUtils_1.MiscUtils.getResourceFileAsString('donobu.css'),
225
121
  });
226
- localX += scrollOffsets.sx;
227
- localY += scrollOffsets.sy;
228
- }
229
- // Next, see if there's a deeper child frame (iframe) in this frame that covers (localX, localY)
230
- const childFrames = frame.childFrames();
231
- for (const child of childFrames) {
232
- // We'll see if child is same-origin by trying a small evaluate
233
- // If it's cross-origin, we'll catch the error & skip
234
- try {
235
- // Convert localX/Y into child's bounding box
236
- const childElement = await child.frameElement();
237
- const childBox = await childElement.boundingBox();
238
- if (!childBox) {
239
- continue;
240
- }
241
- // Check if local point is inside child's bounding box
242
- if (localX >= childBox.x &&
243
- localY >= childBox.y &&
244
- localX <= childBox.x + childBox.width &&
245
- localY <= childBox.y + childBox.height) {
246
- // Convert to child's local coords
247
- let childLocalX = localX - childBox.x;
248
- let childLocalY = localY - childBox.y;
249
- // Add child's scroll offset
250
- const childScroll = await child.evaluate(() => {
251
- return { sx: window.scrollX, sy: window.scrollY };
252
- });
253
- childLocalX += childScroll.sx;
254
- childLocalY += childScroll.sy;
255
- // Recurse deeper
256
- return await this.findDeepestFrameAtPoint(page, childLocalX, childLocalY, child);
257
- }
258
- }
259
- catch {
260
- // Probably cross-origin or some other error, skip
261
- }
262
- }
263
- // If we get here, none of the children contain the point (or are cross-origin),
264
- // so this frame is the deepest coverage.
265
- return { targetFrame: frame, localX, localY };
122
+ });
123
+ await browserContext.addInitScript(PlaywrightUtils.accessibilityTestInitScript());
124
+ await browserContext.addInitScript(PlaywrightUtils.clickableElementsTrackerInitScript());
125
+ await browserContext.addInitScript(PlaywrightUtils.dialogPromptTrackerInitScript());
126
+ await browserContext.addInitScript(PlaywrightUtils.smartSelectorGeneratorInitScript());
266
127
  }
267
128
  /**
268
- * Returns the given locator or its label, if it has one.
129
+ * Returns the given locator or its label, if it has one and is associated with a labelable element.
130
+ * Labelable elements include: button, input (except hidden), meter, output, progress, select, and textarea.
269
131
  */
270
132
  static async getLocatorOrItsLabel(element) {
271
133
  const timeoutMilliseconds = 5000;
@@ -284,6 +146,29 @@ class PlaywrightUtils {
284
146
  }
285
147
  return element;
286
148
  }
149
+ // Check if the element is a labelable element
150
+ // See https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/label
151
+ const isLabelable = await element.evaluate((elem) => {
152
+ const tagName = elem.tagName.toLowerCase();
153
+ if (tagName === 'button' ||
154
+ tagName === 'meter' ||
155
+ tagName === 'output' ||
156
+ tagName === 'progress' ||
157
+ tagName === 'select' ||
158
+ tagName === 'textarea') {
159
+ return true;
160
+ }
161
+ if (tagName === 'input') {
162
+ // Input is labelable except when type="hidden"
163
+ const type = elem.getAttribute('type')?.toLowerCase() || 'text';
164
+ return type !== 'hidden';
165
+ }
166
+ return false;
167
+ });
168
+ // If the element is not labelable, return the original locator
169
+ if (!isLabelable) {
170
+ return element;
171
+ }
287
172
  // Try to get the ID attribute
288
173
  const id = await element
289
174
  .getAttribute('id', {
@@ -618,12 +503,10 @@ class PlaywrightUtils {
618
503
  container.id = 'annotation-shadow-container';
619
504
  // Position container so child elements can be absolutely placed
620
505
  Object.assign(container.style, {
621
- position: 'absolute',
622
- top: '0',
623
- left: '0',
624
- width: '100%',
625
- height: '100%',
506
+ position: 'fixed', // anchor to viewport
507
+ inset: '0', // stretch across it
626
508
  pointerEvents: 'none', // Let clicks pass through
509
+ zIndex: '2147483647', // win every z-index fight
627
510
  });
628
511
  // Check if document.body exists before trying to append.
629
512
  if (document.body) {