@haibun/web-playwright 1.43.0 → 1.44.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.
- package/build/BrowserFactory.d.ts +15 -27
- package/build/BrowserFactory.d.ts.map +1 -1
- package/build/BrowserFactory.js +71 -50
- package/build/BrowserFactory.js.map +1 -1
- package/build/PlaywrightEvents.d.ts +3 -3
- package/build/PlaywrightEvents.d.ts.map +1 -1
- package/build/PlaywrightEvents.js +17 -13
- package/build/PlaywrightEvents.js.map +1 -1
- package/build/monitor/XXlogToMonitor.d.ts +8 -0
- package/build/monitor/XXlogToMonitor.d.ts.map +1 -0
- package/build/monitor/XXlogToMonitor.js +151 -0
- package/build/monitor/XXlogToMonitor.js.map +1 -0
- package/build/monitor/controls.d.ts +3 -0
- package/build/monitor/controls.d.ts.map +1 -0
- package/build/monitor/controls.js +318 -0
- package/build/monitor/controls.js.map +1 -0
- package/build/monitor/disclosureJson.d.ts +3 -0
- package/build/monitor/disclosureJson.d.ts.map +1 -0
- package/build/monitor/disclosureJson.js +121 -0
- package/build/monitor/disclosureJson.js.map +1 -0
- package/build/monitor/mermaidDiagram.d.ts +22 -0
- package/build/monitor/mermaidDiagram.d.ts.map +1 -0
- package/build/monitor/mermaidDiagram.js +199 -0
- package/build/monitor/mermaidDiagram.js.map +1 -0
- package/build/monitor/messages.d.ts +18 -0
- package/build/monitor/messages.d.ts.map +1 -0
- package/build/monitor/messages.js +303 -0
- package/build/monitor/messages.js.map +1 -0
- package/build/monitor/monitor.d.ts +16 -0
- package/build/monitor/monitor.d.ts.map +1 -0
- package/build/monitor/monitor.js +61 -0
- package/build/monitor/monitor.js.map +1 -0
- package/build/monitor/monitorHandler.d.ts +12 -0
- package/build/monitor/monitorHandler.d.ts.map +1 -0
- package/build/monitor/monitorHandler.js +89 -0
- package/build/monitor/monitorHandler.js.map +1 -0
- package/build/rest-playwright.d.ts +60 -2
- package/build/rest-playwright.d.ts.map +1 -1
- package/build/rest-playwright.js +170 -51
- package/build/rest-playwright.js.map +1 -1
- package/build/web-playwright.d.ts +142 -54
- package/build/web-playwright.d.ts.map +1 -1
- package/build/web-playwright.js +327 -110
- package/build/web-playwright.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,26 +1,20 @@
|
|
|
1
|
-
import { Browser, BrowserContext, Page, BrowserType } from 'playwright';
|
|
2
|
-
import {
|
|
3
|
-
import { TTag, TTagValue } from '@haibun/core/build/lib/defs.js';
|
|
1
|
+
import { Browser, BrowserContext, Page, BrowserType, BrowserContextOptions } from 'playwright';
|
|
2
|
+
import { TTag, TTagValue, TWorld } from '@haibun/core/build/lib/defs.js';
|
|
4
3
|
import { PlaywrightEvents } from './PlaywrightEvents.js';
|
|
5
4
|
export declare const BROWSERS: {
|
|
6
5
|
[name: string]: BrowserType;
|
|
7
6
|
};
|
|
8
7
|
export type TBrowserTypes = 'firefox' | 'chromium' | 'webkit';
|
|
9
|
-
export type
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
export type TTaggedBrowserFactoryOptions = {
|
|
9
|
+
options: BrowserContextOptions;
|
|
10
|
+
persistentDirectory?: string;
|
|
11
|
+
browserType: BrowserType;
|
|
12
|
+
launchOptions: {
|
|
13
|
+
headless?: boolean;
|
|
12
14
|
devtools?: boolean;
|
|
13
15
|
args?: string[];
|
|
14
16
|
};
|
|
15
|
-
recordVideo?: {
|
|
16
|
-
dir: string;
|
|
17
|
-
size: {
|
|
18
|
-
width: 640;
|
|
19
|
-
height: 480;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
17
|
defaultTimeout?: number;
|
|
23
|
-
persistentDirectory?: boolean;
|
|
24
18
|
type?: TBrowserTypes;
|
|
25
19
|
device?: string;
|
|
26
20
|
};
|
|
@@ -29,14 +23,14 @@ export type PageInstance = Page & {
|
|
|
29
23
|
_guid: string;
|
|
30
24
|
};
|
|
31
25
|
export declare class BrowserFactory {
|
|
32
|
-
private
|
|
26
|
+
private world;
|
|
33
27
|
static browsers: {
|
|
34
28
|
[name: string]: Browser;
|
|
35
29
|
};
|
|
36
30
|
tracers: {
|
|
37
31
|
[name: string]: PlaywrightEvents;
|
|
38
32
|
};
|
|
39
|
-
|
|
33
|
+
browserContexts: {
|
|
40
34
|
[name: string]: BrowserContext;
|
|
41
35
|
};
|
|
42
36
|
pages: {
|
|
@@ -44,27 +38,19 @@ export declare class BrowserFactory {
|
|
|
44
38
|
};
|
|
45
39
|
static tracer?: PlaywrightEvents;
|
|
46
40
|
static configs: {
|
|
47
|
-
[name: string]:
|
|
48
|
-
options: TBrowserFactoryOptions;
|
|
49
|
-
browserType: BrowserType;
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
myBrowsers: {
|
|
53
|
-
[name: string]: Browser;
|
|
41
|
+
[name: string]: TTaggedBrowserFactoryOptions;
|
|
54
42
|
};
|
|
55
43
|
private constructor();
|
|
56
|
-
static getBrowserFactory(
|
|
44
|
+
static getBrowserFactory(world: TWorld, tagConfig: TTaggedBrowserFactoryOptions, tag?: string): Promise<BrowserFactory>;
|
|
57
45
|
getBrowser(type: string, tag?: string): Promise<Browser>;
|
|
58
|
-
|
|
46
|
+
getExistingBrowserContextWithTag({ sequence }: {
|
|
59
47
|
sequence: TTagValue;
|
|
60
48
|
}): BrowserContext;
|
|
61
|
-
private getBrowserContext;
|
|
62
49
|
closeContext({ sequence }: {
|
|
63
50
|
sequence: TTagValue;
|
|
64
51
|
}): Promise<void>;
|
|
65
52
|
static closeBrowsers(): Promise<void>;
|
|
66
53
|
close(): Promise<void>;
|
|
67
|
-
pageKey(sequence: number, tab?: number): string;
|
|
68
54
|
hasPage({ sequence }: {
|
|
69
55
|
sequence: TTagValue;
|
|
70
56
|
}, tab?: number): boolean;
|
|
@@ -72,5 +58,7 @@ export declare class BrowserFactory {
|
|
|
72
58
|
sequence: TTagValue;
|
|
73
59
|
}, tab: number, popup: Page): void;
|
|
74
60
|
getBrowserContextPage(tag: TTag, tab: number): Promise<Page>;
|
|
61
|
+
private pageKey;
|
|
62
|
+
private getBrowserContextWithSequence;
|
|
75
63
|
}
|
|
76
64
|
//# sourceMappingURL=BrowserFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFactory.d.ts","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BrowserFactory.d.ts","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAA6B,WAAW,EAAW,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnI,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,eAAO,MAAM,QAAQ,EAAE;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;CAInD,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9D,MAAM,MAAM,4BAA4B,GAAG;IAC1C,OAAO,EAAE,qBAAqB,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,qBAAa,cAAc;IAQN,OAAO,CAAC,KAAK;IAPjC,MAAM,CAAC,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAM;IAClD,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAM;IACnD,eAAe,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAM;IACzD,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAM;IACjD,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAa;IAC7C,MAAM,CAAC,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,4BAA4B,CAAA;KAAE,CAAM;IAEtE,OAAO;WAEM,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,4BAA4B,EAAE,GAAG,SAAqB;IAKlG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB1E,gCAAgC,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;IAOhE,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;WAiBlD,aAAa;IAMpB,KAAK;IAIJ,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,EAAE,GAAG,CAAC,EAAE,MAAM;IAI3D,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI;IAKvE,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzE,OAAO,CAAC,OAAO;YAID,6BAA6B;CAkC3C"}
|
package/build/BrowserFactory.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { chromium, firefox, webkit, devices } from 'playwright';
|
|
2
|
+
import { EExecutionMessageType } from '@haibun/core/build/lib/interfaces/logger.js'; // Updated imports
|
|
2
3
|
import { PlaywrightEvents } from './PlaywrightEvents.js';
|
|
3
4
|
export const BROWSERS = {
|
|
4
5
|
firefox,
|
|
@@ -7,80 +8,68 @@ export const BROWSERS = {
|
|
|
7
8
|
};
|
|
8
9
|
export const DEFAULT_CONFIG_TAG = '_default';
|
|
9
10
|
export class BrowserFactory {
|
|
10
|
-
|
|
11
|
+
world;
|
|
11
12
|
static browsers = {};
|
|
12
13
|
tracers = {};
|
|
13
|
-
|
|
14
|
+
browserContexts = {};
|
|
14
15
|
pages = {};
|
|
15
16
|
static tracer = undefined;
|
|
16
17
|
static configs = {};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this.logger = logger;
|
|
18
|
+
constructor(world) {
|
|
19
|
+
this.world = world;
|
|
20
20
|
}
|
|
21
|
-
static async getBrowserFactory(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!BROWSERS[options.type]) {
|
|
25
|
-
throw Error(`browserType not recognized ${options.type}`);
|
|
26
|
-
}
|
|
27
|
-
BrowserFactory.configs[tag] = { options, browserType: BROWSERS[options.type] };
|
|
28
|
-
return new BrowserFactory(logger);
|
|
21
|
+
static async getBrowserFactory(world, tagConfig, tag = DEFAULT_CONFIG_TAG) {
|
|
22
|
+
BrowserFactory.configs[tag] = tagConfig;
|
|
23
|
+
return Promise.resolve(new BrowserFactory(world));
|
|
29
24
|
}
|
|
30
25
|
async getBrowser(type, tag = DEFAULT_CONFIG_TAG) {
|
|
26
|
+
const config = BrowserFactory.configs[tag];
|
|
31
27
|
if (!BrowserFactory.browsers[type]) {
|
|
32
|
-
BrowserFactory.browsers[type] = await
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
BrowserFactory.browsers[type] = await config.browserType.launch({ ...config.options, ...config.launchOptions });
|
|
29
|
+
// Create context using the new structure
|
|
30
|
+
const vs = {
|
|
31
|
+
incident: EExecutionMessageType.ACTION, // Assuming ACTION is appropriate here
|
|
32
|
+
artifact: {
|
|
33
|
+
start: this.world.timer.since(),
|
|
34
|
+
artifactType: 'video/start'
|
|
35
|
+
},
|
|
36
|
+
tag: this.world.tag // Add the tag
|
|
37
|
+
};
|
|
38
|
+
this.world.logger.debug(`launched new ${type} browser`, vs);
|
|
35
39
|
}
|
|
36
40
|
return BrowserFactory.browsers[type];
|
|
37
41
|
}
|
|
38
|
-
|
|
39
|
-
if (this.
|
|
40
|
-
return this.
|
|
42
|
+
getExistingBrowserContextWithTag({ sequence }) {
|
|
43
|
+
if (this.browserContexts[sequence]) {
|
|
44
|
+
return this.browserContexts[sequence];
|
|
41
45
|
}
|
|
42
46
|
}
|
|
43
|
-
async getBrowserContext(sequence, tag = DEFAULT_CONFIG_TAG) {
|
|
44
|
-
if (!this.contexts[sequence]) {
|
|
45
|
-
let context;
|
|
46
|
-
if (BrowserFactory.configs.persistentDirectory) {
|
|
47
|
-
this.logger.info(`creating new persistent context ${sequence} ${BrowserFactory.configs[tag].options.type}, ${BrowserFactory.configs.persistentDirectory} with ${JSON.stringify(BrowserFactory.configs)}`);
|
|
48
|
-
context = await BrowserFactory.configs[tag].browserType.launchPersistentContext("", BrowserFactory.configs[tag].options);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.logger.info(`creating new context ${sequence} ${BrowserFactory.configs[tag].options.type}`);
|
|
52
|
-
const browser = await this.getBrowser(BrowserFactory.configs[tag].options.type);
|
|
53
|
-
const deviceContext = BrowserFactory.configs[tag].options.device ? { ...devices[BrowserFactory.configs[tag].options.device] } : {};
|
|
54
|
-
context = await browser.newContext({ ...deviceContext, ...BrowserFactory.configs[tag].options });
|
|
55
|
-
}
|
|
56
|
-
this.contexts[sequence] = context;
|
|
57
|
-
if (BrowserFactory.configs.defaultTimeout) {
|
|
58
|
-
this.contexts[sequence].setDefaultTimeout(BrowserFactory.configs[tag].options.defaultTimeout);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return this.contexts[sequence];
|
|
62
|
-
}
|
|
63
47
|
async closeContext({ sequence }) {
|
|
64
|
-
if (this.
|
|
48
|
+
if (this.browserContexts[sequence] !== undefined) {
|
|
65
49
|
const p = this.pages[sequence];
|
|
66
|
-
|
|
50
|
+
if (p) {
|
|
51
|
+
try {
|
|
52
|
+
await p.close();
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
this.world.logger.error(`Error closing page: ${error}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
67
58
|
}
|
|
68
|
-
await this.
|
|
59
|
+
await this.browserContexts[sequence]?.close();
|
|
69
60
|
this.tracers[sequence]?.close();
|
|
70
61
|
delete this.pages[sequence];
|
|
71
|
-
delete this.
|
|
62
|
+
delete this.browserContexts[sequence];
|
|
72
63
|
}
|
|
73
64
|
static async closeBrowsers() {
|
|
74
65
|
for (const b in BrowserFactory.browsers) {
|
|
75
66
|
await BrowserFactory.browsers[b].close();
|
|
67
|
+
delete BrowserFactory.browsers[b];
|
|
76
68
|
}
|
|
77
69
|
}
|
|
78
70
|
async close() {
|
|
79
71
|
await BrowserFactory.closeBrowsers();
|
|
80
72
|
}
|
|
81
|
-
pageKey(sequence, tab) {
|
|
82
|
-
return `${sequence}-${tab}`;
|
|
83
|
-
}
|
|
84
73
|
hasPage({ sequence }, tab) {
|
|
85
74
|
return !!this.pages[this.pageKey(sequence, tab)];
|
|
86
75
|
}
|
|
@@ -93,16 +82,48 @@ export class BrowserFactory {
|
|
|
93
82
|
const pageKey = this.pageKey(sequence, tab);
|
|
94
83
|
let page = this.pages[pageKey];
|
|
95
84
|
if (page) {
|
|
96
|
-
await page.bringToFront();
|
|
85
|
+
// await page.bringToFront();
|
|
97
86
|
return page;
|
|
98
87
|
}
|
|
99
|
-
this.logger.
|
|
100
|
-
const context = await this.
|
|
88
|
+
this.world.logger.debug(`creating new page for ${sequence}`);
|
|
89
|
+
const context = await this.getBrowserContextWithSequence(sequence);
|
|
101
90
|
page = await context.newPage();
|
|
102
|
-
const tracer = new PlaywrightEvents(this.logger, page, tag);
|
|
91
|
+
const tracer = new PlaywrightEvents(this.world.logger, page, tag);
|
|
103
92
|
this.pages[pageKey] = page;
|
|
104
93
|
this.tracers[sequence] = tracer;
|
|
105
94
|
return page;
|
|
106
95
|
}
|
|
96
|
+
pageKey(sequence, tab) {
|
|
97
|
+
return `${sequence}-${tab}`;
|
|
98
|
+
}
|
|
99
|
+
async getBrowserContextWithSequence(sequence, tag = DEFAULT_CONFIG_TAG) {
|
|
100
|
+
if (!this.browserContexts[sequence]) {
|
|
101
|
+
let browserContext;
|
|
102
|
+
const config = BrowserFactory.configs[tag];
|
|
103
|
+
const deviceContext = config.device
|
|
104
|
+
? { ...devices[config.device] }
|
|
105
|
+
: {
|
|
106
|
+
viewport: {
|
|
107
|
+
width: 800,
|
|
108
|
+
height: 600
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
const launchConfig = { ...deviceContext, ...config.options, ...config.launchOptions };
|
|
112
|
+
if (config.persistentDirectory) {
|
|
113
|
+
this.world.logger.debug(`creating new persistent context ${sequence} ${config.type}, ${config.persistentDirectory} with ${JSON.stringify(BrowserFactory.configs)}`);
|
|
114
|
+
browserContext = await BrowserFactory.configs[tag].browserType.launchPersistentContext(config.persistentDirectory, launchConfig);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.world.logger.debug(`creating new context ${sequence} ${config.type}`);
|
|
118
|
+
const browser = await this.getBrowser(config.type);
|
|
119
|
+
browserContext = await browser.newContext(launchConfig);
|
|
120
|
+
}
|
|
121
|
+
this.browserContexts[sequence] = browserContext;
|
|
122
|
+
if (BrowserFactory.configs.defaultTimeout) {
|
|
123
|
+
this.browserContexts[sequence].setDefaultTimeout(config.defaultTimeout);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return this.browserContexts[sequence];
|
|
127
|
+
}
|
|
107
128
|
}
|
|
108
129
|
//# sourceMappingURL=BrowserFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFactory.js","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BrowserFactory.js","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TTag } from '@haibun/core/build/lib/defs.js';
|
|
2
|
-
import { ILogger } from '@haibun/core/build/lib/interfaces/logger.js';
|
|
3
1
|
import { Page } from 'playwright';
|
|
2
|
+
import { TTag } from '@haibun/core/build/lib/defs.js';
|
|
3
|
+
import { TArtifactHTTPTrace, ILogger } from '@haibun/core/build/lib/interfaces/logger.js';
|
|
4
4
|
type TEtc = {
|
|
5
5
|
headers: Record<string, string>;
|
|
6
6
|
method?: string;
|
|
@@ -17,7 +17,7 @@ export declare class PlaywrightEvents {
|
|
|
17
17
|
private routeRequest;
|
|
18
18
|
private logResponse;
|
|
19
19
|
close(): void;
|
|
20
|
-
log(
|
|
20
|
+
log(label: string, httpEvent: TArtifactHTTPTrace['httpEvent'], maybeFrameURL: string, targetURL: string, etc: TEtc): void;
|
|
21
21
|
}
|
|
22
22
|
export {};
|
|
23
23
|
//# sourceMappingURL=PlaywrightEvents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightEvents.d.ts","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"
|
|
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,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAmB,kBAAkB,EAAqB,OAAO,EAAyB,MAAM,6CAA6C,CAAC;AAGrJ,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;IAChB,OAAO,CAAC,MAAM;IAAW,OAAO,CAAC,IAAI;IAAQ,OAAO,CAAC,GAAG;gBAAhD,MAAM,EAAE,OAAO,EAAU,IAAI,EAAE,IAAI,EAAU,GAAG,EAAE,IAAI;YAO5D,UAAU;YAYV,YAAY;YAMZ,WAAW;IAWlB,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,3 +1,5 @@
|
|
|
1
|
+
import { EExecutionMessageType } from '@haibun/core/build/lib/interfaces/logger.js'; // Updated imports
|
|
2
|
+
import { shortenURI } from '@haibun/core/build/lib/util/index.js';
|
|
1
3
|
export class PlaywrightEvents {
|
|
2
4
|
logger;
|
|
3
5
|
page;
|
|
@@ -6,7 +8,7 @@ export class PlaywrightEvents {
|
|
|
6
8
|
this.logger = logger;
|
|
7
9
|
this.page = page;
|
|
8
10
|
this.tag = tag;
|
|
9
|
-
this.logger.
|
|
11
|
+
this.logger.debug(`setPage ${JSON.stringify(tag)}`);
|
|
10
12
|
page.on('request', this.logRequest.bind(this));
|
|
11
13
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
12
14
|
page.route('**/*', this.routeRequest.bind(this));
|
|
@@ -19,7 +21,8 @@ export class PlaywrightEvents {
|
|
|
19
21
|
headers: request.headers(),
|
|
20
22
|
postData: request.postData(),
|
|
21
23
|
};
|
|
22
|
-
this.log(type, frameURL, request.url(), etc);
|
|
24
|
+
this.log(`${type} ${etc.method}`, type, frameURL, request.url(), etc);
|
|
25
|
+
return Promise.resolve();
|
|
23
26
|
}
|
|
24
27
|
async routeRequest(route, request) {
|
|
25
28
|
await this.logRequest(request, 'route');
|
|
@@ -33,14 +36,15 @@ export class PlaywrightEvents {
|
|
|
33
36
|
statusText: response.statusText(),
|
|
34
37
|
headers: response.headers()
|
|
35
38
|
};
|
|
36
|
-
this.log('response', frameURL, response.url(), etc);
|
|
39
|
+
this.log(`response ${etc.status}`, 'response', frameURL, response.url(), etc);
|
|
40
|
+
return Promise.resolve();
|
|
37
41
|
}
|
|
38
42
|
close() {
|
|
39
43
|
this.page.off('request', this.logRequest.bind(this));
|
|
40
44
|
// Note: Playwright doesn't provide a direct way to remove a specific route handler
|
|
41
45
|
this.page.off('response', this.logResponse.bind(this));
|
|
42
46
|
}
|
|
43
|
-
log(
|
|
47
|
+
log(label, httpEvent, maybeFrameURL, targetURL, etc) {
|
|
44
48
|
const requestingPage = this.page.url();
|
|
45
49
|
const frameURL = maybeFrameURL === requestingPage ? undefined : maybeFrameURL;
|
|
46
50
|
const requestingURL = frameURL ? `frame ${frameURL} on ${requestingPage}` : requestingPage;
|
|
@@ -52,17 +56,17 @@ export class PlaywrightEvents {
|
|
|
52
56
|
};
|
|
53
57
|
const requestingBase = requestingPage.replace(/\/[^/]*$/, '');
|
|
54
58
|
const targetWithoutRequestingBase = targetURL.replace(requestingBase, '');
|
|
59
|
+
const artifact = {
|
|
60
|
+
httpEvent,
|
|
61
|
+
trace: logData,
|
|
62
|
+
artifactType: 'json/http/trace'
|
|
63
|
+
};
|
|
55
64
|
const mc = {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
},
|
|
60
|
-
artifact: {
|
|
61
|
-
content: logData,
|
|
62
|
-
type: 'json/playwright/trace'
|
|
63
|
-
}
|
|
65
|
+
incident: EExecutionMessageType.TRACE,
|
|
66
|
+
artifact,
|
|
67
|
+
tag: this.tag
|
|
64
68
|
};
|
|
65
|
-
this.logger.debug(`playwright ${
|
|
69
|
+
this.logger.debug(`playwright ${label} ${shortenURI(logData.requestingURL)} ➔ ${targetWithoutRequestingBase}`, mc);
|
|
66
70
|
}
|
|
67
71
|
}
|
|
68
72
|
//# sourceMappingURL=PlaywrightEvents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightEvents.js","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlaywrightEvents.js","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CLASS_DISAPPEARS = "haibun-disappears";
|
|
2
|
+
export declare const CLASS_LOADER = "haibun-loader";
|
|
3
|
+
export declare const logToElement: (el: HTMLElement, { level, message, messageContext }: {
|
|
4
|
+
level: string;
|
|
5
|
+
message: string;
|
|
6
|
+
messageContext?: string;
|
|
7
|
+
}) => void;
|
|
8
|
+
//# sourceMappingURL=XXlogToMonitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XXlogToMonitor.d.ts","sourceRoot":"","sources":["../../src/monitor/XXlogToMonitor.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,eAAO,MAAM,YAAY,GACxB,IAAI,WAAW,EACf,oCAAoC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,SA8J/F,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
export const CLASS_DISAPPEARS = 'haibun-disappears';
|
|
2
|
+
export const CLASS_LOADER = 'haibun-loader';
|
|
3
|
+
export const logToElement = (el, { level, message, messageContext }) => {
|
|
4
|
+
if (!el || !el.appendChild) {
|
|
5
|
+
throw new Error('Invalid element provided to logToElement:' + el);
|
|
6
|
+
}
|
|
7
|
+
const isContextEmpty = (messageContext) => {
|
|
8
|
+
return !messageContext || messageContext === '{}';
|
|
9
|
+
};
|
|
10
|
+
function createLoader(content) {
|
|
11
|
+
const loader = document.createElement('div');
|
|
12
|
+
loader.classList.add('haibun-loader');
|
|
13
|
+
loader.textContent = content;
|
|
14
|
+
return loader;
|
|
15
|
+
}
|
|
16
|
+
function createDetailsDiv(level, latest, messageContext) {
|
|
17
|
+
const detailsDiv = document.createElement('div');
|
|
18
|
+
detailsDiv.classList.add('haibun-details-div');
|
|
19
|
+
if (!isContextEmpty(messageContext)) {
|
|
20
|
+
const summary = document.createElement('summary');
|
|
21
|
+
const details = document.createElement('details');
|
|
22
|
+
summary.innerHTML = `${level}<div class="time-small">${('' + latest / 1000).replace('.', ':')}</div>`;
|
|
23
|
+
const contextPre = document.createElement('pre');
|
|
24
|
+
contextPre.textContent = messageContext;
|
|
25
|
+
details.appendChild(summary);
|
|
26
|
+
details.appendChild(contextPre);
|
|
27
|
+
detailsDiv.appendChild(details);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const loader = createLoader('');
|
|
31
|
+
detailsDiv.appendChild(loader);
|
|
32
|
+
}
|
|
33
|
+
return detailsDiv;
|
|
34
|
+
}
|
|
35
|
+
function createArtifactDiv(message, a) {
|
|
36
|
+
const artifactDiv = document.createElement('div');
|
|
37
|
+
artifactDiv.classList.add('haibun-messages-div');
|
|
38
|
+
const details = document.createElement('details');
|
|
39
|
+
let detailsLabel = a.artifact.artifactType;
|
|
40
|
+
if (a.artifact.artifactType === 'html' && a.artifact.content) {
|
|
41
|
+
const contentDiv = document.createElement('iframe');
|
|
42
|
+
contentDiv.srcdoc = a.artifact.content;
|
|
43
|
+
contentDiv.style.border = 'none';
|
|
44
|
+
contentDiv.style.width = '100%';
|
|
45
|
+
contentDiv.style.height = '80vh';
|
|
46
|
+
details.appendChild(contentDiv);
|
|
47
|
+
}
|
|
48
|
+
else if (a.artifact.artifactType === 'image') {
|
|
49
|
+
const contextPicture = document.createElement('img');
|
|
50
|
+
contextPicture.alt = `Screen capture from message`;
|
|
51
|
+
contextPicture.src = a.artifact.path;
|
|
52
|
+
details.appendChild(contextPicture);
|
|
53
|
+
}
|
|
54
|
+
else if (a.artifact.artifactType === 'video') {
|
|
55
|
+
const contextVideo = document.createElement('video');
|
|
56
|
+
contextVideo.controls = true;
|
|
57
|
+
contextVideo.src = a.artifact.path;
|
|
58
|
+
contextVideo.style.width = '320px';
|
|
59
|
+
const haibunVideo = document.querySelector('#haibun-video');
|
|
60
|
+
if (haibunVideo) {
|
|
61
|
+
haibunVideo.replaceChildren(contextVideo);
|
|
62
|
+
haibunVideo.style.display = 'flex';
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
console.info('cannot find #haibun-video');
|
|
66
|
+
details.appendChild(contextVideo);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (a.artifact.artifactType === 'video/start') {
|
|
70
|
+
const startSpan = document.createElement('span');
|
|
71
|
+
startSpan.id = 'haibun-video-start';
|
|
72
|
+
startSpan.dataset.start = a.artifact.content;
|
|
73
|
+
document.body.appendChild(startSpan);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
if (a.artifact.artifactType === 'json/playwright/trace') {
|
|
77
|
+
detailsLabel = `⇄`;
|
|
78
|
+
}
|
|
79
|
+
const contextPre = document.createElement('pre');
|
|
80
|
+
contextPre.classList.add('haibun-message-details-json');
|
|
81
|
+
contextPre.textContent = JSON.stringify(a.artifact, null, 2);
|
|
82
|
+
details.appendChild(contextPre);
|
|
83
|
+
}
|
|
84
|
+
const summary = document.createElement('summary');
|
|
85
|
+
const labelSpan = document.createElement('span');
|
|
86
|
+
labelSpan.className = 'details-type';
|
|
87
|
+
labelSpan.textContent = detailsLabel;
|
|
88
|
+
summary.textContent = message;
|
|
89
|
+
summary.appendChild(labelSpan);
|
|
90
|
+
details.appendChild(summary);
|
|
91
|
+
const detailsWrapper = document.createElement('div');
|
|
92
|
+
detailsWrapper.classList.add('haibun-artifact-content');
|
|
93
|
+
detailsWrapper.appendChild(details);
|
|
94
|
+
artifactDiv.appendChild(detailsWrapper);
|
|
95
|
+
return artifactDiv;
|
|
96
|
+
}
|
|
97
|
+
function createMessagesDiv(message) {
|
|
98
|
+
const messagesDiv = document.createElement('div');
|
|
99
|
+
messagesDiv.classList.add('haibun-messages-div');
|
|
100
|
+
messagesDiv.textContent = message;
|
|
101
|
+
return messagesDiv;
|
|
102
|
+
}
|
|
103
|
+
function getStartTime() {
|
|
104
|
+
let startSpan = document.getElementById('haibun-monitor-start');
|
|
105
|
+
if (!startSpan) {
|
|
106
|
+
startSpan = document.createElement('span');
|
|
107
|
+
startSpan.id = 'haibun-monitor-start';
|
|
108
|
+
startSpan.dataset.startTime = `${Date.now()}`;
|
|
109
|
+
document.body.appendChild(startSpan);
|
|
110
|
+
}
|
|
111
|
+
const startTime = parseInt(startSpan.dataset.startTime, 10);
|
|
112
|
+
return startTime;
|
|
113
|
+
}
|
|
114
|
+
const existingNoContextElements = el.querySelectorAll(`.haibun-disappears`);
|
|
115
|
+
existingNoContextElements.forEach((element) => (element.classList.value = 'disappeared'));
|
|
116
|
+
const container = document.createElement('div');
|
|
117
|
+
const startTime = getStartTime();
|
|
118
|
+
container.classList.add('haibun-log-container', `haibun-level-${level}`);
|
|
119
|
+
const latest = Date.now() - startTime;
|
|
120
|
+
container.dataset.time = `${latest}`;
|
|
121
|
+
if (isContextEmpty(messageContext)) {
|
|
122
|
+
container.classList.add('haibun-disappears');
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
try {
|
|
126
|
+
const c = JSON.parse(messageContext);
|
|
127
|
+
if (c.topic.stage === 'Executor') {
|
|
128
|
+
message = `${message} ${c.topic.result.in}`;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
console.error('Error parsing messageContext', messageContext, e);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const detailsDiv = createDetailsDiv(level, latest, messageContext);
|
|
136
|
+
container.appendChild(detailsDiv);
|
|
137
|
+
const a = JSON.parse(messageContext);
|
|
138
|
+
if (a.artifact) {
|
|
139
|
+
const artifact = createArtifactDiv(message, a);
|
|
140
|
+
container.appendChild(artifact);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const messagesDiv = createMessagesDiv(message);
|
|
144
|
+
container.appendChild(messagesDiv);
|
|
145
|
+
}
|
|
146
|
+
el.appendChild(container);
|
|
147
|
+
if (el.scrollHeight > el.clientHeight) {
|
|
148
|
+
container.scrollIntoView({ block: 'end' });
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=XXlogToMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XXlogToMonitor.js","sourceRoot":"","sources":["../../src/monitor/XXlogToMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/monitor/controls.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,SAoC5B;AAoED,wBAAgB,kBAAkB,SAmOjC"}
|