testplane 8.32.2 → 8.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.
Files changed (98) hide show
  1. package/build/package.json +5 -3
  2. package/build/src/browser/cdp/connection.d.ts +1 -1
  3. package/build/src/browser/cdp/connection.js +4 -4
  4. package/build/src/browser/cdp/connection.js.map +1 -1
  5. package/build/src/browser/cdp/domains/css.d.ts +46 -0
  6. package/build/src/browser/cdp/domains/css.js +35 -0
  7. package/build/src/browser/cdp/domains/css.js.map +1 -0
  8. package/build/src/browser/cdp/domains/debugger.d.ts +65 -0
  9. package/build/src/browser/cdp/domains/debugger.js +31 -0
  10. package/build/src/browser/cdp/domains/debugger.js.map +1 -0
  11. package/build/src/browser/cdp/domains/dom.d.ts +24 -0
  12. package/build/src/browser/cdp/domains/dom.js +23 -0
  13. package/build/src/browser/cdp/domains/dom.js.map +1 -0
  14. package/build/src/browser/cdp/{profiler.d.ts → domains/profiler.d.ts} +3 -3
  15. package/build/src/browser/cdp/{profiler.js → domains/profiler.js} +2 -5
  16. package/build/src/browser/cdp/domains/profiler.js.map +1 -0
  17. package/build/src/browser/cdp/domains/runtime.d.ts +57 -0
  18. package/build/src/browser/cdp/domains/runtime.js +34 -0
  19. package/build/src/browser/cdp/domains/runtime.js.map +1 -0
  20. package/build/src/browser/cdp/{target.d.ts → domains/target.d.ts} +5 -3
  21. package/build/src/browser/cdp/{target.js → domains/target.js} +7 -5
  22. package/build/src/browser/cdp/domains/target.js.map +1 -0
  23. package/build/src/browser/cdp/emitter.d.ts +1 -0
  24. package/build/src/browser/cdp/emitter.js +3 -0
  25. package/build/src/browser/cdp/emitter.js.map +1 -1
  26. package/build/src/browser/cdp/index.d.ts +10 -2
  27. package/build/src/browser/cdp/index.js +25 -3
  28. package/build/src/browser/cdp/index.js.map +1 -1
  29. package/build/src/browser/cdp/selectivity/constants.d.ts +1 -0
  30. package/build/src/browser/cdp/selectivity/constants.js +5 -0
  31. package/build/src/browser/cdp/selectivity/constants.js.map +1 -0
  32. package/build/src/browser/cdp/selectivity/css-selectivity.d.ts +14 -0
  33. package/build/src/browser/cdp/selectivity/css-selectivity.js +112 -0
  34. package/build/src/browser/cdp/selectivity/css-selectivity.js.map +1 -0
  35. package/build/src/browser/cdp/selectivity/file-hash-provider.d.ts +4 -0
  36. package/build/src/browser/cdp/selectivity/file-hash-provider.js +28 -0
  37. package/build/src/browser/cdp/selectivity/file-hash-provider.js.map +1 -0
  38. package/build/src/browser/cdp/selectivity/file-hash-writer.d.ts +17 -0
  39. package/build/src/browser/cdp/selectivity/file-hash-writer.js +123 -0
  40. package/build/src/browser/cdp/selectivity/file-hash-writer.js.map +1 -0
  41. package/build/src/browser/cdp/selectivity/index.d.ts +5 -0
  42. package/build/src/browser/cdp/selectivity/index.js +55 -0
  43. package/build/src/browser/cdp/selectivity/index.js.map +1 -0
  44. package/build/src/browser/cdp/selectivity/js-selectivity.d.ts +16 -0
  45. package/build/src/browser/cdp/selectivity/js-selectivity.js +129 -0
  46. package/build/src/browser/cdp/selectivity/js-selectivity.js.map +1 -0
  47. package/build/src/browser/cdp/selectivity/json-utils.d.ts +10 -0
  48. package/build/src/browser/cdp/selectivity/json-utils.js +123 -0
  49. package/build/src/browser/cdp/selectivity/json-utils.js.map +1 -0
  50. package/build/src/browser/cdp/selectivity/test-dependencies-writer.d.ts +11 -0
  51. package/build/src/browser/cdp/selectivity/test-dependencies-writer.js +57 -0
  52. package/build/src/browser/cdp/selectivity/test-dependencies-writer.js.map +1 -0
  53. package/build/src/browser/cdp/selectivity/types.d.ts +15 -0
  54. package/build/src/browser/cdp/selectivity/types.js +10 -0
  55. package/build/src/browser/cdp/selectivity/types.js.map +1 -0
  56. package/build/src/browser/cdp/selectivity/utils.d.ts +39 -0
  57. package/build/src/browser/cdp/selectivity/utils.js +198 -0
  58. package/build/src/browser/cdp/selectivity/utils.js.map +1 -0
  59. package/build/src/browser/cdp/types.d.ts +83 -4
  60. package/build/src/browser/commands/index.js +2 -0
  61. package/build/src/browser/commands/index.js.map +1 -1
  62. package/build/src/browser/commands/restoreState/index.d.ts +8 -0
  63. package/build/src/browser/commands/restoreState/index.js +124 -0
  64. package/build/src/browser/commands/restoreState/index.js.map +1 -0
  65. package/build/src/browser/commands/restoreState/restoreStorage.d.ts +1 -0
  66. package/build/src/browser/commands/restoreState/restoreStorage.js +12 -0
  67. package/build/src/browser/commands/restoreState/restoreStorage.js.map +1 -0
  68. package/build/src/browser/commands/saveState/dumpStorage.d.ts +5 -0
  69. package/build/src/browser/commands/saveState/dumpStorage.js +29 -0
  70. package/build/src/browser/commands/saveState/dumpStorage.js.map +1 -0
  71. package/build/src/browser/commands/saveState/index.d.ts +25 -0
  72. package/build/src/browser/commands/saveState/index.js +154 -0
  73. package/build/src/browser/commands/saveState/index.js.map +1 -0
  74. package/build/src/browser/existing-browser.d.ts +9 -0
  75. package/build/src/browser/existing-browser.js +97 -8
  76. package/build/src/browser/existing-browser.js.map +1 -1
  77. package/build/src/browser/types.d.ts +4 -0
  78. package/build/src/browser/types.js.map +1 -1
  79. package/build/src/config/browser-options.js +7 -0
  80. package/build/src/config/browser-options.js.map +1 -1
  81. package/build/src/config/defaults.d.ts +6 -0
  82. package/build/src/config/defaults.js +6 -0
  83. package/build/src/config/defaults.js.map +1 -1
  84. package/build/src/config/types.d.ts +9 -1
  85. package/build/src/config/types.js.map +1 -1
  86. package/build/src/error-snippets/constants.d.ts +2 -1
  87. package/build/src/error-snippets/constants.js +3 -2
  88. package/build/src/error-snippets/constants.js.map +1 -1
  89. package/build/src/error-snippets/source-maps.js +4 -4
  90. package/build/src/error-snippets/source-maps.js.map +1 -1
  91. package/build/src/error-snippets/utils.js +2 -2
  92. package/build/src/error-snippets/utils.js.map +1 -1
  93. package/build/src/index.d.ts +1 -0
  94. package/build/src/worker/runner/test-runner/index.js +3 -0
  95. package/build/src/worker/runner/test-runner/index.js.map +1 -1
  96. package/package.json +5 -3
  97. package/build/src/browser/cdp/profiler.js.map +0 -1
  98. package/build/src/browser/cdp/target.js.map +0 -1
