Best JavaScript code snippet using chromy
index.js
Source:index.js
...443 opts = Object.assign({}, opts, params)444 } else if ((typeof model) === 'object') {445 opts = Object.assign({}, opts, model)446 }447 const emulation = await createFullscreenEmulationManager(this, opts.model, false, opts.useDeviceResolution)448 let result = null449 try {450 await emulation.emulate()451 // device resolution is already emulated by emulation manager, so useDeviceResotion must be set true452 const screenshotParams = Object.assign({}, opts, {useDeviceResolution: true})453 delete screenshotParams.model454 result = await this.screenshot(screenshotParams)455 } finally {456 await emulation.reset()457 // restore emulation mode458 await this._restoreEmulationSetting()459 }460 return result461 }462 async screenshotSelector (selector, format = 'png', quality = undefined, fromSurface = true) {463 let opts = {464 format: 'png',465 fromSurface: true,466 useDeviceResolution: false,467 }468 if ((typeof format) === 'string') {469 const params = {470 format: format,471 quality: quality,472 fromSurface: fromSurface,473 }474 opts = Object.assign({}, opts, params)475 } else if ((typeof format) === 'object') {476 opts = Object.assign({}, opts, format)477 }478 return this._screenshotSelector(selector, opts)479 }480 async _screenshotSelector (selector, opts) {481 const emulation = await createFullscreenEmulationManager(this, 'scroll', true, opts.useDeviceResolution)482 let buffer = null483 try {484 await emulation.emulate()485 await this.scrollTo(0, 0)486 let rect = await this.getBoundingClientRect(selector)487 if (!rect || rect.width === 0 || rect.height === 0) {488 return null489 }490 let clip = {491 x: rect.left,492 y: rect.top,493 width: rect.width,494 height: rect.height,495 scale: 1,496 }497 let screenshotOpts = Object.assign({}, opts, {clip})498 const {data} = await this.client.Page.captureScreenshot(screenshotOpts)499 buffer = Buffer.from(data, 'base64')500 } finally {501 emulation.reset()502 }503 return buffer504 }505 async screenshotMultipleSelectors (selectors, callback, options = {}) {506 return this._screenshotMultipleSelectors(selectors, callback, options)507 }508 async _screenshotMultipleSelectors (selectors, callback, options = {}) {509 const defaults = {510 model: 'scroll',511 format: 'png',512 quality: undefined,513 fromSurface: true,514 useDeviceResolution: false,515 useQuerySelectorAll: false,516 }517 const opts = Object.assign({}, defaults, options)518 const emulation = await createFullscreenEmulationManager(this, 'scroll', true, opts.useDeviceResolution)519 await emulation.emulate()520 try {521 for (let selIdx = 0; selIdx < selectors.length; selIdx++) {522 let selector = selectors[selIdx]523 try {524 let rects = null525 if (opts.useQuerySelectorAll) {526 rects = await this.rectAll(selector)527 // remove elements that has 'display: none'528 rects = rects.filter(rect => rect.width !== 0 && rect.height !== 0)529 } else {530 const r = await this.getBoundingClientRect(selector)531 if (r && r.width !== 0 && r.height !== 0) {532 rects = [r]...
emulation.js
Source:emulation.js
1class FullscreenEmulationManager {2 constructor (chromy, model, captureSelector, useDeviceResolution) {3 this._chromy = chromy4 this._client = chromy.client5 this._model = model6 this._captureSelector = captureSelector7 this._useDeviceResolution = useDeviceResolution8 this.browserInfo = null9 }10 async init () {11 let width = 012 let height = 013 const info = await this._chromy._getScreenInfo()14 this.browserInfo = info15 if (this._model === 'box') {16 const DOM = this._client.DOM17 const {root: {nodeId: documentNodeId}} = await DOM.getDocument()18 const {nodeId: bodyNodeId} = await DOM.querySelector({19 selector: 'body',20 nodeId: documentNodeId,21 })22 const box = await DOM.getBoxModel({nodeId: bodyNodeId})23 width = box.model.width24 height = box.model.height25 } else {26 width = info.width27 height = info.height28 }29 this._deviceMetrics = {30 width,31 height,32 deviceScaleFactor: 0,33 mobile: false,34 fitWindow: false,35 }36 if (this._captureSelector && this._deviceMetrics.height > 10000) {37 this._deviceMetrics.height = 1000038 }39 if (this._chromy._chromeVersion >= 61) {40 if (this._useDeviceResolution) {41 this._deviceMetrics.deviceScaleFactor = info.devicePixelRatio42 } else {43 this._deviceMetrics.deviceScaleFactor = 144 }45 }46 }47 async emulate () {48 const m = this._deviceMetrics49 if (this._chromy._chromeVersion < 61) {50 await this._client.Emulation.setVisibleSize({width: m.width, height: m.height})51 await this._client.Emulation.forceViewport({x: 0, y: 0, scale: 1})52 } else {53 await this._client.Emulation.resetPageScaleFactor()54 }55 await this._client.Emulation.setDeviceMetricsOverride(m)56 await this._chromy.scrollTo(0, 0)57 await this._chromy.sleep(200)58 }59 async reset () {60 const info = this.browserInfo61 if (this._chromy._chromeVersion < 61) {62 await this._client.Emulation.resetViewport()63 await this._client.Emulation.clearDeviceMetricsOverride()64 await this._client.Emulation.setVisibleSize({width: info.viewportWidth, height: info.viewportHeight})65 } else {66 await this._client.Emulation.clearDeviceMetricsOverride()67 }68 }69}70async function createFullscreenEmulationManager (chromy, model, captureSelector = false, useDeviceResolution = false) {71 const manager = new FullscreenEmulationManager(chromy, model, captureSelector, useDeviceResolution)72 await manager.init()73 return manager74}...
Using AI Code Generation
1const chromy = new Chromy();2const manager = chromy.createFullscreenEmulationManager();3await manager.enter();4await chromy.screenshot({path: 'google.png'});5await manager.exit();6await chromy.close();7const chromy = new Chromy(options);8Default: `{width: 800, height: 600}`9Default: `{x: 0, y: 0}`10Default: `{}`11The options to launch Chrome. See [puppeteer.launch()](
Using AI Code Generation
1const chromy = require('chromy');2const fs = require('fs');3const path = require('path');4const chrome = require('chrome-remote-interface');5const createFullscreenEmulationManager = require('chromy/lib/fullscreen-emulation-manager');6const width = 1920;7const height = 1080;8const output = 'google.png';9chromy.chain()10 .goto(url)11 .wait(1000)12 .evaluate(() => {13 return {14 };15 })16 .result((size) => {17 console.log(size);18 chrome((client) => {19 const {Page, Emulation, Network} = client;20 Promise.all([21 Page.enable(),22 Network.enable(),23 Emulation.setDeviceMetricsOverride({24 }),25 createFullscreenEmulationManager(client)26 ]).then(() => {27 Page.captureScreenshot({28 }).then((result) => {29 fs.writeFileSync(path.join(__dirname, output), new Buffer(result.data, 'base64'));30 client.close();31 chromy.close();32 });33 });34 }).on('error', (err) => {35 console.error(err);36 });37 })38 .run();
Using AI Code Generation
1const chromy = new Chromy();2const manager = chromy.createFullscreenEmulationManager();3const chromy = new Chromy();4await chromy.emulateDeviceScreenSize('iPhone 6');5const chromy = new Chromy();6await chromy.emulateDeviceUserAgent('iPhone 6');7const chromy = new Chromy();8await chromy.emulateDeviceMetrics('iPhone 6');9const chromy = new Chromy();10await chromy.emulateDevice('iPhone 6');11const chromy = new Chromy();12await chromy.emulateDeviceOrientation('iPhone 6', 'landscape');13const chromy = new Chromy();14await chromy.emulateDeviceOrientationAndDeviceScaleFactor('iPhone 6', 'landscape', 2);15const chromy = new Chromy();16await chromy.emulateDeviceScaleFactor('iPhone 6', 2);17const chromy = new Chromy();18await chromy.emulateDeviceViewport('iPhone 6', {width: 500, height: 500});
Using AI Code Generation
1const chromy = require('chromy')2chromy.createFullscreenEmulationManager().then((manager) => {3 manager.on('enterFullscreen', (data) => {4 console.log('enterFullscreen')5 console.log(data)6 })7 manager.on('leaveFullscreen', (data) => {8 console.log('leaveFullscreen')9 console.log(data)10 })11 manager.on('enterFullscreenForElement', (data) => {12 console.log('enterFullscreenForElement')13 console.log(data)14 })15 manager.on('leaveFullscreenForElement', (data) => {16 console.log('leaveFullscreenForElement')17 console.log(data)18 })19 manager.on('enterHtmlFullscreen', (data) => {20 console.log('enterHtmlFullscreen')21 console.log(data)22 })23 manager.on('leaveHtmlFullscreen', (data) => {24 console.log('leaveHtmlFullscreen')25 console.log(data)26 })27}).then((manager) => {28 return chromy.chain()29 .wait(() => {30 })31 .evaluate(() => {32 const video = document.querySelector('video')33 video.requestFullscreen()34 document.querySelector('#html5').requestFullscreen()35 })36 .wait(10000)37 .evaluate(() => {38 document.exitFullscreen()39 })40 .wait(10000)41 .end()42 .then(() => {43 manager.dispose()44 })45})
Using AI Code Generation
1var Chromy = require('chromy')2var chromy = new Chromy()3chromy.chain()4 .wait(2000)5 .screenshot('screenshot1.png')6 .emulateFullscreen()7 .wait(2000)8 .screenshot('screenshot2.png')9 .restoreWindowSize()10 .wait(2000)11 .screenshot('screenshot3.png')12 .end()13 .then(function () {14 console.log('done')15 })16var Chromy = require('chromy')17var chromy = new Chromy()18chromy.chain()19 .wait(2000)20 .screenshot('screenshot1.png')21 .emulateFullscreen()22 .wait(2000)23 .screenshot('screenshot2.png')24 .restoreWindowSize()25 .wait(2000)26 .screenshot('screenshot3.png')27 .end()28 .then(function () {29 console.log('done')30 })31var Chromy = require('chromy')32var chromy = new Chromy()33chromy.chain()34 .wait(2000)35 .screenshot('screenshot1.png')36 .emulateFullscreen()37 .wait(2000)38 .screenshot('screenshot2.png')39 .restoreWindowSize()40 .wait(2000)41 .screenshot('screenshot3.png')42 .end()43 .then(function () {44 console.log('done')45 })46var Chromy = require('chromy')
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!