@haibun/web-playwright 1.32.2 → 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 +3 -3
- 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": [
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@haibun/core": "1.32.2",
|
|
24
24
|
"@haibun/domain-storage": "1.32.2",
|
|
25
25
|
"@haibun/domain-webpage": "1.32.2",
|
|
26
|
-
"playwright": "1.
|
|
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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"}
|