@@ -6,7 +6,14 @@ export type CDPRequestId = number;
6
6
  export type CDPTargetId = string;
7
7
  export type CDPSessionId = string;
8
8
  export type CDPBrowserContextId = string;
9
- export type RuntimeScriptId = string;
9
+ export type CDPRuntimeScriptId = string;
10
+ export type CDPCallFrameId = string;
11
+ export type CDPExecutionContextId = number;
12
+ export type CDPStyleSheetId = string;
13
+ export type CDPFrameId = string;
14
+ export type CDPDOMBackendNodeId = number;
15
+ export type CDPStyleSheetOrigin = "injected" | "user-agent" | "inspector" | "regular";
16
+ export type CDPDebuggerPausedReason = "ambiguous" | "assert" | "CSPViolation" | "debugCommand" | "DOM" | "EventListener" | "exception" | "instrumentation" | "OOM" | "other" | "promiseRejection" | "XHR" | "step";
10
17
  type TargetType = "tab" | "page" | "iframe" | "worker" | "shared_worker" | "service_worker" | "worklet" | "shared_storage_worklet" | "browser" | "webview" | "other" | "auction_worklet" | "assistive_technology";
11
18
  export interface CDPRequest<T extends {
12
19
  [key in keyof T]: unknown;
@@ -61,7 +68,7 @@ interface FunctionCoverage {
61
68
  }
62
69
  export interface CDPScriptCoverage {
63
70
  /** JavaScript script id. */
64
- scriptId: RuntimeScriptId;
71
+ scriptId: CDPRuntimeScriptId;
65
72
  /** JavaScript script name or url. */
66
73
  url: string;
67
74
  /** Functions contained in the script that has coverage data. */
@@ -69,7 +76,7 @@ export interface CDPScriptCoverage {
69
76
  }
70
77
  export interface CDPDebuggerLocation {
71
78
  /** Script identifier as reported in the Debugger.scriptParsed. */
72
- scriptId: RuntimeScriptId;
79
+ scriptId: CDPRuntimeScriptId;
73
80
  /** Line number in the script (0-based). */
74
81
  lineNumber: number;
75
82
  /** Column number in the script (0-based). */
@@ -79,7 +86,7 @@ interface RuntimeCallFrame {
79
86
  /** JavaScript function name. */
80
87
  functionName: string;
81
88
  /** JavaScript script id. */
82
- scriptId: RuntimeScriptId;
89
+ scriptId: CDPRuntimeScriptId;
83
90
  /** JavaScript script name or url. */
84
91
  url: string;
85
92
  /** JavaScript script line number (0-based). */
@@ -121,4 +128,76 @@ export interface CDPProfile {
121
128
  */
122
129
  timeDeltas: number[];
123
130
  }
131
+ interface DebuggerLocation {
132
+ scriptId: CDPRuntimeScriptId;
133
+ /** Line number in the script (0-based). */
134
+ lineNumber: number;
135
+ /** Column number in the script (0-based). */
136
+ columnNumber?: number;
137
+ }
138
+ export interface CDPDebuggerCallFrame {
139
+ callFrameId: CDPCallFrameId;
140
+ functionName: string;
141
+ functionLocation?: DebuggerLocation;
142
+ location: DebuggerLocation;
143
+ }
144
+ export interface CDPRuntimeStackTrace {
145
+ description?: string;
146
+ callFrames: CDPDebuggerCallFrame;
147
+ parent?: CDPRuntimeStackTrace;
148
+ }
149
+ export interface CDPRuntimeRemoteObject<T = undefined> {
150
+ /** Object type. */
151
+ type: "object" | "function" | "undefined" | "string" | "number" | "boolean" | "symbol" | "bigint";
152
+ /** Object subtype hint. Specified for object type values only. */
153
+ subtype?: string;
154
+ /** Object class (constructor) name. Specified for object type values only. */
155
+ className?: string;
156
+ /** Remote object value in case of primitive values or JSON values (if it was requested). */
157
+ value: T;
158
+ /** Primitive value which can not be JSON-stringified does not have value, but gets this property. */
159
+ unserializableValue?: string;
160
+ /** String representation of the object. */
161
+ description?: string;
162
+ }
163
+ export interface CDPCSSStyleSheetHeader {
164
+ /** The stylesheet identifier. */
165
+ styleSheetId: CDPStyleSheetId;
166
+ /** Owner frame identifier. */
167
+ frameId: CDPFrameId;
168
+ /** Stylesheet resource URL. Empty if this is a constructed stylesheet created using new CSSStyleSheet() (but non-empty if this is a constructed stylesheet imported as a CSS module script). */
169
+ sourceURL: string;
170
+ /** URL of source map associated with the stylesheet (if any). */
171
+ sourceMapURL?: string;
172
+ /** Stylesheet origin. */
173
+ origin: CDPStyleSheetOrigin;
174
+ /** Stylesheet title. */
175
+ title: string;
176
+ /** The backend id for the owner node of the stylesheet. */
177
+ ownerNode?: CDPDOMBackendNodeId;
178
+ /** Denotes whether the stylesheet is disabled. */
179
+ disabled: boolean;
180
+ /** Whether the sourceURL field value comes from the sourceURL comment. */
181
+ hasSourceURL?: boolean;
182
+ /** Whether this stylesheet is created for STYLE tag by parser. This flag is not set for document.written STYLE tags. */
183
+ isInline: boolean;
184
+ /**
185
+ * Whether this stylesheet is mutable. Inline stylesheets become mutable after they have been modified via CSSOM API.
186
+ * <link> element's stylesheets become mutable only if DevTools modifies them.
187
+ * Constructed stylesheets (new CSSStyleSheet()) are mutable immediately after creation.
188
+ */
189
+ isMutable: boolean;
190
+ /** True if this stylesheet is created through new CSSStyleSheet() or imported as a CSS module script. */
191
+ isConstructed: boolean;
192
+ /** Line offset of the stylesheet within the resource (zero based). */
193
+ startLine: number;
194
+ /** Column offset of the stylesheet within the resource (zero based). */
195
+ startColumn: number;
196
+ /** Size of the content (in characters). */
197
+ length: number;
198
+ /** Line offset of the end of the stylesheet within the resource (zero based). */
199
+ endLine: number;
200
+ /** Column offset of the end of the stylesheet within the resource (zero based). */
201
+ endColumn: number;
202
+ }
124
203
  export {};
@@ -13,5 +13,7 @@ exports.customCommandFileNames = [
13
13
  "moveCursorTo",
14
14
  "captureDomSnapshot",
15
15
  "waitForStaticToLoad",
16
+ "saveState",
17
+ "restoreState",
16
18
  ];
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/commands/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IAClC,aAAa;IACb,cAAc;IACd,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,cAAc;IACd,oBAAoB;IACpB,qBAAqB;CACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/commands/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IAClC,aAAa;IACb,cAAc;IACd,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,cAAc;IACd,oBAAoB;IACpB,qBAAqB;IACrB,WAAW;IACX,cAAc;CACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Browser } from "../../types";
2
+ import { SaveStateData, SaveStateOptions } from "../saveState";
3
+ export type RestoreStateOptions = SaveStateOptions & {
4
+ data?: SaveStateData;
5
+ refresh?: boolean;
6
+ };
7
+ declare const _default: (browser: Browser) => void;
8
+ export default _default;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const fs_extra_1 = __importDefault(require("fs-extra"));
30
+ const restoreStorage_1 = require("./restoreStorage");
31
+ const logger = __importStar(require("../../../utils/logger"));
32
+ const config_1 = require("../../../constants/config");
33
+ const saveState_1 = require("../saveState");
34
+ const existing_browser_1 = require("../../existing-browser");
35
+ exports.default = (browser) => {
36
+ const { publicAPI: session } = browser;
37
+ session.addCommand("restoreState", async (_options) => {
38
+ const currentUrl = new URL(await session.getUrl());
39
+ if (!currentUrl.origin || currentUrl.origin === "null") {
40
+ logger.error("Before restoreState first open page using url command");
41
+ process.exit(1);
42
+ }
43
+ const options = { ...saveState_1.defaultOptions, refresh: true, ..._options };
44
+ let restoreState = options.data;
45
+ if (options.path) {
46
+ restoreState = await fs_extra_1.default.readJson(options.path);
47
+ }
48
+ if (!restoreState) {
49
+ logger.error("Can't restore state: please provide a path to file or data");
50
+ process.exit(1);
51
+ }
52
+ switch ((0, saveState_1.getCalculatedProtocol)(browser)) {
53
+ case config_1.WEBDRIVER_PROTOCOL: {
54
+ await session.switchToParentFrame();
55
+ if (restoreState.cookies && options.cookies) {
56
+ await session.setCookies(restoreState.cookies.map(cookie => ({
57
+ ...cookie,
58
+ secure: cookie.secure || cookie.sameSite === "None", // fix for ff
59
+ sameSite: cookie.sameSite && session.isBidi
60
+ ? cookie.sameSite.toLowerCase()
61
+ : cookie.sameSite,
62
+ })));
63
+ }
64
+ if (restoreState.framesData) {
65
+ await session.switchToParentFrame();
66
+ const frames = await (0, saveState_1.getWebdriverFrames)(session);
67
+ for (let i = 0; i <= frames.length; i++) {
68
+ await session.switchToParentFrame();
69
+ // after last element have to set data for parent frame
70
+ if (i < frames.length) {
71
+ await session.switchFrame(await session.$(`iframe[src="${frames[i]}"]`));
72
+ }
73
+ const origin = await session.execute(() => window.location.origin);
74
+ const frameData = restoreState.framesData[origin];
75
+ if (frameData) {
76
+ if (frameData.localStorage && options.localStorage) {
77
+ await session.execute(restoreStorage_1.restoreStorage, frameData.localStorage, "localStorage");
78
+ }
79
+ if (frameData.sessionStorage && options.sessionStorage) {
80
+ await session.execute(restoreStorage_1.restoreStorage, frameData.sessionStorage, "sessionStorage");
81
+ }
82
+ }
83
+ }
84
+ await session.switchToParentFrame();
85
+ }
86
+ if (options.refresh) {
87
+ await session.refresh();
88
+ }
89
+ break;
90
+ }
91
+ case config_1.DEVTOOLS_PROTOCOL: {
92
+ const page = await (0, existing_browser_1.getActivePuppeteerPage)(session);
93
+ if (!page) {
94
+ return;
95
+ }
96
+ const frames = page.frames();
97
+ if (restoreState.cookies && options.cookies) {
98
+ await page.setCookie(...restoreState.cookies);
99
+ }
100
+ for (const frame of frames) {
101
+ const origin = new URL(frame.url()).origin;
102
+ if (origin === "null" || !restoreState.framesData[origin]) {
103
+ continue;
104
+ }
105
+ const frameData = restoreState.framesData[origin];
106
+ if (!frameData) {
107
+ continue;
108
+ }
109
+ if (frameData.localStorage && options.localStorage) {
110
+ await frame.evaluate(restoreStorage_1.restoreStorage, frameData.localStorage, "localStorage");
111
+ }
112
+ if (frameData.sessionStorage && options.sessionStorage) {
113
+ await frame.evaluate(restoreStorage_1.restoreStorage, frameData.sessionStorage, "sessionStorage");
114
+ }
115
+ }
116
+ if (options.refresh) {
117
+ await page.reload();
118
+ }
119
+ break;
120
+ }
121
+ }
122
+ });
123
+ };
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/browser/commands/restoreState/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const restoreStorage: (data: Record<string, string>, type: "localStorage" | "sessionStorage") => void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.restoreStorage = void 0;
4
+ const restoreStorage = (data, type) => {
5
+ const storage = window[type];
6
+ storage.clear();
7
+ Object.keys(data).forEach(key => {
8
+ storage.setItem(key, data[key]);
9
+ });
10
+ };
11
+ exports.restoreStorage = restoreStorage;
12
+ //# sourceMappingURL=restoreStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreStorage.js","sourceRoot":"","sources":["../../../../../src/browser/commands/restoreState/restoreStorage.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAAC,IAA4B,EAAE,IAAuC,EAAQ,EAAE;IAC1G,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5B,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB"}
@@ -0,0 +1,5 @@
1
+ export type StorageData = {
2
+ localStorage?: Record<string, string>;
3
+ sessionStorage?: Record<string, string>;
4
+ };
5
+ export declare const dumpStorage: () => StorageData;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dumpStorage = void 0;
4
+ const dumpStorage = () => {
5
+ const getData = (storage) => {
6
+ const data = {};
7
+ for (let i = 0; i < storage.length; i++) {
8
+ const key = storage.key(i);
9
+ if (key) {
10
+ data[key] = storage.getItem(key);
11
+ }
12
+ }
13
+ return Object.keys(data).length === 0 ? undefined : data;
14
+ };
15
+ try {
16
+ return {
17
+ localStorage: getData(window?.localStorage),
18
+ sessionStorage: getData(window?.sessionStorage),
19
+ };
20
+ }
21
+ catch (error) {
22
+ return {
23
+ localStorage: undefined,
24
+ sessionStorage: undefined,
25
+ };
26
+ }
27
+ };
28
+ exports.dumpStorage = dumpStorage;
29
+ //# sourceMappingURL=dumpStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dumpStorage.js","sourceRoot":"","sources":["../../../../../src/browser/commands/saveState/dumpStorage.ts"],"names":[],"mappings":";;;AAKO,MAAM,WAAW,GAAG,GAAgB,EAAE;IACzC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAsC,EAAE;QACrE,MAAM,IAAI,GAA2B,EAAE,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAE3B,IAAI,GAAG,EAAE,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAW,CAAC;YAC/C,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC,CAAC;IAEF,IAAI,CAAC;QACD,OAAO;YACH,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;YAC3C,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;SAClD,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,SAAS;SAC5B,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AA1BW,QAAA,WAAW,eA0BtB"}
@@ -0,0 +1,25 @@
1
+ import type { Browser } from "../../types";
2
+ import { StorageData } from "./dumpStorage";
3
+ import { DEVTOOLS_PROTOCOL, WEBDRIVER_PROTOCOL } from "../../../constants/config";
4
+ import { ExistingBrowser } from "../../existing-browser";
5
+ import { Protocol } from "devtools-protocol";
6
+ export type SaveStateOptions = {
7
+ path?: string;
8
+ cookies?: boolean;
9
+ localStorage?: boolean;
10
+ sessionStorage?: boolean;
11
+ };
12
+ export type FrameData = StorageData;
13
+ export type SaveStateData = {
14
+ cookies?: Array<Protocol.Network.CookieParam>;
15
+ framesData: Record<string, FrameData>;
16
+ };
17
+ export declare const defaultOptions: {
18
+ cookies: boolean;
19
+ localStorage: boolean;
20
+ sessionStorage: boolean;
21
+ };
22
+ export declare const getCalculatedProtocol: (browser: Browser) => typeof DEVTOOLS_PROTOCOL | typeof WEBDRIVER_PROTOCOL;
23
+ export declare const getWebdriverFrames: (session: WebdriverIO.Browser) => Promise<string[]>;
24
+ declare const _default: (browser: ExistingBrowser) => void;
25
+ export default _default;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.getWebdriverFrames = exports.getCalculatedProtocol = exports.defaultOptions = void 0;
30
+ const fs_extra_1 = __importDefault(require("fs-extra"));
31
+ const lodash_1 = __importDefault(require("lodash"));
32
+ const dumpStorage_1 = require("./dumpStorage");
33
+ const config_1 = require("../../../constants/config");
34
+ const browser_1 = require("../../../utils/browser");
35
+ const existing_browser_1 = require("../../existing-browser");
36
+ const logger = __importStar(require("../../../utils/logger"));
37
+ exports.defaultOptions = {
38
+ cookies: true,
39
+ localStorage: true,
40
+ sessionStorage: true,
41
+ };
42
+ const getCalculatedProtocol = (browser) => {
43
+ const protocol = browser.config.automationProtocol;
44
+ if (protocol === config_1.DEVTOOLS_PROTOCOL) {
45
+ return config_1.DEVTOOLS_PROTOCOL;
46
+ }
47
+ if (protocol === config_1.WEBDRIVER_PROTOCOL &&
48
+ browser.config.isolation &&
49
+ (0, browser_1.isSupportIsolation)(browser.publicAPI.capabilities.browserName, browser.publicAPI.capabilities.browserVersion)) {
50
+ return config_1.DEVTOOLS_PROTOCOL;
51
+ }
52
+ return protocol;
53
+ };
54
+ exports.getCalculatedProtocol = getCalculatedProtocol;
55
+ const getWebdriverFrames = async (session) => session.execute(() => Array.from(document.getElementsByTagName("iframe"))
56
+ .map(el => el.getAttribute("src"))
57
+ .filter(src => src !== null && src !== "about:blank"));
58
+ exports.getWebdriverFrames = getWebdriverFrames;
59
+ exports.default = (browser) => {
60
+ const { publicAPI: session } = browser;
61
+ session.addCommand("saveState", async (_options = {}) => {
62
+ const currentUrl = new URL(await session.getUrl());
63
+ if (!currentUrl.origin || currentUrl.origin === "null") {
64
+ logger.error("Before saveState first open page using url command");
65
+ process.exit(1);
66
+ }
67
+ const options = { ...exports.defaultOptions, ..._options };
68
+ const data = {
69
+ framesData: {},
70
+ };
71
+ switch ((0, exports.getCalculatedProtocol)(browser)) {
72
+ case config_1.WEBDRIVER_PROTOCOL: {
73
+ if (options.cookies) {
74
+ const cookies = await session.getCookies();
75
+ data.cookies = cookies.map(cookie => ({
76
+ ...cookie,
77
+ sameSite: cookie.sameSite ? lodash_1.default.startCase(cookie.sameSite) : cookie.sameSite,
78
+ }));
79
+ }
80
+ await session.switchToParentFrame();
81
+ const frames = await (0, exports.getWebdriverFrames)(session);
82
+ const framesData = {};
83
+ for (let i = 0; i <= frames.length; i++) {
84
+ await session.switchToParentFrame();
85
+ // after last element have to get data from parent frame
86
+ if (i < frames.length) {
87
+ await session.switchFrame(await session.$(`iframe[src="${frames[i]}"]`));
88
+ }
89
+ const origin = await session.execute(() => window.location.origin);
90
+ if (!origin || origin === "null" || framesData[origin]) {
91
+ continue;
92
+ }
93
+ const frameData = {};
94
+ if (options.localStorage || options.sessionStorage) {
95
+ const { localStorage, sessionStorage } = await session.execute(dumpStorage_1.dumpStorage);
96
+ if (localStorage && options.localStorage) {
97
+ frameData.localStorage = localStorage;
98
+ }
99
+ if (sessionStorage && options.sessionStorage) {
100
+ frameData.sessionStorage = sessionStorage;
101
+ }
102
+ }
103
+ if (frameData.localStorage || frameData.sessionStorage) {
104
+ framesData[origin] = frameData;
105
+ }
106
+ }
107
+ await session.switchToParentFrame();
108
+ data.framesData = framesData;
109
+ break;
110
+ }
111
+ case config_1.DEVTOOLS_PROTOCOL: {
112
+ if (options.cookies) {
113
+ const cookies = await browser.getAllRequestsCookies();
114
+ data.cookies = cookies.map(cookie => ({
115
+ ...cookie,
116
+ sameSite: cookie.sameSite ? lodash_1.default.startCase(cookie.sameSite) : cookie.sameSite,
117
+ }));
118
+ }
119
+ const page = await (0, existing_browser_1.getActivePuppeteerPage)(session);
120
+ if (!page) {
121
+ break;
122
+ }
123
+ const frames = page.frames();
124
+ const framesData = {};
125
+ for (const frame of frames) {
126
+ const origin = new URL(frame.url()).origin;
127
+ if (origin === "null" || framesData[origin]) {
128
+ continue;
129
+ }
130
+ const frameData = {};
131
+ if (options.localStorage || options.sessionStorage) {
132
+ const { localStorage, sessionStorage } = await frame.evaluate(dumpStorage_1.dumpStorage);
133
+ if (localStorage && options.localStorage) {
134
+ frameData.localStorage = localStorage;
135
+ }
136
+ if (sessionStorage && options.sessionStorage) {
137
+ frameData.sessionStorage = sessionStorage;
138
+ }
139
+ }
140
+ if (frameData.localStorage || frameData.sessionStorage) {
141
+ framesData[origin] = frameData;
142
+ }
143
+ }
144
+ data.framesData = framesData;
145
+ break;
146
+ }
147
+ }
148
+ if (options && options.path) {
149
+ await fs_extra_1.default.writeJson(options.path, data, { spaces: 2 });
150
+ }
151
+ return data;
152
+ });
153
+ };
154
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/browser/commands/saveState/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Cookie } from "set-cookie-parser";
1
2
  import { Browser, BrowserOpts } from "./browser";
2
3
  import { Camera, PageMeta } from "./camera";
3
4
  import { type ClientBridge } from "./client-bridge";
@@ -5,6 +6,8 @@ import { Config } from "../config";
5
6
  import { Image, Rect } from "../image";
6
7
  import type { CalibrationResult, Calibrator } from "./calibrator";
7
8
  import type { SessionOptions } from "./types";
9
+ import { Protocol } from "devtools-protocol";
10
+ import { Page } from "puppeteer-core";
8
11
  import { CDP } from "./cdp";
9
12
  interface PrepareScreenshotOpts {
10
13
  disableAnimation?: boolean;
@@ -14,14 +17,19 @@ interface ScrollByParams {
14
17
  y: number;
15
18
  selector?: string;
16
19
  }
20
+ export declare const getActivePuppeteerPage: (session: WebdriverIO.Browser) => Promise<Page | undefined>;
17
21
  export declare class ExistingBrowser extends Browser {
18
22
  protected _camera: Camera;
19
23
  protected _meta: Record<string, unknown>;
20
24
  protected _calibration?: CalibrationResult;
21
25
  protected _clientBridge?: ClientBridge;
22
26
  protected _cdp: CDP | null;
27
+ private _allCookies;
23
28
  constructor(config: Config, opts: BrowserOpts);
24
29
  init({ sessionId, sessionCaps, sessionOpts }: SessionOptions, calibrator: Calibrator): Promise<this>;
30
+ getCookieIndex(cookie: Cookie): string;
31
+ getAllRequestsCookies(): Promise<Array<Protocol.Network.CookieParam>>;
32
+ startCollectCookies(): Promise<void>;
25
33
  markAsBroken(): void;
26
34
  quit(): void;
27
35
  prepareScreenshot(selectors: string[] | Rect[], opts?: PrepareScreenshotOpts): Promise<unknown>;
@@ -60,5 +68,6 @@ export declare class ExistingBrowser extends Browser {
60
68
  protected _cleanupPageAnimations(): Promise<void>;
61
69
  _stubCommands(): void;
62
70
  get meta(): Record<string, unknown>;
71
+ get cdp(): CDP | null;
63
72
  }
64
73
  export {};