suitest-js-api
Version:
Suitest is a test automation and device manipulation tool for living room devices and web browsers.
27 lines (18 loc) • 668 B
JavaScript
const {mergeAll} = require('ramda');
const {wrapThrow} = require('./sentry/Raven');
const makeChain = (instance, getComposers, data) => {
const makeNewChain = wrapThrow(updatedData => {
const composers = getComposers(updatedData);
const chain = {};
// refresh stack every time a new method is called on the chain.
updatedData.stack = Error().stack;
Object.defineProperties(chain, mergeAll(
composers.map(composer => composer(instance, updatedData, chain, makeNewChain)))
);
return chain;
});
const chain = makeNewChain(data);
instance.unusedExpressionWatchers.registerLeaf(chain, data.stack);
return chain;
};
module.exports = makeChain;