How to use stripStream method in Cypress

Best JavaScript code snippet using cypress

movieClip.js

Source: movieClip.js Github

copy

Full Screen

1/​* eslint-disable no-await-in-loop */​2const sharp = require('sharp');3const stream = require('stream');4const logger = require('../​../​../​logger');5const readMovieClip = (buffer, tag, tagLength) => {6 if (tag === 0x3) {7 console.warn('Deprecated tag in movie clip: 0x3');8 buffer.readBuffer(tagLength);9 return null;10 }11 if (tag === 0xe) {12 console.warn('Unsupported tag in movie clip: 0xE');13 buffer.readBuffer(tagLength);14 return null;15 }16 const exportId = buffer.readUInt16LE();17 /​/​ logger.debug(`MovieClip exportId: ${exportId}`);18 const frameRate = buffer.readUInt8();19 const frameCount = buffer.readUInt16LE();20 const frameResourcesCount = buffer.readUInt32LE();21 const frameResources = [];22 for (let i = 0; i < frameResourcesCount; i += 1) {23 /​/​ First number - index of resourcesMapping24 /​/​ Second number - index of transform matrix or default matrix if -125 /​/​ Third number - index of color transform or default if -126 frameResources.push({27 resourceIndex: buffer.readInt16LE(),28 transformMatrixIndex: buffer.readUInt16LE(),29 colorTransformIndex: buffer.readUInt16LE(),30 });31 if (exportId === 282 || exportId === 280) {32 /​/​ logger.debug(frameResources[i]);33 }34 }35 const numberOfResources = buffer.readUInt16LE();36 const resourcesMapping = [];37 for (let i = 0; i < numberOfResources; i += 1) {38 resourcesMapping.push(buffer.readInt16LE());39 }40 const blendingFactors = [];41 for (let i = 0; i < numberOfResources; i += 1) {42 const blending = tag === 0xc || tag === 0x23 ? buffer.readUInt8() : 0;43 /​/​ Blending equation is always s+d with the following factors44 /​/​ https:/​/​www.cairographics.org/​operators/​45 /​/​ https:/​/​en.wikipedia.org/​wiki/​Blend_modes46 const flag = (blending >> 6) & 1; /​/​ maybe inverted? (over -> dest_over). could also be invert colors47 switch (blending & 0x3f) {48 case 3:49 /​/​ A combination of mix and multiply. if alphaA = 0, take B. if alphaA=1, take AB.50 blendingFactors.push({ s: 'GL_DST_COLOR', d: 'GL_ONE_MINUS_SRC_ALPHA' });51 break;52 case 4:53 /​/​ CAIRO_OPERATOR_SCREEN. Screen54 blendingFactors.push({ s: 'GL_ONE', d: 'GL_ONE_MINUS_SRC_COLOR' });55 break;56 case 8:57 /​/​ CAIRO_OPERATOR_ADD. Linear dodge58 blendingFactors.push({ s: 'GL_ONE', d: 'GL_ONE' });59 break;60 /​/​ Not sure about 0xc and 0xf61 case 0xc:62 case 0xf: /​/​ only god knows. Not even used afaik63 blendingFactors.push({ s: 'GL_SRC_ALPHA', d: 'GL_ONE_MINUS_SRC_ALPHA' });64 break;65 default:66 /​/​ CAIRO_OPERATOR_OVER, A mix.67 /​/​ if alphaA = 0, take B.if alphaA = 1, take A.68 /​/​ Everything in between is a mix of A and B69 blendingFactors.push({ s: 'GL_ONE', d: 'GL_ONE_MINUS_SRC_ALPHA' });70 }71 }72 const resourcesStrings = [];73 for (let i = 0; i < numberOfResources; i += 1) {74 /​/​ this is always empty on shapes.75 /​/​ usually contains something with text fields and movies, but not always76 /​/​ maybe default string?77 const string = buffer.scReadString();78 resourcesStrings.push(string);79 /​/​ logger.debug(`id: ${resourcesMapping[i]} x string: ${string}`);80 }81 let frameTag;82 let currentFrameResourceIndex = 0;83 const movieClip = {84 exportId,85 type: 'movieClip',86 frameRate,87 resourcesMapping,88 frameCount,89 blendingFactors,90 resourcesStrings,91 };92 movieClip.frames = [];93 while (frameTag !== 0) {94 frameTag = buffer.readUInt8();95 const frameTagLength = buffer.readUInt32LE();96 if (frameTagLength === 0) {97 break;98 }99 switch (frameTag) {100 case 0x05:101 console.warn('Deprecated tag in movie clip frame: 0x5');102 break;103 case 0x0b: {104 const numberOfResourcesInCurrentFrame = buffer.readUInt16LE();105 const frameName = buffer.scReadString();106 if (frameName !== null) {107 /​/​ logger.debug(`frameName: ${frameName}`);108 }109 const currentFrameResources = [];110 for (let i = 0; i < numberOfResourcesInCurrentFrame; i += 1) {111 currentFrameResources.push(frameResources[currentFrameResourceIndex + i]);112 }113 movieClip.frames.push({114 frameName,115 frameResources: currentFrameResources,116 });117 currentFrameResourceIndex += numberOfResourcesInCurrentFrame;118 break;119 }120 case 0x1f: {121 movieClip.nineSliceRegion = {122 left: buffer.scReadTwip(),123 top: buffer.scReadTwip(),124 right: buffer.scReadTwip(),125 bottom: buffer.scReadTwip(),126 };127 break;128 }129 case 0x29: { /​/​ only happens in effects_brawler i think130 movieClip.something = buffer.readUInt8();131 /​/​ console.log(`frame type 0x29: ${movieClip.something}`);132 break;133 }134 default:135 }136 }137 /​/​ console.log({ ...movieClip, frames: movieClip.frames.map((f) => f.frameName) });138 return movieClip;139};140const getTransformMatrix = (transformMatrices, index) => (141 index !== 0xffff ? transformMatrices[index] : null142);143const getColorTransformation = (colorTransforms, index) => (144 index !== 0xffff ? colorTransforms[index] : null145);146const applyTransforms = async (sharpObject, transformation, colorTransformation) => {147 const colorTransformedSharp = sharp(sharpObject.data, {148 raw: {149 channels: sharpObject.info.channels,150 width: sharpObject.info.width,151 height: sharpObject.info.height,152 },153 });154 /​/​ if (colorTransformation !== null) {155 /​/​ const pixels = await resource.sharp.toBuffer({ resolveWithObject: true });156 /​/​ const newPixels = imageUtils.applyColorTransformation(157 /​/​ pixels.data,158 /​/​ colorTransformation,159 /​/​ );160 /​/​ colorTransformedSharp = sharp(Buffer.from(newPixels), {161 /​/​ raw: {162 /​/​ channels: pixels.info.channels,163 /​/​ width: pixels.info.width,164 /​/​ height: pixels.info.height,165 /​/​ },166 /​/​ });167 /​/​ }168 let transformedSharp = colorTransformedSharp;169 if (transformation) {170 transformedSharp = transformedSharp171 .affine(transformation.matrix, {172 background: {173 r: 0, g: 0, b: 0, alpha: 0,174 },175 });176 }177 return transformedSharp.raw()178 .toBuffer({ resolveWithObject: true });179};180const pushIntoStripStream = (stripStream, frames, maxWidth, pageHeight) => {181 frames.forEach((frame) => {182 const stripBuffer = new Array(maxWidth * pageHeight * 4).fill(0);183 const left = Math.floor((maxWidth - frame.info.width) /​ 2);184 const top = Math.floor((pageHeight - frame.info.height) /​ 2);185 for (let i = 0; i < frame.info.height; i += 1) {186 for (let j = 0; j < frame.info.width; j += 1) {187 const x = left + j;188 const y = top + i;189 stripBuffer[(y * maxWidth + x) * 4] = frame.data[(i * frame.info.width + j) * 4];190 stripBuffer[(y * maxWidth + x) * 4 + 1] = frame.data[(i * frame.info.width + j) * 4 + 1];191 stripBuffer[(y * maxWidth + x) * 4 + 2] = frame.data[(i * frame.info.width + j) * 4 + 2];192 stripBuffer[(y * maxWidth + x) * 4 + 3] = frame.data[(i * frame.info.width + j) * 4 + 3];193 }194 }195 stripStream.push(Buffer.from(stripBuffer));196 });197 stripStream.push(null);198};199const compositeFrame = async (images) => {200 const left = Math.min(0, ...images.map(({ t }) => (t ? t.odx : 0)));201 const top = Math.min(0, ...images.map(({ t }) => (t ? t.ody : 0)));202 const right = Math.max(0, ...images.map(({ part, t }) => part.info.width + (t ? t.odx : 0)));203 const bottom = Math.max(0, ...images.map(({ part, t }) => part.info.height + (t ? t.ody : 0)));204 if (images.length === 1) {205 const { t } = images[0];206 return sharp(images[0].part.data, {207 raw: {208 channels: 4,209 width: images[0].part.info.width,210 height: images[0].part.info.height,211 },212 })213 .extend({214 top: t && t.ody > 0 ? Math.ceil(t.ody) : 0,215 bottom: t && t.ody < 0 ? Math.ceil(-t.ody) : 0,216 left: t && t.odx > 0 ? Math.ceil(t.odx) : 0,217 right: t && t.odx < 0 ? Math.ceil(-t.odx) : 0,218 background: {219 r: 0, g: 0, b: 0, alpha: 0,220 },221 })222 .toBuffer({ resolveWithObject: true });223 }224 /​/​ const width = Math.round(right - left);225 /​/​ const height = Math.round(bottom - top);226 /​/​ const pixels = new Uint8Array(width * height * 4);227 /​/​ images.forEach(({ part, t }) => {228 /​/​ const partLeft = Math.round((t ? t.odx : 0) - left);229 /​/​ const partTop = Math.round((t ? t.ody : 0) - top);230 /​/​ for (let i = 0; i < part.data.length; i += 4) {231 /​/​ const x = Math.floor(i /​ 4) % part.info.width;232 /​/​ const y = Math.floor(Math.floor(i /​ 4) /​ part.info.width);233 /​/​ const pixel = 4 * (width * (partTop + y) + (partLeft + x));234 /​/​ const a = pixels;235 /​/​ const b = part.data;236 /​/​ const newAlpha = a[pixel + 3] /​ 255 + b[i + 3] /​ 255 * (1 - a[pixel + 3] /​ 255);237 /​/​ pixels[pixel] = (a[pixel] /​ 255 + b[i] /​ 255 * (1 - a[pixel + 3] /​ 255)) /​ newAlpha * 255;238 /​/​ pixels[pixel + 1] = (a[pixel + 1] /​ 255 + b[i + 1] /​ 255 * (1 - a[pixel + 3] /​ 255)) /​ newAlpha * 255;239 /​/​ pixels[pixel + 2] = (a[pixel + 2] /​ 255 + b[i + 2] /​ 255 * (1 - a[pixel + 3] /​ 255)) /​ newAlpha * 255;240 /​/​ pixels[pixel + 3] = newAlpha * 255;241 /​/​ /​/​ if (242 /​/​ /​/​ pixels[currentPixelIndex] === 0 && pixels[currentPixelIndex + 1] === 0243 /​/​ /​/​ && pixels[currentPixelIndex + 2] === 0 && pixels[currentPixelIndex + 3] === 0) {244 /​/​ /​/​ for (let j = 0; j < 4; j += 1) {245 /​/​ /​/​ pixels[4 * (width * (partTop + y) + (partLeft + x)) + j] = a[i + j];246 /​/​ /​/​ }247 /​/​ /​/​ }248 /​/​ }249 /​/​ });250 /​/​ return {251 /​/​ data: pixels,252 /​/​ info: {253 /​/​ channels: 4,254 /​/​ width,255 /​/​ height,256 /​/​ },257 /​/​ };258 const finalFrame = sharp({259 create: {260 channels: 4,261 width: Math.round(right - left),262 height: Math.round(bottom - top),263 background: {264 r: 0, g: 0, b: 0, alpha: 0,265 },266 },267 }).composite(images.map(({ part, t }) => ({268 input: part.data,269 raw: {270 channels: 4,271 width: part.info.width,272 height: part.info.height,273 },274 blend: 'over',275 left: Math.round((t ? t.odx : 0) - left),276 top: Math.round((t ? t.ody : 0) - top),277 })));278 /​/​ const blends = ['overlay'];279 /​/​ const blends = ['clear', 'source', 'over', 'in',280 /​/​ 'out', 'atop', 'dest', 'dest-over', 'dest-in',281 /​/​ 'dest-out', 'dest-atop', 'xor', 'add', 'saturate',282 /​/​ 'multiply', 'screen', 'overlay', 'darken', 'lighten',283 /​/​ 'colour-dodge', 'color-dodge', 'colour-burn', 'color-burn',284 /​/​ 'hard-light', 'soft-light', 'difference', 'exclusion'];285 /​/​ for (let j = 0; j < blends.length; j += 1) {286 /​/​ await sharp({287 /​/​ create: {288 /​/​ channels: 4,289 /​/​ width: Math.round(right - left),290 /​/​ height: Math.round(bottom - top),291 /​/​ background: {292 /​/​ r: 0, g: 0, b: 0, alpha: 0,293 /​/​ },294 /​/​ },295 /​/​ }).composite(parts.map((c, i) => ({296 /​/​ input: c.data,297 /​/​ raw: {298 /​/​ channels: 4,299 /​/​ width: c.info.width,300 /​/​ height: c.info.height,301 /​/​ },302 /​/​ left: Math.round(transformations[i].odx - left),303 /​/​ top: Math.round(transformations[i].ody - top),304 /​/​ blend: blends[j],305 /​/​ }))).png().toFile(`out/​sc/​wtfffffff-${blends[j]}.png`);306 /​/​ }307 return finalFrame.toBuffer({ resolveWithObject: true });308};309const createMovieClip = async (310 exportId,311 resources,312 transformMatrices,313 colorTransforms,314) => {315 const cache = [];316 const movieClip = resources[exportId];317 movieClip.actualFrameCount = Math.min(200, Math.max(318 movieClip.frameCount,319 ...movieClip.resourcesMapping.map((rm) => resources[rm].actualFrameCount || 1),320 ));321 movieClip.finalFrames = [];322 for (let i = 0; i < movieClip.actualFrameCount; i += 1) {323 const currentFrame = movieClip.frames[i % movieClip.frames.length];324 const promises = [];325 const numberOfResources = Math.min(5, currentFrame.frameResources.length);326 for (let j = 0; j < numberOfResources; j += 1) {327 const frameResources = currentFrame.frameResources[j];328 const resourceExportId = movieClip.resourcesMapping[frameResources.resourceIndex];329 const resource = resources[resourceExportId];330 const transform = getTransformMatrix(transformMatrices, frameResources.transformMatrixIndex);331 const colorTransform = getColorTransformation(332 colorTransforms,333 frameResources.colorTransformIndex,334 );335 const cacheKey = resourceExportId.toString()336 + (resource.type === 'movieClip' ? i % resource.finalFrames.length : '')337 + transform?.matrix?.toString();338 let appliedTransform = cache[cacheKey];339 if (!appliedTransform) {340 if (resource.type === 'shape') {341 appliedTransform = applyTransforms(resource.sharp, transform, colorTransform);342 } else if (resource.type === 'textField') {343 /​/​ appliedTransform = applyTransforms(resource.sharp, transform, colorTransform);344 } else if (resource.type === 'movieClip') {345 /​/​ todo remove once text fields are used346 if (resource.finalFrames.length > 0) {347 appliedTransform = applyTransforms(348 resource.finalFrames[i % resource.finalFrames.length],349 transform,350 colorTransform,351 );352 }353 }354 cache[cacheKey] = appliedTransform;355 }356 promises.push(appliedTransform);357 }358 const currentFrameComposite = await Promise.all(promises);359 if (exportId === 61) {360 currentFrameComposite.forEach(async (frame, j) => {361 if (frame) {362 sharp(frame.data, {363 raw: {364 channels: 4,365 width: frame.info.width,366 height: frame.info.height,367 },368 }).png().toFile(`out/​sc/​part-${exportId}-${i}-${j}.png`);369 }370 });371 }372 /​/​ movieClip.finalFrames[i] = currentFrameComposite[0];373 const imagesToComposite = currentFrameComposite.map((e, j) => ({374 part: e,375 t: getTransformMatrix(376 transformMatrices,377 currentFrame.frameResources[j].transformMatrixIndex,378 ),379 })).filter((e) => e.part); /​/​ todo remove filter once text fields are implemented380 /​/​ todo remove filter once text fields are implemented381 if (imagesToComposite.length > 0) {382 movieClip.finalFrames.push(await compositeFrame(imagesToComposite));383 }384 }385};386const saveAsWebp = (movieClip, exportName, fileName) => {387 const maxWidth = Math.max(...movieClip.finalFrames.map((f) => f.info.width));388 const pageHeight = Math.max(...movieClip.finalFrames.map((f) => f.info.height));389 const stripStream = new stream.Readable();390 const sharpStream = sharp({391 raw: {392 channels: 4,393 width: maxWidth,394 height: pageHeight * movieClip.actualFrameCount,395 },396 limitInputPixels: false,397 })398 .webp({ pageHeight, loop: 1, lossless: true })399 .on('data', (c) => {400 console.log('got image page');401 });402 stripStream.pipe(sharpStream);403 pushIntoStripStream(stripStream, movieClip.finalFrames, maxWidth, pageHeight);404 const exportNameString = exportName ? `${exportName.join('&')}-` : 'noexport-';405 return sharpStream406 .clone()407 .toFile(`out/​${fileName}-movieclip-${exportNameString}${movieClip.exportId}-${movieClip.actualFrameCount}.webp`);408};409const createMovieClips = async (filename, transformMatrices, colorTransforms, resources, exports) => {410 logger.info('Extracting movie clips');411 const t = Date.now();412 /​/​ const resource = resources[4];413 /​/​ resources = {414 /​/​ 0: resources[0],415 /​/​ 1: resources[1],416 /​/​ 2: resources[2],417 /​/​ 4: resources[4],418 /​/​ 5: resources[5],419 /​/​ 6: resources[6],420 /​/​ 8: resources[8],421 /​/​ };422 /​/​ resources = {423 /​/​ 0: resources[0],424 /​/​ 2: resources[2],425 /​/​ 4: resources[4],426 /​/​ 9: resources[9],427 /​/​ 10: resources[10],428 /​/​ 12: resources[12],429 /​/​ };430 /​/​ resources = {431 /​/​ 2: resources[2],432 /​/​ 9: resources[9],433 /​/​ 10: resources[10],434 /​/​ };435 /​/​ resources = {436 /​/​ 0: resources[0],437 /​/​ 4: resources[4],438 /​/​ };439 const promises = [];440 /​/​ eslint-disable-next-line no-restricted-syntax441 for (const resource of Object.values(resources)) {442 if (resource.type === 'movieClip') {443 await createMovieClip(444 resource.exportId,445 resources,446 transformMatrices,447 colorTransforms,448 );449 /​/​ todo remove once text fields are used450 if (resource.finalFrames.length > 0) {451 promises.push(saveAsWebp(resource, exports[resource.exportId], filename));452 }453 }454 }455 console.log(`Movie clip frames generation time: ${Date.now() - t}ms`);456 const t2 = Date.now();457 await Promise.allSettled(promises);458 console.log(`Movie clip to webp time: ${Date.now() - t2}ms`);459 logger.info('Finished extracting movie clips');460};461module.exports = {462 readMovieClip,463 createMovieClips,...

Full Screen

Full Screen

module.js

Source: module.js Github

copy

Full Screen

1const createReadStream = require('fs').createReadStream;2const lengthsData = require('../​fixtures/​lengths-data.json');3const locationsData = require('../​fixtures/​locations-data.json');4const metadataDetectorStreams = require('../​../​src/​module');5describe('metadata-detector-streams', function () {6 for (const [filename, locations] of locationsData) {7 describe('createLocateStream()', function () {8 const sanitizedFilename = filename.slice(-4) === '.txt' ? filename.slice(0, -4) : filename;9 it('should locate the metadata tags of the file', function (done) {10 const lctns = [];11 const locateStream = metadataDetectorStreams.createLocateStream();12 const readable = createReadStream('test/​fixtures/​' + sanitizedFilename, {13 highWaterMark: 12814 });15 readable16 .pipe(locateStream)17 .on('error', function (err) {18 done(err);19 })20 .on('finish', function () {21 expect(lctns).to.deep.equal(locations);22 done();23 })24 .on('location', function (location) {25 lctns.push(location);26 });27 });28 });29 }30 for (const [filename, byteLength] of lengthsData) {31 describe('createStripStream()', function () {32 const sanitizedFilename = filename.slice(-4) === '.txt' ? filename.slice(0, -4) : filename;33 it('should strip the metadata tags from the file', function (done) {34 let btLngth = 0;35 const readable = createReadStream('test/​fixtures/​' + sanitizedFilename, {36 highWaterMark: 12837 });38 const stripStream = metadataDetectorStreams.createStripStream();39 readable40 .pipe(stripStream)41 .on('data', function (data) {42 btLngth += data.length;43 })44 .on('error', function (err) {45 done(err);46 })47 .on('finish', function () {48 expect(btLngth).to.equal(byteLength);49 done();50 });51 });52 });53 }54 describe('locate()', function () {55 it('should be undefined', function () {56 expect(metadataDetectorStreams.locate).to.be.undefined;57 });58 });59 describe('strip()', function () {60 it('should be undefined', function () {61 expect(metadataDetectorStreams.strip).to.be.undefined;62 });63 });...

Full Screen

Full Screen

ast-rewriter.js

Source: ast-rewriter.js Github

copy

Full Screen

1"use strict";2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }4 return new (P || (P = Promise))(function (resolve, reject) {5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }8 step((generator = generator.apply(thisArg, _arguments || [])).next());9 });10};11var __importDefault = (this && this.__importDefault) || function (mod) {12 return (mod && mod.__esModule) ? mod : { "default": mod };13};14Object.defineProperty(exports, "__esModule", { value: true });15exports.stripStream = exports.strip = void 0;16const rewriter_1 = require("../​../​../​../​rewriter");17const duplexify_1 = __importDefault(require("duplexify"));18const network_1 = require("../​../​../​../​network");19const stream_1 = __importDefault(require("stream"));20const pumpify = require('pumpify');21const utf8Stream = require('utf8-stream');22const strip = (source, opts) => __awaiter(void 0, void 0, void 0, function* () {23 if (opts.isHtml) {24 return (0, rewriter_1.rewriteHtmlJsAsync)(opts.url, source, opts.deferSourceMapRewrite); /​/​ threaded25 }26 return (0, rewriter_1.rewriteJsAsync)(opts.url, source, opts.deferSourceMapRewrite); /​/​ threaded27});28exports.strip = strip;29const stripStream = (opts) => {30 if (opts.isHtml) {31 return pumpify(utf8Stream(), (0, rewriter_1.HtmlJsRewriter)(opts.url, opts.deferSourceMapRewrite));32 }33 const pt = new (stream_1.default.PassThrough)();34 return (0, duplexify_1.default)(pumpify(utf8Stream(), (0, network_1.concatStream)((body) => __awaiter(void 0, void 0, void 0, function* () {35 pt.write(yield (0, exports.strip)(body.toString(), opts));36 pt.end();37 }))), pt);38};...

