@haibun/web-playwright 3.1.3 → 3.3.0

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 (109) hide show
  1. package/build/BrowserFactory.d.ts +11 -11
  2. package/build/BrowserFactory.d.ts.map +1 -1
  3. package/build/BrowserFactory.js +40 -46
  4. package/build/BrowserFactory.js.map +1 -1
  5. package/build/PlaywrightEvents.d.ts +2 -2
  6. package/build/PlaywrightEvents.d.ts.map +1 -1
  7. package/build/PlaywrightEvents.js +41 -23
  8. package/build/PlaywrightEvents.js.map +1 -1
  9. package/build/cycles.d.ts.map +1 -1
  10. package/build/cycles.js +82 -36
  11. package/build/cycles.js.map +1 -1
  12. package/build/interactionSteps.d.ts +40 -51
  13. package/build/interactionSteps.d.ts.map +1 -1
  14. package/build/interactionSteps.js +32 -51
  15. package/build/interactionSteps.js.map +1 -1
  16. package/build/rest-playwright.d.ts +25 -22
  17. package/build/rest-playwright.d.ts.map +1 -1
  18. package/build/rest-playwright.js +16 -17
  19. package/build/rest-playwright.js.map +1 -1
  20. package/build/twin-page.d.ts +1 -1
  21. package/build/twin-page.d.ts.map +1 -1
  22. package/build/twin-page.js +4 -8
  23. package/build/twin-page.js.map +1 -1
  24. package/build/web-playwright.d.ts +18 -37
  25. package/build/web-playwright.d.ts.map +1 -1
  26. package/build/web-playwright.js +60 -79
  27. package/build/web-playwright.js.map +1 -1
  28. package/package.json +12 -7
  29. package/build/monitor/MonitorHandler.d.ts +0 -52
  30. package/build/monitor/MonitorHandler.d.ts.map +0 -1
  31. package/build/monitor/MonitorHandler.js +0 -176
  32. package/build/monitor/MonitorHandler.js.map +0 -1
  33. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts +0 -9
  34. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts.map +0 -1
  35. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js +0 -27
  36. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js.map +0 -1
  37. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts +0 -9
  38. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts.map +0 -1
  39. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js +0 -17
  40. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js.map +0 -1
  41. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts +0 -8
  42. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts.map +0 -1
  43. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js +0 -26
  44. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js.map +0 -1
  45. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts +0 -13
  46. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts.map +0 -1
  47. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js +0 -47
  48. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js.map +0 -1
  49. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts +0 -9
  50. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts.map +0 -1
  51. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js +0 -147
  52. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js.map +0 -1
  53. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts +0 -32
  54. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts.map +0 -1
  55. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js +0 -258
  56. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js.map +0 -1
  57. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts +0 -9
  58. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts.map +0 -1
  59. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js +0 -19
  60. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js.map +0 -1
  61. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts +0 -9
  62. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts.map +0 -1
  63. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js +0 -21
  64. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js.map +0 -1
  65. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts +0 -9
  66. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts.map +0 -1
  67. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js +0 -16
  68. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js.map +0 -1
  69. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts +0 -20
  70. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts.map +0 -1
  71. package/build/monitor/artifactDisplays/artifactDisplayBase.js +0 -40
  72. package/build/monitor/artifactDisplays/artifactDisplayBase.js.map +0 -1
  73. package/build/monitor/controls.d.ts +0 -13
  74. package/build/monitor/controls.d.ts.map +0 -1
  75. package/build/monitor/controls.js +0 -349
  76. package/build/monitor/controls.js.map +0 -1
  77. package/build/monitor/disclosureJson.d.ts +0 -3
  78. package/build/monitor/disclosureJson.d.ts.map +0 -1
  79. package/build/monitor/disclosureJson.js +0 -353
  80. package/build/monitor/disclosureJson.js.map +0 -1
  81. package/build/monitor/graph/feature-bases.d.ts +0 -5
  82. package/build/monitor/graph/feature-bases.d.ts.map +0 -1
  83. package/build/monitor/graph/feature-bases.js +0 -36
  84. package/build/monitor/graph/feature-bases.js.map +0 -1
  85. package/build/monitor/graph/generateMermaidGraph.d.ts +0 -11
  86. package/build/monitor/graph/generateMermaidGraph.d.ts.map +0 -1
  87. package/build/monitor/graph/generateMermaidGraph.js +0 -314
  88. package/build/monitor/graph/generateMermaidGraph.js.map +0 -1
  89. package/build/monitor/graph/graphUtils.d.ts +0 -3
  90. package/build/monitor/graph/graphUtils.d.ts.map +0 -1
  91. package/build/monitor/graph/graphUtils.js +0 -26
  92. package/build/monitor/graph/graphUtils.js.map +0 -1
  93. package/build/monitor/graph/mermaidGraphLinks.d.ts +0 -3
  94. package/build/monitor/graph/mermaidGraphLinks.d.ts.map +0 -1
  95. package/build/monitor/graph/mermaidGraphLinks.js +0 -26
  96. package/build/monitor/graph/mermaidGraphLinks.js.map +0 -1
  97. package/build/monitor/messages.d.ts +0 -14
  98. package/build/monitor/messages.d.ts.map +0 -1
  99. package/build/monitor/messages.js +0 -359
  100. package/build/monitor/messages.js.map +0 -1
  101. package/build/monitor/monitor.d.ts +0 -25
  102. package/build/monitor/monitor.d.ts.map +0 -1
  103. package/build/monitor/monitor.js +0 -599
  104. package/build/monitor/monitor.js.map +0 -1
  105. package/build/monitor/test-utils.d.ts +0 -9
  106. package/build/monitor/test-utils.d.ts.map +0 -1
  107. package/build/monitor/test-utils.js +0 -70
  108. package/build/monitor/test-utils.js.map +0 -1
  109. package/web/monitor.html +0 -3715
