@applitools/ec-client 1.7.12 → 1.7.13

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/CHANGELOG.md CHANGED
@@ -1,5 +1,76 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.7.13](https://github.com/applitools/eyes.sdk.javascript1/compare/js/ec-client@1.7.12...js/ec-client@1.7.13) (2023-10-17)
4
+
5
+
6
+ ### Code Refactoring
7
+
8
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * @applitools/utils bumped to 1.6.2
14
+ #### Code Refactoring
15
+
16
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
17
+ * @applitools/logger bumped to 2.0.12
18
+ #### Code Refactoring
19
+
20
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
21
+
22
+
23
+
24
+ * @applitools/socket bumped to 1.1.12
25
+ #### Code Refactoring
26
+
27
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
28
+
29
+
30
+
31
+ * @applitools/req bumped to 1.6.2
32
+ #### Code Refactoring
33
+
34
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
35
+
36
+
37
+
38
+ * @applitools/image bumped to 1.1.7
39
+ #### Bug Fixes
40
+
41
+ * avoid using ascii text decoder ([1b68d39](https://github.com/applitools/eyes.sdk.javascript1/commit/1b68d3945d96b17b9ab1f1a87d352206fd0c81d6))
42
+
43
+
44
+ #### Code Refactoring
45
+
46
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
47
+
48
+
49
+
50
+ * @applitools/spec-driver-webdriver bumped to 1.0.48
51
+
52
+ * @applitools/driver bumped to 1.14.4
53
+ #### Code Refactoring
54
+
55
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
56
+
57
+
58
+
59
+ * @applitools/tunnel-client bumped to 1.2.4
60
+ #### Code Refactoring
61
+
62
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
63
+
64
+
65
+
66
+ * @applitools/core-base bumped to 1.7.2
67
+ #### Code Refactoring
68
+
69
+ * disallow usage of global Buffer ([#1957](https://github.com/applitools/eyes.sdk.javascript1/issues/1957)) ([adcc082](https://github.com/applitools/eyes.sdk.javascript1/commit/adcc082f20f6b92e819b96424e995d9a69d99758))
70
+
71
+
72
+
73
+
3
74
  ## [1.7.12](https://github.com/applitools/eyes.sdk.javascript1/compare/js/ec-client-v1.7.11...js/ec-client@1.7.12) (2023-09-29)
4
75
 
5
76
 
package/dist/client.js CHANGED
@@ -32,7 +32,7 @@ async function makeECClient({ settings, logger: defaultLogger, } = {}) {
32
32
  var _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29;
33
33
  const logger = (0, logger_1.makeLogger)({ logger: defaultLogger, format: { label: 'ec-client' } });
34
34
  settings !== null && settings !== void 0 ? settings : (settings = {});
35
- (_a = settings.serverUrl) !== null && _a !== void 0 ? _a : (settings.serverUrl = (_c = (_b = utils.general.getEnvValue('EXECUTION_CLOUD_URL')) !== null && _b !== void 0 ? _b : utils.general.getEnvValue('EG_SERVER_URL')) !== null && _c !== void 0 ? _c : 'https://exec-wus.applitools.com');
35
+ (_a = settings.ecServerUrl) !== null && _a !== void 0 ? _a : (settings.ecServerUrl = (_c = (_b = utils.general.getEnvValue('EXECUTION_CLOUD_URL')) !== null && _b !== void 0 ? _b : utils.general.getEnvValue('EG_SERVER_URL')) !== null && _c !== void 0 ? _c : 'https://exec-wus.applitools.com');
36
36
  (_d = settings.proxy) !== null && _d !== void 0 ? _d : (settings.proxy = utils.general.getEnvValue('PROXY_URL') ? { url: utils.general.getEnvValue('PROXY_URL') } : undefined);
37
37
  (_e = settings.useDnsCache) !== null && _e !== void 0 ? _e : (settings.useDnsCache = utils.general.getEnvValue('USE_DNS_CACHE', 'boolean'));
38
38
  (_f = settings.tunnel) !== null && _f !== void 0 ? _f : (settings.tunnel = {});
@@ -6,7 +6,7 @@ function makeEndSession({ req, tunnels }) {
6
6
  var _a, _b;
7
7
  var _c;
8
8
  logger.log(`Request was intercepted with sessionId:`, session.sessionId);
9
- await req(request.url, { baseUrl: session.serverUrl, io: { request, response }, logger });
9
+ await req(request.url, { baseUrl: session.ecServerUrl, io: { request, response }, logger });
10
10
  if ((_a = session.tests) === null || _a === void 0 ? void 0 : _a.current) {
11
11
  await session.tests.current.abort({ settings: { testMetadata: session.metadata }, logger });
12
12
  (_b = (_c = session.tests).ended) !== null && _b !== void 0 ? _b : (_c.ended = []);
@@ -45,7 +45,7 @@ function makeExecuteScript({ req, core }) {
45
45
  const driver = await (0, driver_1.makeDriver)({
46
46
  driver: {
47
47
  sessionId: session.sessionId,
48
- serverUrl: session.serverUrl,
48
+ serverUrl: session.ecServerUrl,
49
49
  capabilities: session.capabilities,
50
50
  proxy: session.proxy,
51
51
  },
@@ -107,7 +107,7 @@ function makeExecuteScript({ req, core }) {
107
107
  return;
108
108
  }
109
109
  }
110
- await req(request.url, { baseUrl: session.serverUrl, body: requestBody, io: { request, response }, logger });
110
+ await req(request.url, { baseUrl: session.ecServerUrl, body: requestBody, io: { request, response }, logger });
111
111
  };
112
112
  }
113
113
  exports.makeExecuteScript = makeExecuteScript;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeFindElement = void 0;
4
+ const buffer_1 = require("buffer");
4
5
  function makeFindElement({ req }) {
5
6
  return async function findElement({ session, request, response, logger, }) {
6
7
  var _a, _b, _c;
7
8
  logger.log('Inspecting element lookup request to collect self-healing metadata');
8
9
  const proxyResponse = await req(request.url, {
9
- baseUrl: session.serverUrl,
10
+ baseUrl: session.ecServerUrl,
10
11
  io: { request, response, handle: false },
11
12
  logger,
12
13
  });
@@ -22,7 +23,7 @@ function makeFindElement({ req }) {
22
23
  }
23
24
  response
24
25
  .writeHead(proxyResponse.status, Object.fromEntries(proxyResponse.headers.entries()))
25
- .end(Buffer.from(responseBody));
26
+ .end(buffer_1.Buffer.from(responseBody));
26
27
  };
27
28
  }
28
29
  exports.makeFindElement = makeFindElement;
@@ -24,8 +24,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeStartSession = void 0;
27
- const tunnel_client_1 = require("@applitools/tunnel-client");
28
27
  const abort_controller_1 = require("abort-controller");
28
+ const buffer_1 = require("buffer");
29
+ const tunnel_client_1 = require("@applitools/tunnel-client");
29
30
  const utils = __importStar(require("@applitools/utils"));
30
31
  const SERVER_URLS = {
31
32
  'us-west': 'https://exec-wus.applitools.com',
@@ -59,21 +60,21 @@ function makeStartSession({ settings, req, tunnels }) {
59
60
  Object.fromEntries(Object.entries(capabilities).map(([key, value]) => [key.replace(/^applitools:/, ''), value]))),
60
61
  };
61
62
  const session = {
62
- serverUrl: settings.serverUrl,
63
+ ecServerUrl: settings.ecServerUrl,
63
64
  proxy: settings.proxy,
64
65
  credentials: { eyesServerUrl: options.eyesServerUrl, apiKey: options.apiKey },
65
66
  options,
66
67
  };
67
68
  if (options.region) {
68
69
  if (SERVER_URLS[options.region])
69
- session.serverUrl = SERVER_URLS[options.region];
70
+ session.ecServerUrl = SERVER_URLS[options.region];
70
71
  else
71
72
  throw new Error(`Failed to create session in unknown region ${options.region}`);
72
73
  }
73
74
  if (options.tunnel && tunnels) {
74
75
  // TODO should be removed once tunnel spawning issue is solved
75
- await (0, tunnel_client_1.prepareTunnelEnvironment)({ settings: { tunnelServerUrl: session.serverUrl }, logger });
76
- session.tunnels = await tunnels.acquire({ ...session.credentials, tunnelServerUrl: session.serverUrl });
76
+ await (0, tunnel_client_1.prepareTunnelEnvironment)({ settings: { tunnelServerUrl: session.ecServerUrl }, logger });
77
+ session.tunnels = await tunnels.acquire({ ...session.credentials, tunnelServerUrl: session.ecServerUrl });
77
78
  }
78
79
  const applitoolsCapabilities = Object.fromEntries([
79
80
  ...Object.entries(options).map(([key, value]) => [`applitools:${key}`, value]),
@@ -109,7 +110,7 @@ function makeStartSession({ settings, req, tunnels }) {
109
110
  if (signal.aborted)
110
111
  return queue.pause;
111
112
  const proxyResponse = await req(request.url, {
112
- baseUrl: session.serverUrl,
113
+ baseUrl: session.ecServerUrl,
113
114
  body: requestBody,
114
115
  io: { request, response, handle: false },
115
116
  // TODO uncomment when we can throw different abort reasons for task cancelation and timeout abortion
@@ -133,7 +134,7 @@ function makeStartSession({ settings, req, tunnels }) {
133
134
  (_c = (_d = responseBody.value).capabilities) !== null && _c !== void 0 ? _c : (_d.capabilities = {});
134
135
  responseBody.value.capabilities['applitools:isECClient'] = true;
135
136
  if (proxyResponse.headers.has('content-length')) {
136
- proxyResponse.headers.set('content-length', Buffer.byteLength(JSON.stringify(responseBody)).toString());
137
+ proxyResponse.headers.set('content-length', buffer_1.Buffer.byteLength(JSON.stringify(responseBody)).toString());
137
138
  }
138
139
  session.sessionId = responseBody.value.sessionId;
139
140
  session.capabilities = responseBody.value.capabilities;
package/dist/req-proxy.js CHANGED
@@ -24,6 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeReqProxy = void 0;
27
+ const buffer_1 = require("buffer");
27
28
  const req_1 = require("@applitools/req");
28
29
  const utils = __importStar(require("@applitools/utils"));
29
30
  function makeReqProxy(config) {
@@ -48,7 +49,7 @@ function makeReqProxy(config) {
48
49
  delete options.headers['content-type'];
49
50
  }
50
51
  else if (!utils.types.isFunction(options.body, 'pipe')) {
51
- options.headers['content-length'] = Buffer.byteLength(utils.types.isArray(options.body) || utils.types.isPlainObject(options.body) || options.body === null
52
+ options.headers['content-length'] = buffer_1.Buffer.byteLength(utils.types.isArray(options.body) || utils.types.isPlainObject(options.body) || options.body === null
52
53
  ? JSON.stringify(options.body)
53
54
  : options.body).toString();
54
55
  }
package/dist/server.js CHANGED
@@ -56,7 +56,7 @@ async function makeServer({ settings, logger: mainLogger, }) {
56
56
  const core = (0, core_base_1.makeCore)({ agentId: `js/ec-client/${require('../package.json').version}` });
57
57
  const tunnels = ((_a = settings.tunnel) === null || _a === void 0 ? void 0 : _a.serviceUrl)
58
58
  ? await (0, manager_1.makeTunnelManager)({ settings: settings.tunnel, logger: serverLogger })
59
- : await (0, manager_client_1.makeTunnelManagerClient)({ settings: settings.tunnel });
59
+ : await (0, manager_client_1.makeTunnelManagerClient)({ settings: settings.tunnel, logger: serverLogger });
60
60
  const sessions = new Map();
61
61
  const commands = {
62
62
  startSession: (0, start_session_1.makeStartSession)({ settings, req, tunnels }),
@@ -87,7 +87,7 @@ async function makeServer({ settings, logger: mainLogger, }) {
87
87
  router.any(/^\/session\/(?<sessionId>[^\/]+).*$/, async ({ match }) => {
88
88
  requestLogger.log('Passthrough request');
89
89
  const session = sessions.get(match.groups.sessionId);
90
- await req(request.url, { baseUrl: session.serverUrl, io: { request, response }, logger: requestLogger });
90
+ await req(request.url, { baseUrl: session.ecServerUrl, io: { request, response }, logger: requestLogger });
91
91
  });
92
92
  router.fallback(async () => {
93
93
  throw new Error('Unknown request');
@@ -5,7 +5,7 @@ const manager_server_1 = require("./manager-server");
5
5
  const socket_1 = require("@applitools/socket");
6
6
  const fs_1 = require("fs");
7
7
  const net_1 = require("net");
8
- async function makeTunnelManagerClient({ settings, } = {}) {
8
+ async function makeTunnelManagerClient({ settings, logger, }) {
9
9
  const path = process.env.APPLITOOLS_TUNNEL_MANAGER_SOCK ||
10
10
  (process.platform === 'win32' ? '\\\\.\\pipe\\applitools-tunnel-manager' : '/tmp/applitools-tunnel-manager.sock');
11
11
  const socket = (0, socket_1.makeSocket)((0, net_1.createConnection)({ path }), { transport: 'ipc' });
@@ -19,7 +19,14 @@ async function makeTunnelManagerClient({ settings, } = {}) {
19
19
  }
20
20
  catch { }
21
21
  }
22
- server = await (0, manager_server_1.makeTunnelManagerServerProcess)({ settings, path });
22
+ logger.log(`Starting tunnel manager in separate process using path ${path} and settings`, settings);
23
+ try {
24
+ server = await (0, manager_server_1.makeTunnelManagerServerProcess)({ settings, path });
25
+ }
26
+ catch (error) {
27
+ if (error.code !== 'EADDRINUSE')
28
+ throw error;
29
+ }
23
30
  }
24
31
  }
25
32
  finally {
@@ -35,81 +35,95 @@ const os = __importStar(require("os"));
35
35
  const LOG_DIRNAME = (_a = process.env.APPLITOOLS_LOG_DIR) !== null && _a !== void 0 ? _a : path.resolve(os.tmpdir(), `applitools-tunnel-logs`);
36
36
  async function makeTunnelManagerServer({ settings, path, idleTimeout = 600000, // 10min
37
37
  }) {
38
- var _a;
39
- const server = await new Promise((resolve, reject) => {
40
- const server = (0, net_1.createServer)().listen({ path });
41
- server.on('error', error => reject(error));
42
- server.on('listening', () => resolve(server));
43
- });
44
- const logger = (0, logger_1.makeLogger)({
45
- handler: { type: 'rolling file', name: 'ec-tunnel-manager', dirname: LOG_DIRNAME },
46
- level: 'info',
47
- format: {
48
- label: 'ec-tunnel-manager',
49
- colors: false,
50
- },
51
- });
52
- logger.log('Server is started');
53
- const manager = await (0, manager_1.makeTunnelManager)({ settings, logger });
54
- (_a = process.send) === null || _a === void 0 ? void 0 : _a.call(process, { name: 'started', payload: { path } }); // NOTE: this is a part of the js specific protocol
55
- let idle;
56
- let serverClosed = false;
57
- if (idleTimeout)
58
- idle = setTimeout(close, idleTimeout);
59
- server.on('close', () => {
60
- if (idle)
61
- clearTimeout(idle);
62
- serverClosed = true;
63
- });
64
- const sockets = new Set();
65
- server.on('connection', client => {
66
- const store = [];
67
- if (idle)
68
- idle = clearTimeout(idle);
69
- const socket = (0, socket_1.makeSocket)(client, { transport: 'ipc', logger });
70
- sockets.add(socket);
71
- socket.on('close', async () => {
72
- logger.log('Connection is closed, remaining tunnels are going to be released', store);
73
- await Promise.all(store.map(manager.release)).catch(logger.error);
74
- if (sockets.size === 0 && !serverClosed)
75
- idle = setTimeout(close, idleTimeout);
38
+ var _a, _b;
39
+ try {
40
+ const server = await new Promise((resolve, reject) => {
41
+ const server = (0, net_1.createServer)().listen({ path });
42
+ server.on('error', error => reject(error));
43
+ server.on('listening', () => resolve(server));
76
44
  });
77
- socket.command('Tunnel.acquire', async (credentials) => {
78
- const tunnels = await manager.acquire(credentials);
79
- store.push(tunnels);
80
- return tunnels;
45
+ const logger = (0, logger_1.makeLogger)({
46
+ handler: { type: 'rolling file', name: 'ec-tunnel-manager', dirname: LOG_DIRNAME },
47
+ level: 'info',
48
+ format: {
49
+ label: 'ec-tunnel-manager',
50
+ colors: false,
51
+ },
81
52
  });
82
- socket.command('Tunnel.release', async (tunnels) => {
83
- await manager.release(tunnels);
84
- const storeIndex = store.findIndex(storedTunnels => tunnels.every((tunnel, index) => tunnel.tunnelId === storedTunnels[index].tunnelId));
85
- tunnels.splice(storeIndex, 1);
53
+ logger.log('Server is started');
54
+ const manager = await (0, manager_1.makeTunnelManager)({ settings, logger });
55
+ (_a = process.send) === null || _a === void 0 ? void 0 : _a.call(process, { name: 'started', payload: { path } });
56
+ let idle;
57
+ let serverClosed = false;
58
+ if (idleTimeout)
59
+ idle = setTimeout(close, idleTimeout);
60
+ server.on('close', () => {
61
+ if (idle)
62
+ clearTimeout(idle);
63
+ serverClosed = true;
86
64
  });
87
- });
88
- return { close };
89
- async function close() {
90
- logger.log('Server is going to be closed');
91
- server.close();
92
- await manager.close();
93
- process.kill(0);
65
+ const sockets = new Set();
66
+ server.on('connection', client => {
67
+ const store = [];
68
+ if (idle)
69
+ idle = clearTimeout(idle);
70
+ const socket = (0, socket_1.makeSocket)(client, { transport: 'ipc', logger });
71
+ sockets.add(socket);
72
+ socket.on('close', async () => {
73
+ logger.log('Connection is closed, remaining tunnels are going to be released', store);
74
+ await Promise.all(store.map(manager.release)).catch(logger.error);
75
+ if (sockets.size === 0 && !serverClosed)
76
+ idle = setTimeout(close, idleTimeout);
77
+ });
78
+ socket.command('Tunnel.acquire', async (credentials) => {
79
+ const tunnels = await manager.acquire(credentials);
80
+ store.push(tunnels);
81
+ return tunnels;
82
+ });
83
+ socket.command('Tunnel.release', async (tunnels) => {
84
+ await manager.release(tunnels);
85
+ const storeIndex = store.findIndex(storedTunnels => tunnels.every((tunnel, index) => tunnel.tunnelId === storedTunnels[index].tunnelId));
86
+ tunnels.splice(storeIndex, 1);
87
+ });
88
+ });
89
+ return { close };
90
+ async function close() {
91
+ logger.log('Server is going to be closed');
92
+ server.close();
93
+ await manager.close();
94
+ process.kill(0);
95
+ }
96
+ }
97
+ catch (error) {
98
+ (_b = process.send) === null || _b === void 0 ? void 0 : _b.call(process, { name: 'error', payload: { error: { message: error.message, code: error.code, stack: error.stack } } });
99
+ throw error;
94
100
  }
95
101
  }
96
102
  exports.makeTunnelManagerServer = makeTunnelManagerServer;
97
103
  async function makeTunnelManagerServerProcess(options) {
98
104
  return new Promise((resolve, reject) => {
99
105
  const server = (0, child_process_1.fork)(path.resolve(__dirname, '../../dist/cli/cli.js'), [`tunnel-manager`, `--config=${JSON.stringify(options)}`], {
100
- stdio: ['ignore', 'ignore', 'ignore', 'ipc'],
106
+ stdio: ['ignore', 'ignore', 'inherit', 'ipc'],
101
107
  detached: true,
102
108
  });
103
109
  const timeout = setTimeout(() => {
104
110
  reject(new Error(`Server didn't respond for 10s after being started`));
105
111
  server.kill();
106
- }, 5000);
112
+ }, 10000);
107
113
  server.on('error', reject);
108
- server.once('message', ({ name }) => {
114
+ server.once('message', (message) => {
115
+ const { name, payload } = message;
116
+ server.channel.unref();
109
117
  if (name === 'started') {
110
118
  resolve({ close: async () => void server.kill() });
111
119
  clearTimeout(timeout);
112
- server.channel.unref();
120
+ }
121
+ else if (name === 'error') {
122
+ const error = new Error(payload.error.message);
123
+ error.code = payload.error.code;
124
+ error.stack = payload.error.stack;
125
+ reject(error);
126
+ clearTimeout(timeout);
113
127
  }
114
128
  });
115
129
  server.unref();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/ec-client",
3
- "version": "1.7.12",
3
+ "version": "1.7.13",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -52,14 +52,14 @@
52
52
  "test:it": "MOCHA_GROUP=it run --top-level mocha './test/it/*.spec.ts'"
53
53
  },
54
54
  "dependencies": {
55
- "@applitools/core-base": "1.7.1",
56
- "@applitools/driver": "1.14.3",
57
- "@applitools/logger": "2.0.11",
58
- "@applitools/req": "1.6.1",
59
- "@applitools/socket": "1.1.11",
60
- "@applitools/spec-driver-webdriver": "1.0.47",
61
- "@applitools/tunnel-client": "1.2.3",
62
- "@applitools/utils": "1.6.1",
55
+ "@applitools/core-base": "1.7.2",
56
+ "@applitools/driver": "1.14.4",
57
+ "@applitools/logger": "2.0.12",
58
+ "@applitools/req": "1.6.2",
59
+ "@applitools/socket": "1.1.12",
60
+ "@applitools/spec-driver-webdriver": "1.0.48",
61
+ "@applitools/tunnel-client": "1.2.4",
62
+ "@applitools/utils": "1.6.2",
63
63
  "abort-controller": "3.0.0",
64
64
  "webdriver": "7.31.1",
65
65
  "yargs": "^17.7.2"
@@ -1,7 +1,9 @@
1
1
  import type { TunnelManagerSettings } from '../types';
2
+ import { type Logger } from '@applitools/logger';
2
3
  import { type TunnelManager } from './manager';
3
- export declare function makeTunnelManagerClient({ settings, }?: {
4
+ export declare function makeTunnelManagerClient({ settings, logger, }: {
4
5
  settings?: TunnelManagerSettings;
6
+ logger: Logger;
5
7
  }): Promise<TunnelManager & {
6
8
  close(): Promise<void>;
7
9
  }>;
package/types/types.d.ts CHANGED
@@ -8,7 +8,7 @@ export interface ECClient {
8
8
  close(): void;
9
9
  }
10
10
  export interface ECClientSettings {
11
- serverUrl: string;
11
+ ecServerUrl: string;
12
12
  proxy?: Proxy;
13
13
  useDnsCache?: boolean;
14
14
  options?: ECCapabilitiesOptions;
@@ -32,7 +32,7 @@ export interface ECCapabilitiesOptions {
32
32
  selfHealingMaxRetryTime?: number;
33
33
  }
34
34
  export interface ECSession {
35
- serverUrl: string;
35
+ ecServerUrl: string;
36
36
  proxy?: Proxy;
37
37
  sessionId: string;
38
38
  credentials: {