Full Screen

Full Screen

regex-rewriter.js

Source: regex-rewriter.js Github

copy

Full Screen

...17 .replace(jiraTopWindowGetterRe, '$1 || $2.parent.__Cypress__$3')18 .replace(jiraTopWindowGetterUnMinifiedRe, '$1 || $2.parent.__Cypress__$3');19}20exports.strip = strip;21function stripStream() {22 return pumpify(utf8Stream(), replaceStream([23 topOrParentEqualityBeforeRe,24 topOrParentEqualityAfterRe,25 topOrParentLocationOrFramesRe,26 jiraTopWindowGetterRe,27 jiraTopWindowGetterUnMinifiedRe,28 ], [29 '$1self',30 'self$2',31 '$1self$3$4',32 '$1 || $2.parent.__Cypress__$3',33 '$1 || $2.parent.__Cypress__$3',34 ]));35}...

Full Screen

Full Screen

rewriter.js

Source: rewriter.js Github

copy

Full Screen

1(function() {2 var bodyRe, headRe, htmlRe, inject, rewriteHtml, security;3 inject = require("./​inject");4 security = require("./​security");5 headRe = /​(<head.*?>)/​i;6 bodyRe = /​(<body.*?>)/​i;7 htmlRe = /​(<html.*?>)/​i;8 rewriteHtml = function(html, domainName, wantsInjection, modifyObstructiveCode) {9 var htmlToInject, replace;10 replace = function(re, str) {11 return html.replace(re, str);12 };13 htmlToInject = (function(_this) {14 return function() {15 switch (wantsInjection) {16 case "full":17 return inject.full(domainName);18 case "partial":19 return inject.partial(domainName);20 }21 };22 })(this)();23 if (modifyObstructiveCode) {24 html = security.strip(html);25 }26 switch (false) {27 case !headRe.test(html):28 return replace(headRe, "$1 " + htmlToInject);29 case !bodyRe.test(html):30 return replace(bodyRe, "<head> " + htmlToInject + " </​head> $1");31 case !htmlRe.test(html):32 return replace(htmlRe, "$1 <head> " + htmlToInject + " </​head>");33 default:34 return ("<head> " + htmlToInject + " </​head>") + html;35 }36 };37 module.exports = {38 html: rewriteHtml,39 security: security.stripStream40 };...

Full Screen

Full Screen

security.js

Source: security.js Github

copy

Full Screen

1(function() {2 var pumpify, replacestream, stream, strip, stripStream, topOrParentEqualityAfterRe, topOrParentEqualityBeforeRe, topOrParentLocationOrFramesRe;3 stream = require("stream");4 pumpify = require("pumpify");5 replacestream = require("replacestream");6 topOrParentEqualityBeforeRe = /​((?:window|self)(?:\.|\[['"](?:top|self)['"]\])?\s*[!=][=]\s*(?:(?:window|self)(?:\.|\[['"]))?)(top|parent)/​g;7 topOrParentEqualityAfterRe = /​(top|parent)((?:["']\])?\s*[!=][=]=?\s*(?:window|self))/​g;8 topOrParentLocationOrFramesRe = /​([^\da-zA-Z])(top|parent)([.])(location|frames)/​g;9 strip = function(html) {10 return html.replace(topOrParentEqualityBeforeRe, "$1self").replace(topOrParentEqualityAfterRe, "self$2").replace(topOrParentLocationOrFramesRe, "$1self$3$4");11 };12 stripStream = function() {13 return pumpify(replacestream(topOrParentEqualityBeforeRe, "$1self"), replacestream(topOrParentEqualityAfterRe, "self$2"), replacestream(topOrParentLocationOrFramesRe, "$1self$3$4"));14 };15 module.exports = {16 strip: strip,17 stripStream: stripStream18 };...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1cy.get('body').then(($body) => {2 if ($body.find('div').length > 0) {3 cy.get('div').then(($div) => {4 const divText = $div.text();5 cy.wrap(divText).as('divText');6 });7 }8});9cy.get('@divText').then((divText) => {10 cy.wrap(stripStream(divText)).as('divText');11});12cy.get('@divText').then((divText) => {13 cy.wrap(stripStream(divText)).as('divText');14});15cy.get('@divText').then((divText) => {16 cy.wrap(stripStream(divText)).as('divText');17});18cy.get('@divText').then((divText) => {19 cy.wrap(stripStream(divText)).as('divText');20});21cy.get('@divText').then((divText) => {22 cy.wrap(stripStream(divText)).as('divText');23});24cy.get('@divText').then((divText) => {25 cy.wrap(stripStream(divText)).as('divText');26});27cy.get('@divText').then((divText) => {28 cy.wrap(stripStream(divText)).as('divText');29});30cy.get('@divText').then((divText) => {31 cy.wrap(stripStream(divText)).as('divText');32});33cy.get('@divText').then((divText) => {34 cy.wrap(stripStream(divText)).as('divText');35});36cy.get('@divText').then((divText) => {37 cy.wrap(stripStream(divText)).as('divText');38});39cy.get('@divText').then((divText) => {40 cy.wrap(stripStream(divText)).as('divText');41});42cy.get('@divText').then((divText) => {43 cy.wrap(stripStream(divText

Full Screen

Using AI Code Generation

copy

Full Screen

1const { stripStream } = require('cypress/​lib/​server/​util/​strip_stream')2const { spawn } = require('child_process')3const path = require('path')4const fs = require('fs')5const os = require('os')6const cypressPath = path.join(__dirname, 'node_modules', '.bin', 'cypress')7const cypress = spawn(cypressPath, cypressOptions, {8})9stripStream(cypress.stdout, process.stdout)10stripStream(cypress.stderr, process.stderr)11cypress.on('exit', (code) => {12 console.log(`Cypress exited with code ${code}`)13})14describe('My First Test', () => {15 it('Does not do much!', () => {16 expect(true).to.equal(true)17 })18})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('Test', () => {2 it('should visit the page', () => {3 cy.get('body').then($body => {4 const body = $body[0];5 const stripStream = Cypress.Blob.stripStream;6 const blob = Cypress.Blob.base64StringToBlob(body.innerHTML, 'text/​html');7 const stream = Cypress.Blob.blobToStream(blob);8 const strippedStream = stripStream(stream, {9 onTransform(tagName, node) {10 if (tagName === 'script') {11 return '';12 }13 },14 });15 const newBlob = Cypress.Blob.streamToBlob(strippedStream, 'text/​html');16 const newBase64 = Cypress.Blob.blobToBase64String(newBlob);17 cy.get('body').invoke('html', newBase64);18 });19 });20});21Error: cy.then() timed out waiting 4000ms for

Full Screen

Using AI Code Generation

copy

Full Screen

1const stripStream = require('cypress/​lib/​server/​strip-stream')2const stripStream = require('cypress/​lib/​server/​strip-stream')3const stream = require('stream')4const strip = new stream.Transform()5strip._transform = stripStream()6strip.write('Hello World')7strip.end()8strip.on('data', (d) => {9 console.log('output', d.toString())10})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('Strip Stream', function() {2 it('Strip Stream', function() {3 cy.get('input[type="text"]').type('Hello World')4 cy.get('input[type="text"]').invoke('val').then((text) => {5 cy.log(text)6 })7 })8})9describe('Strip Stream', function() {10 it('Strip Stream', function() {11 cy.get('input[type="text"]').type('Hello World')12 cy.get('input[type="text"]').invoke('val').then((text) => {13 cy.log(text)14 })15 })16})17describe('Strip Stream', function() {18 it('Strip Stream', function() {19 cy.get('input[type="text"]').type('Hello World')20 cy.get('input[type="text"]').invoke('val').then((text) => {21 cy.log(text)22 })23 })24})25describe('Strip Stream', function() {26 it('Strip Stream', function() {27 cy.get('input[type

Full Screen

Using AI Code Generation

copy

Full Screen

1Cypress.Commands.add('stripStream', function () {2 return cy.window().then(win => {3 return $(<selector>)4 })5})6Cypress.Commands.add('stripStream', function () {7 return cy.window().then(win => {8 return $(<selector>)9 })10})11Cypress.Commands.add('stripStream', function () {12 return cy.window().then(win => {

Full Screen

StackOverFlow community discussions

Questions
Discussion

Connection to SQL DB with Cypress

How to target a checkbox that has no id, name and class attribute?

Calling a class from another file in Cypress

Test loading of image in Cypress

How to verify Image is visible/exists on front end using &lt;img src&gt; or &lt;a href&gt; tag

How can I make part of my test reusable so that it can be used or called again in other future tests using Cypress Javascript

How to Wait until page is fully loaded

Cypress - how to find by text content?

How to manually upload a file with cypress?

How to select text using cypress [cypress]

To anyone looking for how to solve this like I was:

For some reason Cypress(I am using 3.8.2 and I am not sure what version cypress-sql-server author was using) doesn't see the custom property of 'db'.

One method(you can do this many ways) is to just require the cypress config in the plugins file and reference your custom property from there.

To do this just change the plugins/index.js to look like this:

const sqlServer = require('cypress-sql-server');
const dbConfig = require('../../cypress.json');

module.exports = (on, config) => {
  tasks = sqlServer.loadDBPlugin(dbConfig.db);
  on('task', tasks);
}
https://stackoverflow.com/questions/57431534/connection-to-sql-db-with-cypress

Blogs

Check out the latest blogs from LambdaTest on this topic:

How To Generate Mocha Reports With Mochawesome?

“Testing leads to failure, and failure leads to understanding.”

Feb’22 Updates: New Features In Automation Testing, Latest Devices, New Integrations &#038; Much More!

Hola, testers! We are up with another round of exciting product updates to help scale your cross browser testing coverage. As spring cleaning looms, we’re presenting you product updates to put some spring in your testing workflow. Our development team has been working relentlessly to make our test execution platform more scalable and reliable than ever to accomplish all your testing requirements.

How To Handle Captcha In Selenium

With the rapidly evolving technology due to its ever-increasing demand in today’s world, Digital Security has become a major concern for the Software Industry. There are various ways through which Digital Security can be achieved, Captcha being one of them.Captcha is easy for humans to solve but hard for “bots” and other malicious software to figure out. However, Captcha has always been tricky for the testers to automate, as many of them don’t know how to handle captcha in Selenium or using any other test automation framework.

How to Write Test Scripts in Selenium

When it comes to automation testing, the first thing that strikes most of our minds is Selenium. Selenium is one of the best automation frameworks and is being widely used by automation testers for writing the tests and designing the automation framework. It is compatible with multiple programming languages like Java, Python, JavaScript, PHP, Ruby, and C#. It also supports running the tests across various browsers like Chrome, Firefox, Microsoft Edge, Internet Explorer, and much more; making it an ideal choice for test automation. 

Implementing SMACSS: A Scalable And Modular Architecture For CSS

When we talk about an application’s scalability, we rarely bring CSS into the picture. Scalability typically raises concerns about the system’s design, resource management, monitoring, and, of course, query time limits. But have you ever pondered the measures we should take while developing CSS with scalability in mind? CSS becomes more tangled as a website expands in size. While best CSS frameworks like Bootstrap are useful, SMACSS, also known as Scalable and Modular Architecture for CSS, uses a unique approach, functioning as a collection of guidelines to classify your CSS rulesets to make the CSS codebase more scalable and modular.

Cypress Tutorial

Cypress is a renowned Javascript-based open-source, easy-to-use end-to-end testing framework primarily used for testing web applications. Cypress is a relatively new player in the automation testing space and has been gaining much traction lately, as evidenced by the number of Forks (2.7K) and Stars (42.1K) for the project. LambdaTest’s Cypress Tutorial covers step-by-step guides that will help you learn from the basics till you run automation tests on LambdaTest.

Chapters:

  1. What is Cypress? -
  2. Why Cypress? - Learn why Cypress might be a good choice for testing your web applications.
  3. Features of Cypress Testing - Learn about features that make Cypress a powerful and flexible tool for testing web applications.
  4. Cypress Drawbacks - Although Cypress has many strengths, it has a few limitations that you should be aware of.
  5. Cypress Architecture - Learn more about Cypress architecture and how it is designed to be run directly in the browser, i.e., it does not have any additional servers.
  6. Browsers Supported by Cypress - Cypress is built on top of the Electron browser, supporting all modern web browsers. Learn browsers that support Cypress.
  7. Selenium vs Cypress: A Detailed Comparison - Compare and explore some key differences in terms of their design and features.
  8. Cypress Learning: Best Practices - Take a deep dive into some of the best practices you should use to avoid anti-patterns in your automation tests.
  9. How To Run Cypress Tests on LambdaTest? - Set up a LambdaTest account, and now you are all set to learn how to run Cypress tests.

Certification

You can elevate your expertise with end-to-end testing using the Cypress automation framework and stay one step ahead in your career by earning a Cypress certification. Check out our Cypress 101 Certification.

YouTube

Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.

Run Cypress automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful