New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@applitools/core

Package Overview
Dependencies
Maintainers
54
Versions
215
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@applitools/core - npm Package Compare versions

Comparing version 4.31.4 to 4.32.0

dist/ufg/utils/filterStaleElements.js

94

dist/offline/run-offline-snapshots.js

@@ -40,4 +40,9 @@ "use strict";

const format_results_1 = require("../utils/format-results");
function getConsoleLogLimit() {
var _a;
return (_a = utils.general.getEnvValue('OFFLINE_LOG_LIMIT', 'number')) !== null && _a !== void 0 ? _a : 20;
}
async function runOfflineSnapshots(options) {
var _a;
const limitConsoleLogs = getConsoleLogLimit();
if (!options.offlineLocationPath)

@@ -84,3 +89,4 @@ throw new Error('offlineLocationPath is required');

logger.log('running tests', testFolders);
const results = await Promise.all(testFolders.map(async (testFolder) => {
const messages = [];
const testPromises = testFolders.map(async (testFolder) => {
const testLogger = logger.extend({ tags: [testFolder] });

@@ -92,3 +98,14 @@ const testPath = path_1.default.join(offlineLocationPath, testFolder);

const openSettings = (0, merge_configs_1.mergeConfigs)(fileOpenSettings, options.config.open);
logger.console.log(`Running test: ${openSettings.testName} (${formatEnvironment(openSettings.environment)})`);
messages.push(`Running test: ${openSettings.testName} (${formatEnvironment(openSettings.environment)})`);
return { testPath, openSettings, testLogger };
});
const preparedTests = await Promise.all(testPromises);
if (messages.length > limitConsoleLogs) {
const slice = messages.slice(0, limitConsoleLogs);
logger.console.log(slice.join('\n') + `\n... ${messages.length - limitConsoleLogs} more tests`);
}
else {
logger.console.log(messages.join('\n'));
}
const results = await Promise.all(preparedTests.map(async ({ testPath, openSettings, testLogger }) => {
return runTest(testPath, openSettings, testLogger);

@@ -121,19 +138,25 @@ }));

});
const checkFolders = (await fs_1.default.promises.readdir(testPath)).filter(folderpath => folderpath.startsWith('check-'));
logger.log('running checks for test', testPath, ':', checkFolders);
const targets = await Promise.all(checkFolders.map(async (checkFolder) => {
const snapshot = await fs_1.default.promises
.readFile(path_1.default.resolve(testPath, checkFolder, 'snapshot.json'), 'utf-8')
.then(JSON.parse);
snapshot.settings.environment.environmentId = utils.general.guid();
return snapshot;
}));
await uploadResources(targets, logger);
// logger.log('resource hashes for test', testFolder, ':', resourceHashes)
logger.log('uploaded resources for test', testPath);
await Promise.all(targets.map((target, index) => runCheck(eyes, target, index, logger)));
const fileCloseSettings = await fs_1.default.promises.readFile(path_1.default.resolve(testPath, 'close.json'), 'utf-8').then(JSON.parse);
const closeSettings = (0, merge_configs_1.mergeConfigs)(fileCloseSettings, options.config.close);
await eyes.close({ settings: closeSettings });
logger.log('done running test', logger);
const closeSettingsPath = path_1.default.resolve(testPath, 'close.json');
if (fs_1.default.existsSync(closeSettingsPath)) {
const checkFolders = (await fs_1.default.promises.readdir(testPath)).filter(folderpath => folderpath.startsWith('check-'));
logger.log('running checks for test', testPath, ':', checkFolders);
const targets = await Promise.all(checkFolders.map(async (checkFolder) => {
const snapshot = await fs_1.default.promises
.readFile(path_1.default.resolve(testPath, checkFolder, 'snapshot.json'), 'utf-8')
.then(JSON.parse);
snapshot.settings.environment.environmentId = utils.general.guid();
return snapshot;
}));
await uploadResources(targets, logger);
// logger.log('resource hashes for test', testFolder, ':', resourceHashes)
logger.log('uploaded resources for test', testPath);
await Promise.all(targets.map((target, index) => runCheck(eyes, target, index, logger)));
const fileCloseSettings = await fs_1.default.promises.readFile(closeSettingsPath, 'utf-8').then(JSON.parse);
const closeSettings = (0, merge_configs_1.mergeConfigs)(fileCloseSettings, options.config.close);
await eyes.close({ settings: closeSettings });
}
else {
await eyes.abort();
}
logger.log('done running test', testPath);
return { batchId: openSettings.batch.id, results: (await eyes.getResults({ logger }))[0] };

@@ -242,12 +265,12 @@ }

if (passedOrNew.length > 0) {
outputStr += testResultsOutput(passedOrNew, warnForUnsavedNewTests);
outputStr += testResultsOutput(passedOrNew, warnForUnsavedNewTests, 'Passed');
}
if (failedTests.length > 0) {
outputStr += testResultsOutput(failedTests, warnForUnsavedNewTests);
outputStr += testResultsOutput(failedTests, warnForUnsavedNewTests, 'Failed');
}
if (unresolved.length > 0) {
outputStr += testResultsOutput(unresolved, warnForUnsavedNewTests);
outputStr += testResultsOutput(unresolved, warnForUnsavedNewTests, 'Unresolved');
}
if (aborted.length > 0) {
outputStr += testResultsOutput(aborted, warnForUnsavedNewTests);
outputStr += testResultsOutput(aborted, warnForUnsavedNewTests, 'Aborted');
}

@@ -316,4 +339,6 @@ if (errors.length) {

}
function testResultsOutput(results, warnForUnsavedNewTests) {
let outputStr = '';
function testResultsOutput(results, warnForUnsavedNewTests, tag) {
const limitConsoleLogs = getConsoleLogLimit();
const truncated = [];
let limitCount = 0;
const sortedTestResults = results.sort((a, b) => a.name.localeCompare(b.name));

@@ -323,18 +348,27 @@ sortedTestResults.forEach(result => {

if (result.isAborted) {
outputStr += `${testTitle}${chalk_1.default.keyword('red')(`Aborted`)}\n`;
const str = `${testTitle}${chalk_1.default.keyword('red')(`Aborted`)}\n`;
truncated.push(str);
}
else if (result.isNew) {
const newResColor = warnForUnsavedNewTests ? 'orange' : 'blue';
outputStr += `${testTitle}${chalk_1.default.keyword(newResColor)('New')}\n`;
const str = `${testTitle}${chalk_1.default.keyword(newResColor)('New')}\n`;
truncated.push(str);
}
else if (result.status === 'Passed') {
outputStr += `${testTitle}${chalk_1.default.green('Passed')}\n`;
const str = `${testTitle}${chalk_1.default.green('Passed')}\n`;
truncated.push(str);
}
else if (result.status === 'Failed') {
outputStr += `${testTitle}${chalk_1.default.keyword('red')('Failed')}\n`;
const str = `${testTitle}${chalk_1.default.keyword('red')('Failed')}\n`;
truncated.push(str);
}
else {
outputStr += `${testTitle}${chalk_1.default.keyword('orange')(`Unresolved`)}\n`;
const str = `${testTitle}${chalk_1.default.keyword('orange')(`Unresolved`)}\n`;
truncated.push(str);
}
if (limitCount < limitConsoleLogs)
limitCount++;
});
let outputStr = truncated.slice(0, limitConsoleLogs).join('');
outputStr += results.length - limitCount > 0 ? `... ${results.length - limitCount} more ${tag} tests` : '';
outputStr += '\n';

@@ -341,0 +375,0 @@ return outputStr;

@@ -42,6 +42,6 @@ "use strict";

return async function openEyes({ type = defaultType, settings: openSettings, config, target, logger = mainLogger, }) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
var _w, _x, _y, _z, _0;
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
var _z, _0, _1, _2, _3;
logger = logger.extend(mainLogger, { tags: [`eyes-${type}-${utils.general.shortid()}`] });
const settings = { ...config === null || config === void 0 ? void 0 : config.open, ...openSettings };
const settings = { environments: config === null || config === void 0 ? void 0 : config.check.environments, ...config === null || config === void 0 ? void 0 : config.open, ...openSettings };
const eyesServerSettings = (0, populate_eyes_server_settings_1.populateEyesServerSettings)(settings);

@@ -52,7 +52,7 @@ logger.mask(eyesServerSettings.apiKey);

settings.batch = { ...batch, ...settings.batch };
(_b = (_w = settings.batch).id) !== null && _b !== void 0 ? _b : (_w.id = (_c = utils.general.getEnvValue('BATCH_ID')) !== null && _c !== void 0 ? _c : `generated-${utils.general.guid()}`);
(_d = (_x = settings.batch).buildId) !== null && _d !== void 0 ? _d : (_x.buildId = utils.general.getEnvValue('BATCH_BUILD_ID'));
(_e = (_y = settings.batch).name) !== null && _e !== void 0 ? _e : (_y.name = utils.general.getEnvValue('BATCH_NAME'));
(_f = (_z = settings.batch).sequenceName) !== null && _f !== void 0 ? _f : (_z.sequenceName = utils.general.getEnvValue('BATCH_SEQUENCE'));
(_g = (_0 = settings.batch).notifyOnCompletion) !== null && _g !== void 0 ? _g : (_0.notifyOnCompletion = utils.general.getEnvValue('BATCH_NOTIFY', 'boolean'));
(_b = (_z = settings.batch).id) !== null && _b !== void 0 ? _b : (_z.id = (_c = utils.general.getEnvValue('BATCH_ID')) !== null && _c !== void 0 ? _c : `generated-${utils.general.guid()}`);
(_d = (_0 = settings.batch).buildId) !== null && _d !== void 0 ? _d : (_0.buildId = utils.general.getEnvValue('BATCH_BUILD_ID'));
(_e = (_1 = settings.batch).name) !== null && _e !== void 0 ? _e : (_1.name = utils.general.getEnvValue('BATCH_NAME'));
(_f = (_2 = settings.batch).sequenceName) !== null && _f !== void 0 ? _f : (_2.sequenceName = utils.general.getEnvValue('BATCH_SEQUENCE'));
(_g = (_3 = settings.batch).notifyOnCompletion) !== null && _g !== void 0 ? _g : (_3.notifyOnCompletion = utils.general.getEnvValue('BATCH_NOTIFY', 'boolean'));
(_h = settings.keepBatchOpen) !== null && _h !== void 0 ? _h : (settings.keepBatchOpen = utils.general.getEnvValue('DONT_CLOSE_BATCHES', 'boolean'));

@@ -97,2 +97,11 @@ (_j = settings.branchName) !== null && _j !== void 0 ? _j : (settings.branchName = utils.general.getEnvValue('BRANCH'));

const driverUrl = await (driver === null || driver === void 0 ? void 0 : driver.getDriverUrl());
const multiDeviceTargets = [];
for (const checkEnv of (_u = settings.environments) !== null && _u !== void 0 ? _u : []) {
if (utils.types.has(checkEnv, 'iosDeviceInfo') && ((_v = driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.applitoolsLib) === null || _v === void 0 ? void 0 : _v.instrumented)) {
multiDeviceTargets.push({
deviceInfo: checkEnv.iosDeviceInfo.deviceName,
orientation: (_w = checkEnv.iosDeviceInfo.screenOrientation) !== null && _w !== void 0 ? _w : 'portrait',
});
}
}
void core.logEvent({

@@ -105,3 +114,3 @@ settings: {

userTestId: settings.userTestId,
concurrency: (_u = cores === null || cores === void 0 ? void 0 : cores[type].concurrency) !== null && _u !== void 0 ? _u : core.concurrency,
concurrency: (_x = cores === null || cores === void 0 ? void 0 : cores[type].concurrency) !== null && _x !== void 0 ? _x : core.concurrency,
environment,

@@ -114,6 +123,7 @@ driver: {

platformVersion: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.platformVersion,
isApplitoolsLib: (_v = driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.applitoolsLib) === null || _v === void 0 ? void 0 : _v.instrumented,
isApplitoolsLib: (_y = driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.applitoolsLib) === null || _y === void 0 ? void 0 : _y.instrumented,
isEC: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.isEC,
},
driverUrl,
multiDeviceTargets,
},

@@ -120,0 +130,0 @@ },

@@ -35,2 +35,3 @@ "use strict";

const extract_default_environment_1 = require("./utils/extract-default-environment");
const verify_environment_info_1 = require("./utils/verify-environment-info");
const abort_controller_1 = require("abort-controller");

@@ -40,3 +41,3 @@ const utils = __importStar(require("@applitools/utils"));

return async function openEyes({ target, settings, storage = new Map(), logger = mainLogger, }) {
var _a, _b, _c;
var _a, _b, _c, _d;
logger = logger.extend(mainLogger);

@@ -59,2 +60,11 @@ logger.log(`Command "openEyes" is called with ${target ? 'default driver' : ''}`, ...(settings ? ['and settings', settings] : []), storage.size > 0 ? 'and default eyes storage' : '');

const account = await core.getAccountInfo({ settings, logger });
const ufgClient = await core.getUFGClient({
settings: {
...account.ufgServer,
eyesServerUrl: account.eyesServer.eyesServerUrl,
apiKey: account.eyesServer.apiKey,
},
logger,
});
await (0, verify_environment_info_1.verifyEnvironmentsInfo)({ environments: (_d = settings.environments) !== null && _d !== void 0 ? _d : [], ufgClient });
return utils.general.extend({}, eyes => {

@@ -61,0 +71,0 @@ var _a, _b, _c, _d;

@@ -9,5 +9,6 @@ "use strict";

const abort_error_1 = require("../errors/abort-error");
const filterStaleElements_1 = require("./utils/filterStaleElements");
function makeTakeSnapshots({ core, spec, signal, logger: mainLogger }) {
return async function takeSnapshots({ driver, settings = {}, account, logger = mainLogger, }) {
var _a;
var _a, _b;
logger = logger.extend(mainLogger);

@@ -42,3 +43,3 @@ logger.log('Command "takeSnapshots" is called with settings', settings);

});
snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({
const takeSnapshotsSettings = {
driver,

@@ -59,3 +60,21 @@ settings: {

logger,
});
};
try {
snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)(takeSnapshotsSettings);
}
catch (err) {
if ((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes('stale element')) {
snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({
...takeSnapshotsSettings,
settings: await (0, filterStaleElements_1.removeStaleElementsFromDomSnapshotsSettings)({
settings: takeSnapshotsSettings.settings,
context: currentContext,
targetElement: elementReferences.target,
}),
});
}
else {
throw err;
}
}
}

@@ -62,0 +81,0 @@ else {

{
"name": "@applitools/core",
"version": "4.31.4",
"version": "4.32.0",
"homepage": "https://applitools.com",

@@ -5,0 +5,0 @@ "bugs": {

@@ -174,2 +174,3 @@ import type { MaybeArray, Size, Region, ControlledPromise } from '@applitools/utils';

disableBrokerUrlCache?: boolean;
environments?: Environment[];
};

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc