@haibun/web-playwright 1.32.1 → 1.32.3
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/package.json +6 -6
- package/build/BrowserFactory.d.ts +0 -75
- package/build/BrowserFactory.js +0 -108
- package/build/BrowserFactory.js.map +0 -1
- package/build/BrowserFactory.test.d.ts +0 -1
- package/build/BrowserFactory.test.js +0 -66
- package/build/BrowserFactory.test.js.map +0 -1
- package/build/PlaywrightEvents.d.ts +0 -13
- package/build/PlaywrightEvents.js +0 -80
- package/build/PlaywrightEvents.js.map +0 -1
- package/build/web-playwright.d.ts +0 -330
- package/build/web-playwright.js +0 -598
- package/build/web-playwright.js.map +0 -1
- package/build/web-playwright.test.d.ts +0 -1
- package/build/web-playwright.test.js +0 -27
- package/build/web-playwright.test.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haibun/web-playwright",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.32.
|
|
4
|
+
"version": "1.32.3",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "build/web-playwright.js",
|
|
7
7
|
"files": [
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"author": "",
|
|
21
21
|
"license": "ISC",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@haibun/core": "1.32.
|
|
24
|
-
"@haibun/domain-storage": "1.32.
|
|
25
|
-
"@haibun/domain-webpage": "1.32.
|
|
26
|
-
"playwright": "1.
|
|
23
|
+
"@haibun/core": "1.32.2",
|
|
24
|
+
"@haibun/domain-storage": "1.32.2",
|
|
25
|
+
"@haibun/domain-webpage": "1.32.2",
|
|
26
|
+
"playwright": "^1.40.1"
|
|
27
27
|
},
|
|
28
28
|
"gitHead": "7cf9680bd922fb622fb59f1e6bf5b65284cb8fd5"
|
|
29
|
-
}
|
|
29
|
+
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Browser, BrowserContext, Page, BrowserType } from 'playwright';
|
|
2
|
-
import { ILogger } from '@haibun/core/build/lib/interfaces/logger.js';
|
|
3
|
-
import { TTag, TTagValue } from '@haibun/core/build/lib/defs.js';
|
|
4
|
-
import { PlaywrightEvents } from './PlaywrightEvents.js';
|
|
5
|
-
export declare const BROWSERS: {
|
|
6
|
-
[name: string]: BrowserType;
|
|
7
|
-
};
|
|
8
|
-
export type TBrowserTypes = 'firefox' | 'chromium' | 'webkit';
|
|
9
|
-
export type TBrowserFactoryOptions = {
|
|
10
|
-
browser: {
|
|
11
|
-
headless: boolean;
|
|
12
|
-
devtools?: boolean;
|
|
13
|
-
args?: string[];
|
|
14
|
-
};
|
|
15
|
-
recordVideo?: {
|
|
16
|
-
dir: string;
|
|
17
|
-
size: {
|
|
18
|
-
width: 640;
|
|
19
|
-
height: 480;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
defaultTimeout?: number;
|
|
23
|
-
persistentDirectory?: boolean;
|
|
24
|
-
type?: TBrowserTypes;
|
|
25
|
-
device?: string;
|
|
26
|
-
};
|
|
27
|
-
export declare const DEFAULT_CONFIG_TAG = "_default";
|
|
28
|
-
export type PageInstance = Page & {
|
|
29
|
-
_guid: string;
|
|
30
|
-
};
|
|
31
|
-
export declare class BrowserFactory {
|
|
32
|
-
static browsers: {
|
|
33
|
-
[name: string]: Browser;
|
|
34
|
-
};
|
|
35
|
-
tracers: {
|
|
36
|
-
[name: string]: PlaywrightEvents;
|
|
37
|
-
};
|
|
38
|
-
contexts: {
|
|
39
|
-
[name: string]: BrowserContext;
|
|
40
|
-
};
|
|
41
|
-
pages: {
|
|
42
|
-
[name: string]: Page | undefined;
|
|
43
|
-
};
|
|
44
|
-
logger: ILogger;
|
|
45
|
-
static tracer?: PlaywrightEvents;
|
|
46
|
-
static configs: {
|
|
47
|
-
[name: string]: {
|
|
48
|
-
options: TBrowserFactoryOptions;
|
|
49
|
-
browserType: BrowserType;
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
myBrowsers: {
|
|
53
|
-
[name: string]: Browser;
|
|
54
|
-
};
|
|
55
|
-
private constructor();
|
|
56
|
-
static getBrowserFactory(logger: ILogger, options: TBrowserFactoryOptions, tag?: string): Promise<BrowserFactory>;
|
|
57
|
-
getBrowser(type: string, tag?: string): Promise<Browser>;
|
|
58
|
-
getExistingContext({ sequence }: {
|
|
59
|
-
sequence: TTagValue;
|
|
60
|
-
}): BrowserContext;
|
|
61
|
-
private getBrowserContext;
|
|
62
|
-
closeContext({ sequence }: {
|
|
63
|
-
sequence: TTagValue;
|
|
64
|
-
}): Promise<void>;
|
|
65
|
-
static closeBrowsers(): Promise<void>;
|
|
66
|
-
close(): Promise<void>;
|
|
67
|
-
pageKey(sequence: number, tab?: number): string;
|
|
68
|
-
hasPage({ sequence }: {
|
|
69
|
-
sequence: TTagValue;
|
|
70
|
-
}, tab?: number): boolean;
|
|
71
|
-
registerPopup({ sequence }: {
|
|
72
|
-
sequence: TTagValue;
|
|
73
|
-
}, tab: number, popup: Page): void;
|
|
74
|
-
getBrowserContextPage(tag: TTag, tab: number): Promise<Page>;
|
|
75
|
-
}
|
package/build/BrowserFactory.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { chromium, firefox, webkit, devices } from 'playwright';
|
|
2
|
-
import { PlaywrightEvents } from './PlaywrightEvents.js';
|
|
3
|
-
export const BROWSERS = {
|
|
4
|
-
firefox,
|
|
5
|
-
chromium,
|
|
6
|
-
webkit,
|
|
7
|
-
};
|
|
8
|
-
export const DEFAULT_CONFIG_TAG = '_default';
|
|
9
|
-
export class BrowserFactory {
|
|
10
|
-
static browsers = {};
|
|
11
|
-
tracers = {};
|
|
12
|
-
contexts = {};
|
|
13
|
-
pages = {};
|
|
14
|
-
logger;
|
|
15
|
-
static tracer = undefined;
|
|
16
|
-
static configs = {};
|
|
17
|
-
myBrowsers;
|
|
18
|
-
constructor(logger) {
|
|
19
|
-
this.logger = logger;
|
|
20
|
-
}
|
|
21
|
-
static async getBrowserFactory(logger, options, tag = DEFAULT_CONFIG_TAG) {
|
|
22
|
-
options.type = options.type || 'chromium';
|
|
23
|
-
options.device = options.device || '';
|
|
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);
|
|
29
|
-
}
|
|
30
|
-
async getBrowser(type, tag = DEFAULT_CONFIG_TAG) {
|
|
31
|
-
if (!BrowserFactory.browsers[type]) {
|
|
32
|
-
BrowserFactory.browsers[type] = await BrowserFactory.configs[tag].browserType
|
|
33
|
-
.launch(BrowserFactory.configs[tag].options.browser);
|
|
34
|
-
this.logger.info(`launched new ${type} browser`);
|
|
35
|
-
}
|
|
36
|
-
return BrowserFactory.browsers[type];
|
|
37
|
-
}
|
|
38
|
-
getExistingContext({ sequence }) {
|
|
39
|
-
if (this.contexts[sequence]) {
|
|
40
|
-
return this.contexts[sequence];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
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
|
-
async closeContext({ sequence }) {
|
|
64
|
-
if (this.contexts[sequence] !== undefined) {
|
|
65
|
-
const p = this.pages[sequence];
|
|
66
|
-
await p && p?.close();
|
|
67
|
-
}
|
|
68
|
-
await this.contexts[sequence]?.close();
|
|
69
|
-
this.tracers[sequence]?.close();
|
|
70
|
-
delete this.pages[sequence];
|
|
71
|
-
delete this.contexts[sequence];
|
|
72
|
-
}
|
|
73
|
-
static async closeBrowsers() {
|
|
74
|
-
for (const b in BrowserFactory.browsers) {
|
|
75
|
-
await BrowserFactory.browsers[b].close();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async close() {
|
|
79
|
-
await BrowserFactory.closeBrowsers();
|
|
80
|
-
}
|
|
81
|
-
pageKey(sequence, tab) {
|
|
82
|
-
return `${sequence}-${tab}`;
|
|
83
|
-
}
|
|
84
|
-
hasPage({ sequence }, tab) {
|
|
85
|
-
return !!this.pages[this.pageKey(sequence, tab)];
|
|
86
|
-
}
|
|
87
|
-
registerPopup({ sequence }, tab, popup) {
|
|
88
|
-
const tt = this.pageKey(sequence, tab);
|
|
89
|
-
this.pages[tt] = popup;
|
|
90
|
-
}
|
|
91
|
-
async getBrowserContextPage(tag, tab) {
|
|
92
|
-
const { sequence } = tag;
|
|
93
|
-
const pageKey = this.pageKey(sequence, tab);
|
|
94
|
-
let page = this.pages[pageKey];
|
|
95
|
-
if (page) {
|
|
96
|
-
await page.bringToFront();
|
|
97
|
-
return page;
|
|
98
|
-
}
|
|
99
|
-
this.logger.info(`creating new page for ${sequence}`);
|
|
100
|
-
const context = await this.getBrowserContext(sequence);
|
|
101
|
-
page = await context.newPage();
|
|
102
|
-
const tracer = new PlaywrightEvents(this.logger, page, tag);
|
|
103
|
-
this.pages[pageKey] = page;
|
|
104
|
-
this.tracers[sequence] = tracer;
|
|
105
|
-
return page;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=BrowserFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFactory.js","sourceRoot":"","sources":["../src/BrowserFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import Logger, { LOGGER_NOTHING } from "@haibun/core/build/lib/Logger.js";
|
|
2
|
-
import { BrowserFactory, DEFAULT_CONFIG_TAG } from "./BrowserFactory.js";
|
|
3
|
-
import { getDefaultTag } from "@haibun/core/build/lib/test/lib.js";
|
|
4
|
-
const browserContextOptions = {
|
|
5
|
-
browser: {
|
|
6
|
-
headless: true
|
|
7
|
-
},
|
|
8
|
-
};
|
|
9
|
-
describe("types", () => {
|
|
10
|
-
it("gets type and device", async () => {
|
|
11
|
-
await BrowserFactory.getBrowserFactory(new Logger(LOGGER_NOTHING), {
|
|
12
|
-
...browserContextOptions,
|
|
13
|
-
type: 'webkit',
|
|
14
|
-
device: 'Blackberry PlayBook'
|
|
15
|
-
});
|
|
16
|
-
expect(BrowserFactory.configs[DEFAULT_CONFIG_TAG].options.type).toBe('webkit');
|
|
17
|
-
expect(BrowserFactory.configs[DEFAULT_CONFIG_TAG].options.device).toBe("Blackberry PlayBook");
|
|
18
|
-
await BrowserFactory.closeBrowsers();
|
|
19
|
-
});
|
|
20
|
-
it("missing type", async () => {
|
|
21
|
-
expect(async () => await BrowserFactory.getBrowserFactory(new Logger(LOGGER_NOTHING), {
|
|
22
|
-
...browserContextOptions,
|
|
23
|
-
type: 'noodles'
|
|
24
|
-
})).rejects.toThrow();
|
|
25
|
-
BrowserFactory.closeBrowsers();
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
describe('browser, context, page', () => {
|
|
29
|
-
it('page, context and browser', async () => {
|
|
30
|
-
const logger = new Logger(LOGGER_NOTHING);
|
|
31
|
-
const bfa = await BrowserFactory.getBrowserFactory(logger, browserContextOptions);
|
|
32
|
-
const test = getDefaultTag(0);
|
|
33
|
-
const test2 = getDefaultTag(1);
|
|
34
|
-
const pa1 = await bfa.getBrowserContextPage(test, 0);
|
|
35
|
-
expect(pa1).toBeDefined();
|
|
36
|
-
expect(Object.keys(BrowserFactory.browsers).length).toBe(1);
|
|
37
|
-
expect(Object.keys(bfa.contexts).length).toBe(1);
|
|
38
|
-
/*
|
|
39
|
-
|
|
40
|
-
const pa2 = await bfa.getBrowserContextPage(test2);
|
|
41
|
-
expect(pa2).toBeDefined();
|
|
42
|
-
expect(Object.keys(BrowserFactory.browsers).length).toBe(1)
|
|
43
|
-
expect(Object.keys(bfa.contexts).length).toBe(2)
|
|
44
|
-
expect((pa1 as PageInstance)._guid).not.toEqual((pa2 as PageInstance)._guid);
|
|
45
|
-
|
|
46
|
-
const pa3 = await bfa.getBrowserContextPage(test2);
|
|
47
|
-
expect(pa3).toBeDefined();
|
|
48
|
-
expect(Object.keys(BrowserFactory.browsers).length).toBe(1)
|
|
49
|
-
expect(Object.keys(bfa.contexts).length).toBe(2)
|
|
50
|
-
expect((pa2 as PageInstance)._guid).toEqual((pa3 as PageInstance)._guid);
|
|
51
|
-
|
|
52
|
-
const bfb = await BrowserFactory.getBrowserFactory(logger, browserContextOptions);
|
|
53
|
-
expect(Object.keys(BrowserFactory.browsers).length).toBe(1)
|
|
54
|
-
expect(Object.keys(bfb.contexts).length).toBe(1)
|
|
55
|
-
|
|
56
|
-
expect(Object.keys(bfa.contexts).length).toBe(2)
|
|
57
|
-
|
|
58
|
-
await bfa.closeContext(test2);
|
|
59
|
-
|
|
60
|
-
expect(Object.keys(bfa.contexts).length).toBe(1)
|
|
61
|
-
expect(bfa.pages['test2']).toBeUndefined();
|
|
62
|
-
*/
|
|
63
|
-
await BrowserFactory.closeBrowsers();
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
//# sourceMappingURL=BrowserFactory.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFactory.test.js","sourceRoot":"","sources":["../src/BrowserFactory.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAA0B,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,MAAM,qBAAqB,GAAG;IAC5B,OAAO,EAAE;QACP,QAAQ,EAAE,IAAI;KACf;CACF,CAAA;AAED,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,cAAc,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE;YACjE,GAAG,qBAAqB;YACxB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/E,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9F,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,cAAc,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,EAAG;YACrF,GAAG,qBAAqB;YACxB,IAAI,EAAE,SAAS;SACkB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACxD,cAAc,CAAC,aAAa,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChD;;;;;;;;;;;;;;;;;;;;;;;;UAwBE;QACF,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { TTag } from '@haibun/core/build/lib/defs.js';
|
|
2
|
-
import { ILogger } from '@haibun/core/build/lib/interfaces/logger.js';
|
|
3
|
-
import { Page } from 'playwright';
|
|
4
|
-
export declare class PlaywrightEvents {
|
|
5
|
-
page: Page;
|
|
6
|
-
tag: TTag;
|
|
7
|
-
logger: ILogger;
|
|
8
|
-
constructor(logger: ILogger, page: Page, tag: TTag);
|
|
9
|
-
private logRequest;
|
|
10
|
-
private routeRequest;
|
|
11
|
-
private logResponse;
|
|
12
|
-
close(): void;
|
|
13
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
export class PlaywrightEvents {
|
|
2
|
-
page;
|
|
3
|
-
tag;
|
|
4
|
-
logger;
|
|
5
|
-
constructor(logger, page, tag) {
|
|
6
|
-
this.logger = logger;
|
|
7
|
-
this.page = page;
|
|
8
|
-
this.logger.log(`setPage ${tag}`);
|
|
9
|
-
this.tag = tag;
|
|
10
|
-
page.on('request', this.logRequest.bind(this));
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
12
|
-
page.route('**/*', this.routeRequest.bind(this));
|
|
13
|
-
page.on('response', this.logResponse.bind(this));
|
|
14
|
-
}
|
|
15
|
-
async logRequest(request, type = 'request') {
|
|
16
|
-
const frameURL = request.frame().url();
|
|
17
|
-
const currentPageURL = this.page.url();
|
|
18
|
-
const requestingURL = frameURL === currentPageURL ? currentPageURL : `Frame: ${frameURL}`;
|
|
19
|
-
const targetURL = request.url();
|
|
20
|
-
const method = request.method();
|
|
21
|
-
const headers = request.headers();
|
|
22
|
-
const postData = request.postData();
|
|
23
|
-
const logData = {
|
|
24
|
-
requestingURL,
|
|
25
|
-
targetURL,
|
|
26
|
-
method,
|
|
27
|
-
headers,
|
|
28
|
-
postData
|
|
29
|
-
};
|
|
30
|
-
const mc = {
|
|
31
|
-
topic: {
|
|
32
|
-
stage: 'action',
|
|
33
|
-
event: 'debug',
|
|
34
|
-
},
|
|
35
|
-
artifact: {
|
|
36
|
-
content: logData,
|
|
37
|
-
type: 'json/playwright/trace'
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
this.logger.debug(`playwright ${type}`, mc);
|
|
41
|
-
}
|
|
42
|
-
async routeRequest(route, request) {
|
|
43
|
-
await this.logRequest(request, 'route');
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
45
|
-
route.continue();
|
|
46
|
-
}
|
|
47
|
-
async logResponse(response) {
|
|
48
|
-
const frameURL = response.request().frame().url();
|
|
49
|
-
const currentPageURL = this.page.url();
|
|
50
|
-
const requestingURL = frameURL === currentPageURL ? currentPageURL : `Frame: ${frameURL}`;
|
|
51
|
-
const targetURL = response.url();
|
|
52
|
-
const status = response.status();
|
|
53
|
-
const statusText = response.statusText();
|
|
54
|
-
const headers = response.headers();
|
|
55
|
-
const logData = {
|
|
56
|
-
requestingURL,
|
|
57
|
-
targetURL,
|
|
58
|
-
status,
|
|
59
|
-
statusText,
|
|
60
|
-
headers
|
|
61
|
-
};
|
|
62
|
-
const mc = {
|
|
63
|
-
topic: {
|
|
64
|
-
stage: 'action',
|
|
65
|
-
event: 'debug',
|
|
66
|
-
},
|
|
67
|
-
artifact: {
|
|
68
|
-
content: logData,
|
|
69
|
-
type: 'json/playwright/trace'
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
this.logger.debug(`playwright response`, mc);
|
|
73
|
-
}
|
|
74
|
-
close() {
|
|
75
|
-
this.page.off('request', this.logRequest.bind(this));
|
|
76
|
-
// Note: Playwright doesn't provide a direct way to remove a specific route handler
|
|
77
|
-
this.page.off('response', this.logResponse.bind(this));
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=PlaywrightEvents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightEvents.js","sourceRoot":"","sources":["../src/PlaywrightEvents.ts"],"names":[],"mappings":"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"}
|