@@ -1,7 +1,7 @@
1
1
  import { Browser, BrowserContext, Page, BrowserType, BrowserContextOptions } from 'playwright';
2
2
  import { PlaywrightEvents } from './PlaywrightEvents.js';
3
3
  import { TWorld } from '@haibun/core/lib/defs.js';
4
- import { TTagValue, TTag } from '@haibun/core/lib/ttag.js';
4
+ import { TTag } from '@haibun/core/lib/ttag.js';
5
5
  export declare const BROWSERS: {
6
6
  [name: string]: BrowserType;
7
7
  };
@@ -38,7 +38,7 @@ export declare class BrowserFactory {
38
38
  [name: string]: Page | undefined;
39
39
  };
40
40
  contextStats: {
41
- [sequence: string]: {
41
+ [featureNum: string]: {
42
42
  start: number;
43
43
  end?: number;
44
44
  duration?: number;
@@ -51,23 +51,23 @@ export declare class BrowserFactory {
51
51
  private constructor();
52
52
  static getBrowserFactory(world: TWorld, tagConfig: TTaggedBrowserFactoryOptions, tag?: string): BrowserFactory;
53
53
  getBrowser(type: string, tag?: string): Promise<Browser>;
54
- getExistingBrowserContextWithTag({ sequence }: {
55
- sequence: TTagValue;
54
+ getExistingBrowserContextWithTag({ featureNum }: {
55
+ featureNum: number;
56
56
  }): BrowserContext;
57
- closeContext({ sequence }: {
58
- sequence: TTagValue;
57
+ closeContext({ featureNum }: {
58
+ featureNum: number;
59
59
  }): Promise<void>;
60
60
  private captureVideoStart;
61
61
  static closeBrowsers(): Promise<void>;
62
62
  close(): Promise<void>;
63
- hasPage({ sequence }: {
64
- sequence: TTagValue;
63
+ hasPage({ featureNum }: {
64
+ featureNum: number;
65
65
  }, tab?: number): boolean;
66
- registerPopup({ sequence }: {
67
- sequence: TTagValue;
66
+ registerPopup({ featureNum }: {
67
+ featureNum: number;
68
68
  }, tab: number, popup: Page): void;
69
69
  getBrowserContextPage(tag: TTag, tab: number): Promise<Page>;
70
70
  private pageKey;
71
- private getBrowserContextWithSequence;
71
+ private getBrowserContextWithFeatureNum;
72
72
  }
73
73
  //# sourceMappingURL=BrowserFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserFactory.d.ts","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserFactory.d.ts","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { chromium, firefox, webkit, devices } from 'playwright';
2
- import { EExecutionMessageType } from '@haibun/core/lib/interfaces/logger.js';
3
2
  import { PlaywrightEvents } from './PlaywrightEvents.js';
4
- import { Timer } from '@haibun/core/lib/Timer.js';
3
+ import { Timer } from '@haibun/core/schema/protocol.js';
5
4
  export const BROWSERS = {
6
5
  firefox,
7
6
  chromium,
@@ -33,42 +32,37 @@ export class BrowserFactory {
33
32
  return browser;
34
33
  }
35
34
  }
36
- getExistingBrowserContextWithTag({ sequence }) {
37
- if (this.browserContexts[sequence]) {
38
- return this.browserContexts[sequence];
35
+ getExistingBrowserContextWithTag({ featureNum }) {
36
+ if (this.browserContexts[featureNum]) {
37
+ return this.browserContexts[featureNum];
39
38
  }
40
39
  }
41
- async closeContext({ sequence }) {
42
- this.world.logger.debug(`closed browser context ${sequence}`);
43
- if (this.browserContexts[sequence] !== undefined) {
44
- const p = this.pages[sequence];
40
+ async closeContext({ featureNum }) {
41
+ this.world.eventLogger.debug(`closed browser context ${featureNum}`);
42
+ if (this.browserContexts[featureNum] !== undefined) {
43
+ const p = this.pages[featureNum];
45
44
  if (p) {
46
45
  try {
47
46
  await p.close();
48
47
  }
49
48
  catch (error) {
50
- this.world.logger.error(`Error closing page: ${error}`);
49
+ this.world.eventLogger.error(`Error closing page: ${error}`);
51
50
  }
52
51
  }
53
52
  }
54
- await this.browserContexts[sequence]?.close();
55
- this.captureVideoStart(sequence);
56
- this.tracers[sequence]?.close();
57
- delete this.pages[sequence];
58
- delete this.browserContexts[sequence];
53
+ await this.browserContexts[featureNum]?.close();
54
+ this.captureVideoStart(featureNum);
55
+ this.tracers[featureNum]?.close();
56
+ delete this.pages[featureNum];
57
+ delete this.browserContexts[featureNum];
59
58
  }
60
- captureVideoStart(sequence) {
61
- this.contextStats[sequence].end = Timer.since();
62
- this.contextStats[sequence].duration = this.contextStats[sequence].end - this.contextStats[sequence].start;
63
- const vs = {
64
- incident: EExecutionMessageType.ACTION,
65
- artifacts: [{
66
- start: Timer.since() - this.contextStats[sequence].duration,
67
- artifactType: 'video/start'
68
- }],
69
- tag: this.world.tag
70
- };
71
- this.world.logger.debug(`video start`, vs);
59
+ captureVideoStart(featureNum) {
60
+ if (!this.contextStats[featureNum]) {
61
+ return;
62
+ }
63
+ this.contextStats[featureNum].end = Timer.since();
64
+ this.contextStats[featureNum].duration = this.contextStats[featureNum].end - this.contextStats[featureNum].start;
65
+ this.world.eventLogger.debug(`video stats for ${featureNum}: duration ${this.contextStats[featureNum].duration}`);
72
66
  }
73
67
  static async closeBrowsers() {
74
68
  for (const b in BrowserFactory.browsers) {
@@ -79,34 +73,34 @@ export class BrowserFactory {
79
73
  async close() {
80
74
  await BrowserFactory.closeBrowsers();
81
75
  }
82
- hasPage({ sequence }, tab) {
83
- return !!this.pages[this.pageKey(sequence, tab)];
76
+ hasPage({ featureNum }, tab) {
77
+ return !!this.pages[this.pageKey(featureNum, tab)];
84
78
  }
85
- registerPopup({ sequence }, tab, popup) {
86
- const tt = this.pageKey(sequence, tab);
79
+ registerPopup({ featureNum }, tab, popup) {
80
+ const tt = this.pageKey(featureNum, tab);
87
81
  this.pages[tt] = popup;
88
82
  }
89
83
  async getBrowserContextPage(tag, tab) {
90
- const { sequence } = tag;
91
- const pageKey = this.pageKey(sequence, tab);
84
+ const { featureNum } = tag;
85
+ const pageKey = this.pageKey(featureNum, tab);
92
86
  let page = this.pages[pageKey];
93
87
  if (page) {
94
88
  // await page.bringToFront();
95
89
  return page;
96
90
  }
97
- this.world.logger.debug(`creating new page for ${sequence}`);
98
- const context = await this.getBrowserContextWithSequence(sequence);
91
+ this.world.eventLogger.debug(`creating new page for ${featureNum}`);
92
+ const context = await this.getBrowserContextWithFeatureNum(featureNum);
99
93
  page = await context.newPage();
100
94
  const tracer = await (new PlaywrightEvents(this.world, page, tag)).init();
101
95
  this.pages[pageKey] = page;
102
- this.tracers[sequence] = tracer;
96
+ this.tracers[featureNum] = tracer;
103
97
  return page;
104
98
  }
105
- pageKey(sequence, tab) {
106
- return `${sequence}-${tab}`;
99
+ pageKey(featureNum, tab) {
100
+ return `${featureNum}-${tab}`;
107
101
  }
108
- async getBrowserContextWithSequence(sequence, tag = DEFAULT_CONFIG_TAG) {
109
- if (!this.browserContexts[sequence]) {
102
+ async getBrowserContextWithFeatureNum(featureNum, tag = DEFAULT_CONFIG_TAG) {
103
+ if (!this.browserContexts[featureNum]) {
110
104
  let browserContext;
111
105
  const config = BrowserFactory.configs[tag];
112
106
  const deviceContext = config.device
@@ -119,21 +113,21 @@ export class BrowserFactory {
119
113
  };
120
114
  const launchConfig = { ...deviceContext, ...config.options, ...config.launchOptions };
121
115
  if (config.persistentDirectory) {
122
- this.world.logger.debug(`creating new persistent context ${sequence} ${config.type}, ${config.persistentDirectory} with ${JSON.stringify(BrowserFactory.configs)}`);
116
+ this.world.eventLogger.debug(`creating new persistent context ${featureNum} ${config.type}, ${config.persistentDirectory} with ${JSON.stringify(BrowserFactory.configs)}`);
123
117
  browserContext = await BrowserFactory.configs[tag].browserType.launchPersistentContext(config.persistentDirectory, launchConfig);
124
118
  }
125
119
  else {
126
- this.world.logger.debug(`creating new context ${sequence} ${config.type}`);
120
+ this.world.eventLogger.debug(`creating new context ${featureNum} ${config.type}`);
127
121
  const browser = await this.getBrowser(config.type);
128
122
  browserContext = await browser.newContext(launchConfig);
129
123
  }
130
- this.browserContexts[sequence] = browserContext;
131
- this.contextStats[sequence] = { start: Timer.since() };
124
+ this.browserContexts[featureNum] = browserContext;
125
+ this.contextStats[featureNum] = { start: Timer.since() };
132
126
  if (BrowserFactory.configs.defaultTimeout) {
133
- this.browserContexts[sequence].setDefaultTimeout(config.defaultTimeout);
127
+ this.browserContexts[featureNum].setDefaultTimeout(config.defaultTimeout);
134
128
  }
135
129
  }
136
- return this.browserContexts[sequence];
130
+ return this.browserContexts[featureNum];
137
131
  }
138
132
  }
139
133
  //# sourceMappingURL=BrowserFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserFactory.js","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserFactory.js","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { Page } from 'playwright';
2
- import { TArtifactHTTPTrace } from '@haibun/core/lib/interfaces/logger.js';
3
2
  import { TTag } from '@haibun/core/lib/ttag.js';
4
3
  import { TWorld } from '@haibun/core/lib/defs.js';
5
4
  type TEtc = {
@@ -14,6 +13,7 @@ export declare class PlaywrightEvents {
14
13
  private page;
15
14
  private tag;
16
15
  navigateCount: number;
16
+ private pendingRequests;
17
17
  constructor(world: TWorld, page: Page, tag: TTag);
18
18
  init(): Promise<this>;
19
19
  private logRequest;
@@ -21,7 +21,7 @@ export declare class PlaywrightEvents {
21
21
  private logResponse;
22
22
  private framenavigated;
23
23
  close(): void;
24
- log(label: string, httpEvent: TArtifactHTTPTrace['httpEvent'], maybeFrameURL: string, targetURL: string, etc: TEtc): void;
24
+ log(label: string, httpEvent: 'request' | 'response' | 'route', maybeFrameURL: string, targetURL: string, etc: TEtc): void;
25
25
  }
26
26
  export {};
27
27
  //# sourceMappingURL=PlaywrightEvents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightEvents.d.ts","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA4B,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAA6D,MAAM,uCAAuC,CAAC;AAEtI,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAU,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAI1D,KAAK,IAAI,GAAG;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAA;AAED,qBAAa,gBAAgB;IAEhB,OAAO,CAAC,KAAK;IAAU,OAAO,CAAC,IAAI;IAAQ,OAAO,CAAC,GAAG;IADlE,aAAa,SAAK;gBACE,KAAK,EAAE,MAAM,EAAU,IAAI,EAAE,IAAI,EAAU,GAAG,EAAE,IAAI;IAElE,IAAI;IASV,OAAO,CAAC,UAAU;YAYJ,YAAY;IAM1B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;IAef,KAAK,IAAI,IAAI;IAKpB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;CAwBlH"}
1
+ {"version":3,"file":"PlaywrightEvents.d.ts","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA4B,MAAM,YAAY,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAKlD,KAAK,IAAI,GAAG;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAA;AAGD,qBAAa,gBAAgB;IAIhB,OAAO,CAAC,KAAK;IAAU,OAAO,CAAC,IAAI;IAAQ,OAAO,CAAC,GAAG;IAHlE,aAAa,SAAK;IAClB,OAAO,CAAC,eAAe,CAA8B;gBAEjC,KAAK,EAAE,MAAM,EAAU,IAAI,EAAE,IAAI,EAAU,GAAG,EAAE,IAAI;IAGlE,IAAI;IASV,OAAO,CAAC,UAAU;YAaJ,YAAY;IAM1B,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,cAAc;IAmBf,KAAK,IAAI,IAAI;IAKpB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;CA0BnH"}
@@ -1,20 +1,20 @@
1
- import { EExecutionMessageType } from '@haibun/core/lib/interfaces/logger.js'; // Updated imports
2
- import { shortenURI } from '@haibun/core/lib/util/index.js';
3
- import { Origin } from '@haibun/core/lib/defs.js';
1
+ import { HttpTraceArtifact } from '@haibun/core/schema/protocol.js';
2
+ import { Origin } from '@haibun/core/schema/protocol.js';
4
3
  import { DOMAIN_STRING } from '@haibun/core/lib/domain-types.js';
5
- import { VISITED_PAGES } from './web-playwright.js';
4
+ import { trackHttpHost, trackHttpRequest } from '@haibun/core/lib/http-observations.js';
6
5
  export class PlaywrightEvents {
7
6
  world;
8
7
  page;
9
8
  tag;
10
9
  navigateCount = 0;
10
+ pendingRequests = new Map();
11
11
  constructor(world, page, tag) {
12
12
  this.world = world;
13
13
  this.page = page;
14
14
  this.tag = tag;
15
15
  }
16
16
  async init() {
17
- this.world.logger.debug(`setPage ${JSON.stringify(this.tag)}`);
17
+ this.world.eventLogger.debug(`setPage ${JSON.stringify(this.tag)}`);
18
18
  this.page.on('request', this.logRequest.bind(this));
19
19
  // biome-disable-next-line @typescript-eslint/no-floating-promises
20
20
  await this.page.route('**/*', this.routeRequest.bind(this));
@@ -23,13 +23,14 @@ export class PlaywrightEvents {
23
23
  return this;
24
24
  }
25
25
  logRequest(request, type = 'request') {
26
+ this.pendingRequests.set(request, Date.now());
26
27
  const frameURL = request.frame().url();
27
28
  const etc = {
28
29
  method: request.method(),
29
30
  headers: request.headers(),
30
31
  postData: request.postData(),
31
32
  };
32
- this.log(`${type} ${etc.method}`, type, frameURL, request.url(), etc);
33
+ void this.log(`${type} ${etc.method}`, type, frameURL, request.url(), etc);
33
34
  return;
34
35
  }
35
36
  async routeRequest(route, request) {
@@ -38,13 +39,26 @@ export class PlaywrightEvents {
38
39
  await route.continue();
39
40
  }
40
41
  logResponse(response) {
41
- const frameURL = response.request().frame().url();
42
+ const request = response.request();
43
+ const startTime = this.pendingRequests.get(request);
44
+ const duration = startTime ? Date.now() - startTime : 0;
45
+ if (startTime) {
46
+ this.pendingRequests.delete(request);
47
+ }
48
+ const frameURL = request.frame().url();
42
49
  const etc = {
43
50
  status: response.status(),
44
51
  statusText: response.statusText(),
45
52
  headers: response.headers()
46
53
  };
47
- this.log(`response ${etc.status}`, 'response', frameURL, response.url(), etc);
54
+ void this.log(`response ${etc.status}`, 'response', frameURL, response.url(), etc);
55
+ // Track request using shared helper
56
+ trackHttpRequest(this.world, {
57
+ url: response.url(),
58
+ status: response.status(),
59
+ time: duration,
60
+ method: request.method()
61
+ });
48
62
  return;
49
63
  }
50
64
  framenavigated(frame) {
@@ -53,9 +67,13 @@ export class PlaywrightEvents {
53
67
  const provenance = { in: 'PlaywrightEvents.framenavigated', seq: [], when: 'framenavigated' };
54
68
  this.world.shared.setForStepper('WebPlaywright', { term: 'currentURI', value: url, domain: DOMAIN_STRING, origin: Origin.var }, provenance);
55
69
  this.world.shared.setForStepper('WebPlaywright', { term: 'navigateCount', value: this.navigateCount, domain: DOMAIN_STRING, origin: Origin.var }, provenance);
56
- // Add to Visited pages domain for verification with 'every url in Visited pages is ...'
57
- const visitedKey = `visited/${this.navigateCount}`;
58
- this.world.shared.setForStepper('WebPlaywright', { term: visitedKey, value: url, domain: VISITED_PAGES, origin: Origin.var }, provenance);
70
+ // Store visited pages in observations for 'every url observed in visited pages is ...'
71
+ if (!this.world.runtime.observations) {
72
+ this.world.runtime.observations = new Map();
73
+ }
74
+ const visitedPages = this.world.runtime.observations.get('visitedPages') || [];
75
+ visitedPages.push(url);
76
+ this.world.runtime.observations.set('visitedPages', visitedPages);
59
77
  this.navigateCount++;
60
78
  }
61
79
  }
@@ -74,19 +92,19 @@ export class PlaywrightEvents {
74
92
  requestingURL,
75
93
  ...etc
76
94
  };
77
- const requestingBase = requestingPage.replace(/\/[^/]*$/, '');
78
- const targetWithoutRequestingBase = targetURL.replace(requestingBase, '');
79
- const artifact = {
95
+ // Track HTTP hosts using shared helper
96
+ trackHttpHost(this.world, targetURL);
97
+ // Emit HTTP trace artifact
98
+ const artifact = HttpTraceArtifact.parse({
99
+ id: `http-trace-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
100
+ timestamp: Date.now(),
101
+ kind: 'artifact',
102
+ artifactType: 'http-trace',
103
+ level: 'debug',
80
104
  httpEvent,
81
- trace: logData,
82
- artifactType: 'json/http/trace'
83
- };
84
- const mc = {
85
- incident: EExecutionMessageType.TRACE,
86
- artifacts: [artifact],
87
- tag: this.tag
88
- };
89
- this.world.logger.debug(`playwright ${label} ${shortenURI(logData.requestingURL)} ➔ ${targetWithoutRequestingBase}`, mc);
105
+ trace: logData
106
+ });
107
+ this.world.eventLogger.emit(artifact);
90
108
  }
91
109
  }
92
110
  //# sourceMappingURL=PlaywrightEvents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightEvents.js","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaywrightEvents.js","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cycles.d.ts","sourceRoot":"","sources":["../src/cycles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAA+E,MAAM,0BAA0B,CAAC;AAGvI,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAGtE,eAAO,MAAM,MAAM,GAAI,IAAI,aAAa,KAAG,cAkDzC,CAAC"}
1
+ {"version":3,"file":"cycles.d.ts","sourceRoot":"","sources":["../src/cycles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,cAAc,EAA4F,MAAM,0BAA0B,CAAC;AAKxK,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA6CpD,eAAO,MAAM,MAAM,GAAI,IAAI,aAAa,KAAG,cAsCzC,CAAC"}
package/build/cycles.js CHANGED
@@ -1,34 +1,71 @@
1
1
  import { rmSync } from 'fs';
2
- import { resolve } from 'path/posix';
3
- import { EExecutionMessageType } from '@haibun/core/lib/interfaces/logger.js';
2
+ import { relative, resolve } from 'path';
3
+ import { VideoArtifact } from '@haibun/core/schema/protocol.js';
4
4
  import { EMediaTypes } from '@haibun/domain-storage/media-types.js';
5
- import { EMonitoringTypes } from './web-playwright.js';
6
5
  import { WebPlaywrightDomains } from './domains.js';
6
+ // HTTP trace observation sources
7
+ const httpTraceSources = [
8
+ {
9
+ name: 'http-trace hosts',
10
+ observe: (world) => {
11
+ const httpHosts = world.runtime.observations?.get('httpHosts');
12
+ if (!httpHosts)
13
+ return { items: [], metrics: {} };
14
+ const items = [...httpHosts.keys()];
15
+ const metrics = {};
16
+ for (const [host, count] of httpHosts.entries()) {
17
+ metrics[host] = { count };
18
+ }
19
+ return { items, metrics };
20
+ }
21
+ },
22
+ {
23
+ name: 'http-trace',
24
+ observe: (world) => {
25
+ const requests = world.runtime.observations?.get('httpRequests');
26
+ if (!requests)
27
+ return { items: [], metrics: {} };
28
+ const items = [...requests.keys()];
29
+ const metrics = {};
30
+ for (const [id, data] of requests.entries()) {
31
+ metrics[id] = data;
32
+ }
33
+ return { items, metrics };
34
+ }
35
+ },
36
+ {
37
+ name: 'visited pages',
38
+ observe: (world) => {
39
+ const visitedPages = world.runtime.observations?.get('visitedPages');
40
+ if (!visitedPages)
41
+ return { items: [], metrics: {} };
42
+ const metrics = {};
43
+ for (let i = 0; i < visitedPages.length; i++) {
44
+ metrics[visitedPages[i]] = { index: i };
45
+ }
46
+ return { items: visitedPages, metrics };
47
+ }
48
+ }
49
+ ];
7
50
  export const cycles = (wp) => ({
8
- getDomains: () => WebPlaywrightDomains,
51
+ getConcerns: () => ({ domains: WebPlaywrightDomains, sources: httpTraceSources }),
9
52
  // biome-disable-next-line @typescript-eslint/no-unused-vars
10
53
  async onFailure({ failedStep }) {
11
54
  if (wp.bf?.hasPage(wp.getWorld().tag, wp.tab)) {
12
- await wp.captureFailureScreenshot(EExecutionMessageType.ON_FAILURE, failedStep);
55
+ await wp.captureFailureScreenshot('failure', failedStep);
13
56
  }
14
57
  },
15
58
  async startExecution(resolvedFeatures) {
16
- if (wp.monitor) {
17
- await wp.createMonitor();
18
- await wp.monitorHandler.createMonitorPage(wp);
19
- }
20
59
  if (wp.twin) {
21
60
  await wp.createTwin();
22
61
  }
23
- await writeFeaturesArtifact(wp, 'features', resolvedFeatures);
24
62
  },
25
63
  async startFeature({ resolvedFeature, index }) {
26
64
  wp.tab = 0;
27
- if (wp.monitor === EMonitoringTypes.MONITOR_EACH) {
28
- await wp.callClosers(); // first tab
29
- await wp.monitorHandler.createMonitorPage(wp);
30
- await wp.monitorHandler.updateWorld(wp.getWorld());
31
- }
65
+ wp.resetVideoStartEmitted(); // Reset for new feature's video recording
66
+ // Reset API state to prevent header leakage between features
67
+ wp.extraHTTPHeaders = {};
68
+ wp.apiUserAgent = undefined;
32
69
  if (wp.twinPage) {
33
70
  wp.twinPage.updateWorld(wp.getWorld());
34
71
  }
@@ -42,42 +79,51 @@ export const cycles = (wp) => ({
42
79
  if (wp.twin) {
43
80
  await wp.twinPage.writePage();
44
81
  }
45
- if (wp.monitor === EMonitoringTypes.MONITOR_EACH) {
46
- await wp.callClosers();
47
- await wp.monitorHandler.writeMonitor();
48
- }
49
82
  },
50
83
  async endExecution() {
51
- if (wp.monitor === EMonitoringTypes.MONITOR_ALL) {
52
- await wp.callClosers();
53
- await wp.monitorHandler.writeMonitor();
54
- }
84
+ // empty
55
85
  },
56
86
  });
57
87
  async function writeFeaturesArtifact(wp, type, resolvedFeatures) {
58
- const loc = await wp.getCaptureDir('json');
59
- const mediaType = EMediaTypes.json;
60
- // FIXME shouldn't be fs dependant
61
- const path = resolve(wp.storage.fromLocation(mediaType, loc, `${type}.json`));
62
- await wp.storage.writeFile(path, JSON.stringify(resolvedFeatures, null, 2), mediaType);
88
+ const filename = `${type}.json`;
89
+ const contents = JSON.stringify(resolvedFeatures, null, 2);
90
+ await wp.storage.saveArtifact(filename, contents, EMediaTypes.json, 'json');
63
91
  }
64
92
  async function closeAfterFeature(wp) {
65
93
  for (const file of wp.downloaded) {
66
- wp.getWorld().logger.debug(`removing ${JSON.stringify(file)}`);
94
+ wp.getWorld().eventLogger.debug(`removing ${JSON.stringify(file)}`);
67
95
  rmSync(file);
68
96
  wp.downloaded = [];
69
97
  }
70
98
  if (wp.hasFactory) {
71
99
  if (wp.captureVideo) {
72
100
  const page = await wp.getPage();
73
- const path = await wp.storage.getRelativePath(await page.video().path());
74
- const artifact = { artifactType: 'video', path };
75
- const context = {
76
- incident: EExecutionMessageType.FEATURE_END,
77
- artifacts: [artifact],
78
- tag: wp.getWorld().tag
101
+ const videoPath = await page.video().path();
102
+ const world = wp.getWorld();
103
+ // Compute path relative to feature capture dir for serialized HTML
104
+ const basePath = wp.storage.getArtifactBasePath();
105
+ const featureRelPath = relative(resolve(basePath), videoPath);
106
+ // For artifact, use feature-relative path (strip featn-N prefix)
107
+ // const match = featureRelPath.match(/^featn-\d+(?:-.*)?\/(.*)$/);
108
+ // const path = match ? './' + match[1] : './' + featureRelPath;
109
+ // Emit video artifact event (with isTimeLined for timeline sync)
110
+ // VideoStartArtifact is emitted in getPage() when recording starts
111
+ const featureStep = {
112
+ seqPath: [world.tag.featureNum, 0, 0],
113
+ source: { path: world.runtime.feature || 'feature' },
114
+ in: 'feature video',
115
+ action: {},
79
116
  };
80
- wp.getWorld().logger.log('feature video', context);
117
+ const videoEvent = VideoArtifact.parse({
118
+ id: `feat-${world.tag.featureNum}.video`,
119
+ timestamp: Date.now(),
120
+ kind: 'artifact',
121
+ artifactType: 'video',
122
+ path: featureRelPath, // Use base-relative for live, transformed for serialized
123
+ mimetype: 'video/webm',
124
+ isTimeLined: true,
125
+ });
126
+ world.eventLogger.artifact(featureStep, videoEvent);
81
127
  }
82
128
  // close the context, which closes any pages
83
129
  if (wp.hasFactory) {
@@ -1 +1 @@
1
- {"version":3,"file":"cycles.js","sourceRoot":"","sources":["../src/cycles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cycles.js","sourceRoot":"","sources":["../src/cycles.ts"],"names":[],"mappings":"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"}