automation_model 1.0.587-dev → 1.0.587-stage

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/README.md ADDED
@@ -0,0 +1,130 @@
1
+ # Stable API Description
2
+
3
+ This API is built on top of Playwright to control browsers. The most common commands are:
4
+
5
+ - `click`
6
+ - `clickType`
7
+ - `verifyTextExistInPage`
8
+
9
+ ## Parameters
10
+
11
+ - **selectors** - An object that can contain the name of the element as well as multiple selectors (CSS, ARIA, etc.) used to locate the element.
12
+ - **world** - Used as part of `cucumber-js`.
13
+ - **\_params** - An object that includes the original function parameters (used in dynamic selectors).
14
+ - **options** - Can be used to set the timeout (`{timeout: 30000}` is the default).
15
+ - **climb** - After finding the element using the selectors, will climb the DOM.
16
+
17
+ Unless stated otherwise, the APIs will return an information object and will throw an error in case of failure.
18
+
19
+ ## Function List
20
+
21
+ ```javascript
22
+ async goto(url: string, world);
23
+ /* Use AI to identify an element and click on it */
24
+ async simpleClick(elementDescription, _params, options = {}, world);
25
+ async simpleClickType(elementDescription, value, _params, options = {}, world);
26
+ async click(selectors, _params, options = {}, world);
27
+ /* Return true/false */
28
+ async waitForElement(selectors, _params, options = {}, world);
29
+ async setCheck(selectors, checked = true, _params, options = {}, world);
30
+ async hover(selectors, _params, options = {}, world);
31
+ async selectOption(selectors, values, _params, options = {}, world);
32
+ async type(_value, _params, options = {}, world);
33
+ async setDateTime(selectors, value, format, enter = false, _params, options = {}, world);
34
+ /* Use to populate text fields */
35
+ async clickType(selectors, _value, enter = false, _params, options = {}, world);
36
+ /* Return the text */
37
+ async _getText(selectors, climb, _params, options = {}, info, world);
38
+ async containsText(selectors, text, climb, _params, options = {}, world);
39
+ setTestData(testData, world);
40
+ getTestData(world);
41
+ async verifyElementExistInPage(selectors, _params, options = {}, world);
42
+ async extractAttribute(selectors, attribute, variable, _params, options = {}, world);
43
+ async verifyAttribute(selectors, attribute, value, _params, options = {}, world);
44
+ async verifyPagePath(pathPart, options = {}, world);
45
+ async verifyTextExistInPage(text, options = {}, world);
46
+ async waitForTextToDisappear(text, options = {}, world);
47
+ async verifyTextRelatedToText(textAnchor, climb, textToVerify, options = {}, world);
48
+ async visualVerification(text, options = {}, world);
49
+ async waitForPageLoad(options = {}, world);
50
+ async closePage(options = {}, world);
51
+ saveTestDataAsGlobal(options, world);
52
+ async setViewportSize(width, height, options = {}, world);
53
+ async reloadPage(options = {}, world);
54
+ /* Return the ARIA snapshot as string */
55
+ async getAriaSnapshot();
56
+ ```
57
+
58
+ ## Code Use Cases
59
+
60
+ ### Original Function
61
+
62
+ ```javascript
63
+ async function login_with_user_and_password(_username, _password) {
64
+ const _params = { _username, _password };
65
+ // Fill Username textbox with "_username"
66
+ await context.web.clickType(elements["textbox_username"], _username, false, _params, null, this);
67
+ // Fill Password textbox with "_password"
68
+ await context.web.clickType(elements["textbox_password"], _password, false, _params, null, this);
69
+ // Click on Login button
70
+ await context.web.click(elements["button_login"], _params, null, this);
71
+ }
72
+ ```
73
+
74
+ ### Example 1: Continue execution if step fails
75
+
76
+ ```javascript
77
+ async function login_with_user_and_password(_username, _password) {
78
+ const _params = { _username, _password };
79
+ try {
80
+ await context.web.clickType(elements["textbox_username"], _username, false, _params, null, this);
81
+ await context.web.clickType(elements["textbox_password"], _password, false, _params, null, this);
82
+ await context.web.click(elements["button_login"], _params, null, this);
83
+ } catch (error) {}
84
+ }
85
+ ```
86
+
87
+ ### Example 2: Perform action only if "textbox_username" is found
88
+
89
+ ```javascript
90
+ async function login_with_user_and_password(_username, _password) {
91
+ const _params = { _username, _password };
92
+ if (await context.web.waitForElement(elements["textbox_username"], _params, { timeout: 4000 }, this)) {
93
+ await context.web.clickType(elements["textbox_username"], _username, false, _params, null, this);
94
+ await context.web.clickType(elements["textbox_password"], _password, false, _params, null, this);
95
+ await context.web.click(elements["button_login"], _params, null, this);
96
+ }
97
+ }
98
+ ```
99
+
100
+ ### Example 3: Retry step if it fails
101
+
102
+ ```javascript
103
+ async function login_with_user_and_password(_username, _password) {
104
+ const _params = { _username, _password };
105
+ const maxRetry = 2;
106
+ for (let i = 0; i < maxRetry; i++) {
107
+ try {
108
+ await context.web.clickType(elements["textbox_username"], _username, false, _params, null, this);
109
+ await context.web.clickType(elements["textbox_password"], _password, false, _params, null, this);
110
+ await context.web.click(elements["button_login"], _params, null, this);
111
+ break;
112
+ } catch (error) {
113
+ if (i === maxRetry - 1) {
114
+ throw error;
115
+ }
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ ### Example 4: Set click timeout to 2 minutes
122
+
123
+ ```javascript
124
+ async function login_with_user_and_password(_username, _password) {
125
+ const _params = { _username, _password };
126
+ await context.web.clickType(elements["textbox_username"], _username, false, _params, { timeout: 120000 }, this);
127
+ await context.web.clickType(elements["textbox_password"], _password, false, _params, { timeout: 120000 }, this);
128
+ await context.web.click(elements["button_login"], _params, { timeout: 120000 }, this);
129
+ }
130
+ ```
package/lib/api.js CHANGED
@@ -5,6 +5,7 @@ import tunnel from "tunnel";
5
5
  import objectPath from "object-path";
6
6
  import { _commandFinally } from "./command_common.js";
7
7
  import { getHumanReadableErrorMessage } from "./error-messages.js";
8
+ import { tryParseJson, replaceWithLocalTestData } from "./utils.js";
8
9
  class Api {
9
10
  logger;
10
11
  axiosClient;
@@ -103,37 +104,52 @@ class Api {
103
104
  });
104
105
  state.info = info;
105
106
  let error = null;
106
- const fixedUrl = repStrWParamTData(config.url, params, testData);
107
- const fixedQueryParams = config.queryParams.map((param) => {
107
+ const fixedUrl = await repStrWParamTData(config.url, params, testData, world);
108
+ const fixedQueryParams = config.queryParams.map(async (param) => {
108
109
  return {
109
- key: repStrWParamTData(param.key, params, testData),
110
- value: repStrWParamTData(param.value, params, testData),
110
+ key: await repStrWParamTData(param.key, params, testData, world),
111
+ value: await repStrWParamTData(param.value, params, testData, world),
111
112
  };
112
113
  });
113
- const fixedReqHeaders = config.headers.map((header) => {
114
+ const fixedReqHeaders = config.headers.map(async (header) => {
114
115
  return {
115
- key: repStrWParamTData(header.key, params, testData),
116
- value: repStrWParamTData(header.value, params, testData),
116
+ key: await repStrWParamTData(header.key, params, testData, world),
117
+ value: await repStrWParamTData(header.value, params, testData, world),
117
118
  enabled: header.enabled,
118
119
  };
119
120
  });
120
121
  if (config.authType === "Bearer") {
121
122
  //@ts-ignore
122
- config.tokens.token = repStrWParamTData(config.tokens.token, params, testData);
123
+ config.tokens.token = await repStrWParamTData(config.tokens.token, params, testData, world);
123
124
  }
124
125
  else if (config.authType === "Basic") {
125
126
  //@ts-ignore
126
- config.tokens.username = repStrWParamTData(config.tokens.username, params, testData);
127
+ config.tokens.username = await repStrWParamTData(config.tokens.username, params, testData, world);
127
128
  //@ts-ignore
128
- config.tokens.password = repStrWParamTData(config.tokens.password, params, testData);
129
+ config.tokens.password = await repStrWParamTData(config.tokens.password, params, testData, world);
130
+ }
131
+ if (config.bodyType === "raw") {
132
+ config.body = tryParseJson(await repStrWParamTData(config.body, params, testData, world));
133
+ }
134
+ let formattedUrl;
135
+ const urlObj = new URL(fixedUrl);
136
+ const existingParams = new URLSearchParams(urlObj.search);
137
+ if (existingParams.size > 0) {
138
+ formattedUrl =
139
+ (await Promise.all(fixedQueryParams)).filter(async (data) => !!data.key).length > 0
140
+ ? `${fixedUrl}&${(await Promise.all(fixedQueryParams)).map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&")}`
141
+ : fixedUrl;
142
+ }
143
+ else {
144
+ formattedUrl =
145
+ (await Promise.all(fixedQueryParams)).filter(async (data) => !!data.key).length > 0
146
+ ? `${fixedUrl}?${(await Promise.all(fixedQueryParams)).map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&")}`
147
+ : fixedUrl;
129
148
  }
