From c7557da17c3424c55955a3c3654d70ab4e0b9c24 Mon Sep 17 00:00:00 2001 From: Pinank Solanki Date: Thu, 11 Jan 2024 15:10:04 +0530 Subject: [PATCH 1/6] Change module type to CommonJS --- packages/sdk-utils/index.js | 6 ++-- packages/sdk-utils/package.json | 3 +- packages/sdk-utils/src/lib/httpClient.js | 10 +++--- packages/sdk-utils/src/lib/logger.js | 6 ++-- packages/sdk-utils/src/lib/utils.js | 14 +++------ packages/sdk-utils/src/smartui.js | 20 +++++++----- packages/selenium-driver/index.js | 6 ++-- packages/selenium-driver/package.json | 1 - packages/selenium-driver/src/smartui.js | 11 ++++--- packages/selenium-driver/src/utils.js | 7 ----- pnpm-lock.yaml | 39 +++++++++++++++++++++--- 11 files changed, 72 insertions(+), 51 deletions(-) delete mode 100644 packages/selenium-driver/src/utils.js diff --git a/packages/sdk-utils/index.js b/packages/sdk-utils/index.js index 027219c..f0079bb 100644 --- a/packages/sdk-utils/index.js +++ b/packages/sdk-utils/index.js @@ -1,7 +1,7 @@ -import { isSmartUIRunning, fetchDOMSerializer, postSnapshot } from './src/smartui.js' -import logger from './src/lib/logger.js' +const { isSmartUIRunning, fetchDOMSerializer, postSnapshot } = require('./src/smartui'); +const logger = require('./src/lib/logger'); -export default { +module.exports = { logger, fetchDOMSerializer, postSnapshot, diff --git a/packages/sdk-utils/package.json b/packages/sdk-utils/package.json index dfd0f9f..4a9418d 100644 --- a/packages/sdk-utils/package.json +++ b/packages/sdk-utils/package.json @@ -8,7 +8,6 @@ "url": "git+https://github.com/LambdaTest/lambdatest-js-sdk", "directory": "packages/sdk-utils" }, - "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, @@ -19,7 +18,7 @@ "license": "MIT", "dependencies": { "axios": "^1.6.2", - "chalk": "^5.3.0", + "chalk": "4", "winston": "^3.11.0" } } diff --git a/packages/sdk-utils/src/lib/httpClient.js b/packages/sdk-utils/src/lib/httpClient.js index deeed8f..7a0a58f 100644 --- a/packages/sdk-utils/src/lib/httpClient.js +++ b/packages/sdk-utils/src/lib/httpClient.js @@ -1,7 +1,7 @@ -import axios from 'axios' -import utils from './utils.js' +const axios = require('axios'); +const utils = require('./utils'); -class httpClient { +module.exports = new class httpClient { async request(config) { return axios.request(config) .then(resp => { @@ -47,6 +47,4 @@ class httpClient { } }) } -} - -export default new httpClient(); +}; diff --git a/packages/sdk-utils/src/lib/logger.js b/packages/sdk-utils/src/lib/logger.js index 35dd080..299a8c6 100644 --- a/packages/sdk-utils/src/lib/logger.js +++ b/packages/sdk-utils/src/lib/logger.js @@ -1,12 +1,12 @@ -import { createLogger, transports, format, config } from 'winston' -import chalk from 'chalk' +const { createLogger, transports, format } = require('winston'); +const chalk = require('chalk'); const logLevel = () => { let debug = (process.env.LT_SDK_DEBUG === 'true') ? 'debug' : undefined; return debug || process.env.LT_SDK_LOG_LEVEL || 'info' } -export default (logContext) => { +module.exports = function logger(logContext) { return createLogger({ level: logLevel(), format: format.combine( diff --git a/packages/sdk-utils/src/lib/utils.js b/packages/sdk-utils/src/lib/utils.js index 15a8d6b..1e43008 100644 --- a/packages/sdk-utils/src/lib/utils.js +++ b/packages/sdk-utils/src/lib/utils.js @@ -1,13 +1,7 @@ -import fs from 'fs'; -import { fileURLToPath } from 'url'; -import { dirname, join } from 'path'; - -export function getSmartUIServerAddress() { +function getSmartUIServerAddress() { return process.env.SMARTUI_SERVER_ADDRESS || 'http://localhost:8080' } -export function getPackageName() { - return JSON.parse(fs.readFileSync(join(dirname(fileURLToPath(import.meta.url)), '../../package.json'), 'utf-8')).name -} - -export * as default from './utils.js'; +module.exports = { + getSmartUIServerAddress +}; diff --git a/packages/sdk-utils/src/smartui.js b/packages/sdk-utils/src/smartui.js index 57a468a..86d2eae 100644 --- a/packages/sdk-utils/src/smartui.js +++ b/packages/sdk-utils/src/smartui.js @@ -1,9 +1,9 @@ -import client from './lib/httpClient.js' -import logger from './lib/logger.js' -import utils from './lib/utils.js' -const log = logger(utils.getPackageName()) +const client = require('./lib/httpClient'); +const logger = require('./lib/logger'); +const utils = require('./lib/utils'); +const log = logger(require('../package.json').name); -export async function isSmartUIRunning() { +async function isSmartUIRunning() { try { await client.isSmartUIRunning(); return true; @@ -13,7 +13,7 @@ export async function isSmartUIRunning() { } } -export async function fetchDOMSerializer() { +async function fetchDOMSerializer() { try { return await client.fetchDOMSerializer(); } catch (error) { @@ -22,7 +22,7 @@ export async function fetchDOMSerializer() { } } -export async function postSnapshot(snapshotDOM, snapshotName, testType) { +async function postSnapshot(snapshotDOM, snapshotName, testType) { const data = JSON.stringify({ snapshot: { dom: snapshotDOM, @@ -38,3 +38,9 @@ export async function postSnapshot(snapshotDOM, snapshotName, testType) { throw new Error(`post snapshot failed`); } } + +module.exports = { + isSmartUIRunning, + fetchDOMSerializer, + postSnapshot +} diff --git a/packages/selenium-driver/index.js b/packages/selenium-driver/index.js index 86929c6..35f348a 100644 --- a/packages/selenium-driver/index.js +++ b/packages/selenium-driver/index.js @@ -1,5 +1,5 @@ -import { smartuiSnapshot } from './src/smartui.js'; +const { smartuiSnapshot } = require('./src/smartui'); -export { +module.exports = { smartuiSnapshot -}; +} diff --git a/packages/selenium-driver/package.json b/packages/selenium-driver/package.json index 43d2933..33e2e13 100644 --- a/packages/selenium-driver/package.json +++ b/packages/selenium-driver/package.json @@ -11,7 +11,6 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "type": "module", "keywords": [ "lambdatest", "selenium" diff --git a/packages/selenium-driver/src/smartui.js b/packages/selenium-driver/src/smartui.js index 0f37ad5..8a6f1f3 100644 --- a/packages/selenium-driver/src/smartui.js +++ b/packages/selenium-driver/src/smartui.js @@ -1,8 +1,7 @@ -import utils from '@lambdatest/sdk-utils' -import { getPackageName } from './utils.js'; -const pkgName = getPackageName() +const utils = require('@lambdatest/sdk-utils'); +const pkgName = require('../package.json').name; -export async function smartuiSnapshot(driver, snapshotName) { +async function smartuiSnapshot(driver, snapshotName) { // TODO: check if driver is selenium webdriver object if (!driver) throw new Error('An instance of the selenium driver object is required.'); if (!snapshotName) throw new Error('The `snapshotName` argument is required.'); @@ -23,3 +22,7 @@ export async function smartuiSnapshot(driver, snapshotName) { throw new Error(error); } } + +module.exports = { + smartuiSnapshot +} diff --git a/packages/selenium-driver/src/utils.js b/packages/selenium-driver/src/utils.js deleted file mode 100644 index 95c43e3..0000000 --- a/packages/selenium-driver/src/utils.js +++ /dev/null @@ -1,7 +0,0 @@ -import fs from 'fs'; -import { fileURLToPath } from 'url'; -import { dirname, join } from 'path'; - -export function getPackageName() { - return JSON.parse(fs.readFileSync(join(dirname(fileURLToPath(import.meta.url)), '../package.json'), 'utf-8')).name -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac2f56e..884e9fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^1.6.2 version: 1.6.2 chalk: - specifier: ^5.3.0 - version: 5.3.0 + specifier: '4' + version: 4.1.2 winston: specifier: ^3.11.0 version: 3.11.0 @@ -43,6 +43,13 @@ packages: resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} dev: false + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: false + /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} dev: false @@ -61,9 +68,12 @@ packages: - debug dev: false - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 dev: false /color-convert@1.9.3: @@ -72,6 +82,13 @@ packages: color-name: 1.1.3 dev: false + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: false @@ -144,6 +161,11 @@ packages: mime-types: 2.1.35 dev: false + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: false + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false @@ -233,6 +255,13 @@ packages: safe-buffer: 5.2.1 dev: false + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: false + /text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} dev: false From 4ce030c0b1c059e079141d93573021f032632e6a Mon Sep 17 00:00:00 2001 From: Pinank Solanki Date: Mon, 22 Jan 2024 20:44:17 +0530 Subject: [PATCH 2/6] Add options argument in smartuiSnapshot --- packages/sdk-utils/src/smartui.js | 7 ++----- packages/selenium-driver/src/smartui.js | 13 +++++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/sdk-utils/src/smartui.js b/packages/sdk-utils/src/smartui.js index 86d2eae..058386f 100644 --- a/packages/sdk-utils/src/smartui.js +++ b/packages/sdk-utils/src/smartui.js @@ -22,12 +22,9 @@ async function fetchDOMSerializer() { } } -async function postSnapshot(snapshotDOM, snapshotName, testType) { +async function postSnapshot(snapshot, testType) { const data = JSON.stringify({ - snapshot: { - dom: snapshotDOM, - name: snapshotName - }, + snapshot, testType }); diff --git a/packages/selenium-driver/src/smartui.js b/packages/selenium-driver/src/smartui.js index 8a6f1f3..d6ffa99 100644 --- a/packages/selenium-driver/src/smartui.js +++ b/packages/selenium-driver/src/smartui.js @@ -1,10 +1,10 @@ const utils = require('@lambdatest/sdk-utils'); const pkgName = require('../package.json').name; -async function smartuiSnapshot(driver, snapshotName) { +async function smartuiSnapshot(driver, name, options = {}) { // TODO: check if driver is selenium webdriver object if (!driver) throw new Error('An instance of the selenium driver object is required.'); - if (!snapshotName) throw new Error('The `snapshotName` argument is required.'); + if (!name) throw new Error('The `name` argument is required.'); if (!(await utils.isSmartUIRunning())) throw new Error('SmartUI server is not running.'); let log = utils.logger(pkgName); @@ -12,12 +12,13 @@ async function smartuiSnapshot(driver, snapshotName) { let resp = await utils.fetchDOMSerializer(); await driver.executeScript(resp.body.data.dom); - let { dom } = await driver.executeScript(options => ({ - dom: SmartUIDOM.serialize(options) + let { dom, url } = await driver.executeScript(options => ({ + dom: SmartUIDOM.serialize(options), + url: document.URL }), {}); - await utils.postSnapshot(dom.html, snapshotName, pkgName); - log.info(`Snapshot captured: ${snapshotName}`); + await utils.postSnapshot({url, name, dom, options}, pkgName); + log.info(`Snapshot captured: ${name}`); } catch (error) { throw new Error(error); } From da83ed9e806505733dfeee28d03a5ac42f6cbd2b Mon Sep 17 00:00:00 2001 From: Pinank Solanki Date: Thu, 25 Jan 2024 17:25:43 +0530 Subject: [PATCH 3/6] Show error message on failure --- packages/sdk-utils/src/lib/httpClient.js | 2 +- packages/sdk-utils/src/smartui.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sdk-utils/src/lib/httpClient.js b/packages/sdk-utils/src/lib/httpClient.js index 7a0a58f..570cfc5 100644 --- a/packages/sdk-utils/src/lib/httpClient.js +++ b/packages/sdk-utils/src/lib/httpClient.js @@ -14,7 +14,7 @@ module.exports = new class httpClient { }) .catch(error => { if (error.response) { - throw new Error(JSON.stringify(error.response.data)); + throw new Error(error.response.data.error.message); } if (error.request) { throw new Error(error.toJSON().message); diff --git a/packages/sdk-utils/src/smartui.js b/packages/sdk-utils/src/smartui.js index 058386f..e17bc07 100644 --- a/packages/sdk-utils/src/smartui.js +++ b/packages/sdk-utils/src/smartui.js @@ -18,7 +18,7 @@ async function fetchDOMSerializer() { return await client.fetchDOMSerializer(); } catch (error) { log.debug(error); - throw new Error(`fetch DOMSerializer failed`); + throw new Error(`fetch DOMSerializer failed; ${error.message}`); } } @@ -32,7 +32,7 @@ async function postSnapshot(snapshot, testType) { return await client.postSnapshot(data); } catch (error) { log.debug(error); - throw new Error(`post snapshot failed`); + throw new Error(`post snapshot failed; ${error.message}`); } } From 3d41a01d07bdedd7a1663005f1f44dfae645e785 Mon Sep 17 00:00:00 2001 From: Pinank Solanki Date: Mon, 29 Jan 2024 17:59:47 +0530 Subject: [PATCH 4/6] Add warning messages --- packages/sdk-utils/src/lib/logger.js | 4 ++-- packages/selenium-driver/src/smartui.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/sdk-utils/src/lib/logger.js b/packages/sdk-utils/src/lib/logger.js index 299a8c6..1b2b96f 100644 --- a/packages/sdk-utils/src/lib/logger.js +++ b/packages/sdk-utils/src/lib/logger.js @@ -20,10 +20,10 @@ module.exports = function logger(logContext) { message = chalk.blue(message); break; case 'warn': - message = chalk.yellow(message); + message = chalk.yellow(`Warning: ${message}`); break; case 'error': - message = chalk.red(message); + message = chalk.red(`Error: ${message}`); break; } return `[${logContext}] ${message}`; diff --git a/packages/selenium-driver/src/smartui.js b/packages/selenium-driver/src/smartui.js index d6ffa99..384b732 100644 --- a/packages/selenium-driver/src/smartui.js +++ b/packages/selenium-driver/src/smartui.js @@ -17,8 +17,9 @@ async function smartuiSnapshot(driver, name, options = {}) { url: document.URL }), {}); - await utils.postSnapshot({url, name, dom, options}, pkgName); + let { body } = await utils.postSnapshot({url, name, dom, options}, pkgName); log.info(`Snapshot captured: ${name}`); + if (body.data.warnings?.length !== 0) body.data.warnings.map(e => log.warn(e)); } catch (error) { throw new Error(error); } From 0336576d5944ce6dc4dd6e8c08ebe1f11a95400d Mon Sep 17 00:00:00 2001 From: Pinank Solanki Date: Mon, 29 Jan 2024 18:21:55 +0530 Subject: [PATCH 5/6] Fix warnings condition --- packages/selenium-driver/src/smartui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/selenium-driver/src/smartui.js b/packages/selenium-driver/src/smartui.js index 384b732..a2b3803 100644 --- a/packages/selenium-driver/src/smartui.js +++ b/packages/selenium-driver/src/smartui.js @@ -19,7 +19,7 @@ async function smartuiSnapshot(driver, name, options = {}) { let { body } = await utils.postSnapshot({url, name, dom, options}, pkgName); log.info(`Snapshot captured: ${name}`); - if (body.data.warnings?.length !== 0) body.data.warnings.map(e => log.warn(e)); + if (body && body.data && body.data.warnings?.length !== 0) body.data.warnings.map(e => log.warn(e)); } catch (error) { throw new Error(error); } From a8c281545ada0b1c55807f2389200cd732bff4b4 Mon Sep 17 00:00:00 2001 From: Pinank Solanki Date: Tue, 30 Jan 2024 11:44:18 +0530 Subject: [PATCH 6/6] Bump version --- packages/sdk-utils/package.json | 2 +- packages/selenium-driver/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sdk-utils/package.json b/packages/sdk-utils/package.json index 4a9418d..b08c71d 100644 --- a/packages/sdk-utils/package.json +++ b/packages/sdk-utils/package.json @@ -1,6 +1,6 @@ { "name": "@lambdatest/sdk-utils", - "version": "1.0.1", + "version": "1.0.2", "description": "", "main": "index.js", "repository": { diff --git a/packages/selenium-driver/package.json b/packages/selenium-driver/package.json index 33e2e13..9a47669 100644 --- a/packages/selenium-driver/package.json +++ b/packages/selenium-driver/package.json @@ -1,6 +1,6 @@ { "name": "@lambdatest/selenium-driver", - "version": "1.0.1", + "version": "1.0.2", "description": "Selenium driver for all Lambdatest functionalities", "main": "index.js", "repository": {