130
- const formattedUrl = fixedQueryParams.filter((data) => !!data.key).length > 0
131
- ? `${fixedUrl}?${fixedQueryParams.map((data) => `${data.key}=${data.value}`).join("&")}`
132
- : fixedUrl;
133
149
  const axiosConfig = {
134
150
  method: config.method,
135
151
  url: formattedUrl,
136
- headers: fixedReqHeaders.reduce((acc, header) => {
152
+ headers: (await Promise.all(fixedReqHeaders)).reduce((acc, header) => {
137
153
  if (header.enabled && header.key.length > 0)
138
154
  acc[header.key] = header.value;
139
155
  return acc;
@@ -218,7 +234,7 @@ class Api {
218
234
  finally {
219
235
  const statusText = res.statusText ? res.statusText : error ? error.code : null;
220
236
  state.info.statusText = statusText;
221
- _commandFinally(state, this);
237
+ await _commandFinally(state, this);
222
238
  }
223
239
  }
224
240
  async requestWithAuth(methodName, world, token, params) {
@@ -311,19 +327,17 @@ class Api {
311
327
  finally {
312
328
  const statusText = res.statusText ? res.statusText : error ? error.code : null;
313
329
  state.info.statusText = statusText;
314
- _commandFinally(state, this);
330
+ await _commandFinally(state, this);
315
331
  }
316
332
  }
317
333
  }
318
334
  }
319
- const repStrWParamTData = (str, params, testData) => {
335
+ const repStrWParamTData = async (str, params, testData, world) => {
320
336
  let newStr = str;
321
337
  Object.keys(params).forEach((key) => {
322
- newStr = newStr.replaceAll(`"<${key.slice(1)}>"`, params[key]);
323
- });
324
- Object.keys(testData).forEach((key) => {
325
- newStr = newStr.replaceAll(`{{${key}}}`, testData[key]);
338
+ newStr = newStr.replaceAll(`<${key.slice(1)}>`, params[key]);
326
339
  });
340
+ newStr = await replaceWithLocalTestData(newStr, world, true, true, world.context);
327
341
  return newStr;
328
342
  };
329
343
  const getValue = (data, pattern) => {
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { InitScripts } from "./generation_scripts.js";
2
2
  declare const navigate: (path?: string) => Promise<void>;
3
- declare const initContext: (path: string, doNavigate?: boolean, headless?: boolean, world?: any, moveToRight?: number, initScript?: InitScripts | null) => Promise<any>;
3
+ declare const initContext: (path: string, doNavigate?: boolean, headless?: boolean, world?: any, moveToRight?: number, initScript?: InitScripts | null, envName?: string | null) => Promise<any>;
4
4
  declare const closeContext: () => Promise<void>;
5
- export { initContext, navigate, closeContext };
5
+ declare const getTestData: (currentEnv: string, world: any, dataFile?: string) => Promise<void>;
6
+ declare const resetTestData: (envPath: string, world: any) => Promise<void>;
7
+ export { initContext, navigate, closeContext, resetTestData, getTestData };
package/lib/auto_page.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { browserManager } from "./browser_manager.js";
2
2
  import { getContext } from "./init_browser.js";
3
- import fs from "fs";
3
+ import fs, { existsSync } from "fs";
4
4
  import path from "path";
5
+ import { _getDataFile, decrypt } from "./utils.js";
5
6
  let context = null;
6
7
  let reportFolder = "";
7
8
  const navigate = async (path = "") => {
@@ -15,9 +16,9 @@ const navigate = async (path = "") => {
15
16
  else {
16
17
  url = new URL(path, context.environment.baseUrl).href;
17
18
  }
18
- await context.stable.goto(url);
19
+ await context.web.goto(url);
19
20
  context.navigate = true;
20
- await context.stable.waitForPageLoad();
21
+ await context.web.waitForPageLoad();
21
22
  };
22
23
  const _findEmptyFolder = (folder) => {
23
24
  if (!folder) {
@@ -38,11 +39,11 @@ const _findEmptyFolder = (folder) => {
38
39
  }
39
40
  return path.join(folder, nextIndex.toString());
40
41
  };
41
- const initContext = async (path, doNavigate = true, headless = false, world = null, moveToRight = -1, initScript = null) => {
42
- if (context) {
42
+ const initContext = async (path, doNavigate = true, headless = false, world = null, moveToRight = -1, initScript = null, envName = null) => {
43
+ if (context && context.playContext && context.playContext.isClosed !== true) {
43
44
  return context;
44
45
  }
45
- if (world && world.context) {
46
+ if (world && world.context && world.context.playContext && world.context.playContext.isClosed !== true) {
46
47
  return world.context;
47
48
  }
48
49
  if (!reportFolder) {
@@ -55,9 +56,13 @@ const initContext = async (path, doNavigate = true, headless = false, world = nu
55
56
  if (globalTestDataFile) {
56
57
  // check if file exists
57
58
  if (!fs.existsSync(globalTestDataFile)) {
58
- console.log("GLOBAL_TEST_DATA_FILE not found: " + process.env.TEST_DATA_FILE);
59
+ console.log("GLOBAL_TEST_DATA_FILE not found: " + process.env.GLOBAL_TEST_DATA_FILE);
59
60
  }
60
61
  else {
62
+ // if report folder does not exist, create it
63
+ if (!fs.existsSync(reportFolder)) {
64
+ fs.mkdirSync(reportFolder, { recursive: true });
65
+ }
61
66
  // copy the test data file to the report folder as data.json
62
67
  fs.copyFileSync(globalTestDataFile, reportFolder + "/data.json");
63
68
  }
@@ -84,9 +89,35 @@ const initContext = async (path, doNavigate = true, headless = false, world = nu
84
89
  if (doNavigate) {
85
90
  await navigate(path);
86
91
  }
92
+ if (context) {
93
+ const env = getEnv(envName);
94
+ if (env && !process.env.CDP_CONNECT_URL) {
95
+ await getTestData(env, world);
96
+ }
97
+ }
87
98
  return context;
88
99
  };
100
+ const getEnv = (envName) => {
101
+ let env = process.env.BLINQ_ENV;
102
+ if (envName) {
103
+ env = envName;
104
+ }
105
+ if (env) {
106
+ try {
107
+ const content = JSON.parse(fs.readFileSync(env, "utf8"));
108
+ return content.name;
109
+ }
110
+ catch (e) {
111
+ console.log("Error reading env file: " + e);
112
+ return null;
113
+ }
114
+ }
115
+ return null;
116
+ };
89
117
  const closeContext = async () => {
118
+ if (process.env.TEMP_RUN) {
119
+ return;
120
+ }
90
121
  try {
91
122
  if (context && context.browser) {
92
123
  await browserManager.closeBrowser(context.browser);
@@ -97,6 +128,75 @@ const closeContext = async () => {
97
128
  // ignore
98
129
  }
99
130
  context = null;
131
+ reportFolder = "";
132
+ };
133
+ const getTestData = async (currentEnv, world, dataFile) => {
134
+ try {
135
+ if (fs.existsSync(path.join("data", "data.json"))) {
136
+ const data = fs.readFileSync(path.join("data", "data.json"), "utf8");
137
+ const jsonData = JSON.parse(data);
138
+ const testData = {};
139
+ const allEnvData = jsonData["*"];
140
+ const currentEnvData = jsonData[currentEnv];
141
+ // Process all environment data first as a baseline
142
+ if (allEnvData) {
143
+ for (let i = 0; i < allEnvData.length; i++) {
144
+ const item = allEnvData[i];
145
+ let useValue = item.value;
146
+ if (item.DataType === "secret") {
147
+ testData[item.key] = "secret:" + item.value;
148
+ // decrypt the secret
149
+ useValue = decrypt("secret:" + item.value);
150
+ }
151
+ else if (item.DataType === "totp") {
152
+ testData[item.key] = "totp:" + item.value;
153
+ useValue = "totp:" + item.value;
154
+ }
155
+ else {
156
+ testData[item.key] = item.value;
157
+ }
158
+ // Set process.env with the value
159
+ process.env[item.key] = useValue;
160
+ }
161
+ }
162
+ // Then process currentEnvData to override the base values
163
+ if (currentEnvData) {
164
+ for (let i = 0; i < currentEnvData.length; i++) {
165
+ const item = currentEnvData[i];
166
+ let useValue = item.value;
167
+ if (item.DataType === "secret") {
168
+ testData[item.key] = "secret:" + item.value;
169
+ // decrypt the secret
170
+ useValue = decrypt("secret:" + item.value);
171
+ }
172
+ else if (item.DataType === "totp") {
173
+ testData[item.key] = "totp:" + item.value;
174
+ useValue = "totp:" + item.value;
175
+ }
176
+ else {
177
+ testData[item.key] = item.value;
178
+ }
179
+ // Override with current env data
180
+ process.env[item.key] = useValue;
181
+ }
182
+ }
183
+ if (dataFile && !existsSync(path.dirname(dataFile))) {
184
+ fs.mkdirSync(path.dirname(dataFile), { recursive: true });
185
+ }
186
+ if (!dataFile)
187
+ dataFile = _getDataFile(world, context, context?.web);
188
+ fs.writeFileSync(dataFile, JSON.stringify(testData, null, 2));
189
+ }
190
+ }
191
+ catch (e) {
192
+ console.log("Error reading data.json file: " + e);
193
+ }
194
+ };
195
+ const resetTestData = async (envPath, world) => {
196
+ const envName = getEnv(envPath);
197
+ if (envName) {
198
+ getTestData(envName, world);
199
+ }
100
200
  };
101
- export { initContext, navigate, closeContext };
201
+ export { initContext, navigate, closeContext, resetTestData, getTestData };
102
202
  //# sourceMappingURL=auto_page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto_page.js","sourceRoot":"","sources":["../../src/auto_page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto_page.js","sourceRoot":"","sources":["../../src/auto_page.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,12 @@ class BrowserManager {
16
16
  }
17
17
  async closeBrowser(browser) {
18
18
  if (!browser && this.browsers.length > 0) {
19
- browser = this.browsers[0];
19
+ for (let i = 0; i < this.browsers.length; i++) {
20
+ await this.browsers[i].close();
21
+ }
22
+ this.browsers = [];
20
23
  }
21
- if (browser) {
24
+ if (browser && !process.env.IGNORE_BROWSER_CLOSE) {
22
25
  await browser.close();
23
26
  for (let i = 0; i < this.browsers.length; i++) {
24
27
  if (this.browsers[i].browser === browser || this.browsers[i] === browser) {
@@ -67,14 +70,23 @@ class Browser {
67
70
  let viewport = null;
68
71
  if (process.env.HEADLESS === "true") {
69
72
  headless = true;
73
+ this.headless = true;
70
74
  }
71
75
  else if (process.env.HEADLESS === "false") {
72
76
  headless = false;
77
+ this.headless = false;
73
78
  }
74
79
  if (process.env.VIEWPORT) {
75
80
  let viewportParts = process.env.VIEWPORT.split(",");
76
81
  viewport = { width: parseInt(viewportParts[0]), height: parseInt(viewportParts[1]) };
77
82
  }
83
+ else {
84
+ viewport = { width: 1280, height: 800 };
85
+ }
86
+ const args = ["--ignore-https-errors", "--ignore-certificate-errors"];
87
+ if (process.env.CDP_LISTEN_PORT) {
88
+ args.push(`--remote-debugging-port=${process.env.CDP_LISTEN_PORT}`);
89
+ }
78
90
  if (!extensionPath && userDataDirPath) {
79
91
  this.context = await chromium.launchPersistentContext(userDataDirPath, {
80
92
  headless: false,
@@ -102,7 +114,7 @@ class Browser {
102
114
  this.browser = await firefox.launch({
103
115
  headless: headless,
104
116
  timeout: 0,
105
- args: ["--ignore-https-errors", "--ignore-certificate-errors"],
117
+ args,
106
118
  //downloadsPath: downloadsPath,
107
119
  });
108
120
  }
@@ -110,7 +122,7 @@ class Browser {
110
122
  this.browser = await webkit.launch({
111
123
  headless: headless,
112
124
  timeout: 0,
113
- args: ["--ignore-https-errors", "--ignore-certificate-errors"],
125
+ args,
114
126
  //downloadsPath: downloadsPath,
115
127
  });
116
128
  }
@@ -119,19 +131,24 @@ class Browser {
119
131
  this.browser = await chromium.launch({
120
132
  headless: headless,
121
133
  timeout: 0,
122
- args: ["--ignore-https-errors", "--ignore-certificate-errors"],
134
+ args,
123
135
  channel: channel,
124
136
  //downloadsPath: downloadsPath,
125
137
  });
126
138
  }
127
139
  }
128
140
  else {
129
- this.browser = await chromium.launch({
130
- headless: headless,
131
- timeout: 0,
132
- args: ["--ignore-https-errors", "--ignore-certificate-errors"],
133
- //downloadsPath: downloadsPath,
134
- });
141
+ if (process.env.CDP_CONNECT_URL) {
142
+ this.browser = await chromium.connectOverCDP(process.env.CDP_CONNECT_URL);
143
+ }
144
+ else {
145
+ this.browser = await chromium.launch({
146
+ headless: headless,
147
+ timeout: 0,
148
+ args,
149
+ //downloadsPath: downloadsPath,
150
+ });
151
+ }
135
152
  }
136
153
  // downloadsPath
137
154
  let contextOptions = {};
@@ -150,11 +167,21 @@ class Browser {
150
167
  if (viewport) {
151
168
  contextOptions.viewport = viewport;
152
169
  }
170
+ else {
171
+ if (!this.headless) {
172
+ contextOptions.viewport = null;
173
+ }
174
+ }
153
175
  if (userAgent) {
154
176
  contextOptions.userAgent = userAgent;
155
177
  }
156
178
  if (!this.context && this.browser) {
157
- this.context = await this.browser.newContext(contextOptions);
179
+ if (this.browser.contexts().length > 0) {
180
+ this.context = this.browser.contexts()[this.browser.contexts().length - 1];
181
+ }
182
+ else {
183
+ this.context = await this.browser.newContext(contextOptions);
184
+ }
158
185
  }
159
186
  }
160
187
  if ((process.env.TRACE === "true" || aiConfig.trace === true) && this.context) {
@@ -204,12 +231,22 @@ class Browser {
204
231
  await this.context?.addInitScript({
205
232
  content: axeMinJsContent,
206
233
  });
207
- this.page = await this.context.newPage();
234
+ if (this.context && this.context.pages().length > 0) {
235
+ this.page = this.context.pages()[this.context.pages().length - 1];
236
+ }
237
+ else {
238
+ this.page = await this.context.newPage();
239
+ }
240
+ if (this.context) {
241
+ this.context.on("close", () => {
242
+ this.context.isClosed = true;
243
+ });
244
+ }
208
245
  }
209
246
  async close() {
210
- // if (this.context && this.trace) {
211
- // await this.context.tracing.stop({ path: traceFile });
212
- // }
247
+ if (process.env.IGNORE_BROWSER_CLOSE === "true") {
248
+ return;
249
+ }
213
250
  if (this.browser !== null) {
214
251
  await this.browser.close();
215
252
  this.browser = null;