How to use spinWait method in Appium Xcuitest Driver

Best JavaScript code snippet using appium-xcuitest-driver

FrameRateMonitorSpec.js

Source:FrameRateMonitorSpec.js Github

copy

Full Screen

...27 monitor = undefined;28 }29 });3031 function spinWait(milliseconds) {32 /*jshint noempty: false*/33 var endTime = getTimestamp() + milliseconds;34 while (getTimestamp() < endTime) {35 }36 }3738 it('throws when constructed without a scene', function() {39 expect(function() {40 monitor = new FrameRateMonitor();41 }).toThrowDeveloperError();4243 expect(function() {44 monitor = new FrameRateMonitor({});45 }).toThrowDeveloperError();46 });4748 it('can be constructed with just a scene', function() {49 monitor = new FrameRateMonitor({50 scene : scene51 });5253 expect(monitor.samplingWindow).toBe(5.0);54 expect(monitor.quietPeriod).toBe(2.0);55 expect(monitor.warmupPeriod).toBe(5.0);56 expect(monitor.minimumFrameRateDuringWarmup).toBe(4);57 expect(monitor.minimumFrameRateAfterWarmup).toBe(8);58 expect(monitor.scene).toBe(scene);59 expect(monitor.lowFrameRate.numberOfListeners).toBe(0);60 expect(monitor.nominalFrameRate.numberOfListeners).toBe(0);61 });6263 it('honors parameters to the constructor', function() {64 monitor = new FrameRateMonitor({65 scene : scene,66 samplingWindow : 3.0,67 quietPeriod : 1.0,68 warmupPeriod : 6.0,69 minimumFrameRateDuringWarmup : 1,70 minimumFrameRateAfterWarmup : 271 });7273 expect(monitor.samplingWindow).toBe(3.0);74 expect(monitor.quietPeriod).toBe(1.0);75 expect(monitor.warmupPeriod).toBe(6.0);76 expect(monitor.minimumFrameRateDuringWarmup).toBe(1);77 expect(monitor.minimumFrameRateAfterWarmup).toBe(2);78 expect(monitor.scene).toBe(scene);79 });8081 it('raises the lowFrameRate event on low frame rate', function() {82 monitor = new FrameRateMonitor({83 scene : scene,84 quietPeriod : 0.001,85 warmupPeriod : 0.001,86 samplingWindow : 0.001,87 minimumFrameRateDuringWarmup : 1000,88 minimumFrameRateAfterWarmup : 100089 });9091 var spyListener = jasmine.createSpy('listener');92 monitor.lowFrameRate.addEventListener(spyListener);9394 // Rendering once starts the quiet period95 scene.render();9697 // Wait until we're well past the end of the quiet period.98 spinWait(2);99100 // Rendering again records our first sample.101 scene.render();102103 // Wait well over a millisecond, which is the maximum frame time allowed by this instance.104 spinWait(2);105106 // Record our second sample. The monitor should notice that our frame rate is too low.107 scene.render();108109 expect(monitor.lastFramesPerSecond).toBeLessThan(1000);110 expect(spyListener).toHaveBeenCalled();111 });112113 it('does not monitor frame rate while paused', function() {114 monitor = new FrameRateMonitor({115 scene : scene,116 quietPeriod : 0.001,117 warmupPeriod : 0.001,118 samplingWindow : 0.001,119 minimumFrameRateDuringWarmup : 1000,120 minimumFrameRateAfterWarmup : 1000121 });122123 var spyListener = jasmine.createSpy('listener');124 monitor.lowFrameRate.addEventListener(spyListener);125126 // Rendering once starts the quiet period127 scene.render();128129 // Wait until we're well past the end of the quiet period.130 spinWait(2);131132 // Rendering again records our first sample.133 scene.render();134135 monitor.pause();136137 // Wait well over a millisecond, which is the maximum frame time allowed by this instance.138 spinWait(2);139140 // Record our second sample. The monitor would notice that our frame rate is too low,141 // but it's paused.142 scene.render();143144 monitor.unpause();145146 scene.render();147148 expect(spyListener).not.toHaveBeenCalled();149 });150151 it('pausing multiple times requires unpausing multiple times', function() {152 monitor = new FrameRateMonitor({153 scene : scene,154 quietPeriod : 0.001,155 warmupPeriod : 0.001,156 samplingWindow : 0.001,157 minimumFrameRateDuringWarmup : 1000,158 minimumFrameRateAfterWarmup : 1000159 });160161 var spyListener = jasmine.createSpy('listener');162 monitor.lowFrameRate.addEventListener(spyListener);163164 monitor.pause();165 monitor.pause();166 monitor.unpause();167168 // Rendering once starts the quiet period169 scene.render();170171 // Wait until we're well past the end of the quiet period.172 spinWait(2);173174 // Rendering again records our first sample.175 scene.render();176177 // Wait well over a millisecond, which is the maximum frame time allowed by this instance.178 spinWait(2);179180 // Record our second sample. The monitor would notice that our frame rate is too low,181 // but it's paused.182 scene.render();183184 monitor.unpause();185186 scene.render();187188 expect(spyListener).not.toHaveBeenCalled();189 });190191 it('does not report a low frame rate during the quiet period', function() {192 monitor = new FrameRateMonitor({193 scene : scene,194 quietPeriod : 1.0,195 warmupPeriod : 0.001,196 samplingWindow : 0.001,197 minimumFrameRateDuringWarmup : 1000,198 minimumFrameRateAfterWarmup : 1000199 });200201 var spyListener = jasmine.createSpy('listener');202 monitor.lowFrameRate.addEventListener(spyListener);203204 // Rendering once starts the quiet period205 scene.render();206207 // Wait well over a millisecond, which is the maximum frame time allowed by this instance.208 spinWait(2);209210 // Render again. Even though our frame rate is too low, the monitor shouldn't raise the event because we're in the quiet period.211 scene.render();212213 expect(spyListener).not.toHaveBeenCalled();214 });215216 it('the nominalFrameRate event is raised after the warmup period if the frame rate returns to nominal', function() {217 monitor = new FrameRateMonitor({218 scene : scene,219 quietPeriod : 0.001,220 warmupPeriod : 0.001,221 samplingWindow : 0.001,222 minimumFrameRateDuringWarmup : 10,223 minimumFrameRateAfterWarmup : 10224 });225226 var lowListener = jasmine.createSpy('lowFrameRate');227 monitor.lowFrameRate.addEventListener(lowListener);228229 var nominalListener = jasmine.createSpy('nominalFrameRate');230 monitor.nominalFrameRate.addEventListener(nominalListener);231232 // Rendering once starts the quiet period233 scene.render();234235 // Wait until we're well past the end of the quiet period.236 spinWait(2);237238 // Rendering again records our first sample.239 scene.render();240241 // Wait 120 millseconds, which is over the maximum frame time allowed by this instance.242 spinWait(120);243244 // Record our second sample. The monitor should notice that our frame rate is too low.245 scene.render();246247 expect(monitor.lastFramesPerSecond).toBeLessThan(10);248 expect(lowListener).toHaveBeenCalled();249250 // Render as fast as possible for a samplingWindow, quietPeriod, and warmupPeriod.251 var endTime = getTimestamp() + 50;252 while (getTimestamp() < endTime) {253 scene.render();254 }255256 // The nominalFrameRate event should have been raised. ...

Full Screen

Full Screen

PerformanceWatchdogViewModelSpec.js

Source:PerformanceWatchdogViewModelSpec.js Github

copy

Full Screen

...25 viewModel = undefined;26 }27 FrameRateMonitor.fromScene(scene).destroy();28 });29 function spinWait(milliseconds) {30 /*eslint-disable no-empty*/31 var endTime = getTimestamp() + milliseconds;32 while (getTimestamp() < endTime) {33 }34 /*eslint-enable no-empty*/35 }36 it('throws when constructed without a scene', function() {37 expect(function() {38 viewModel = new PerformanceWatchdogViewModel();39 }).toThrowDeveloperError();40 expect(function() {41 viewModel = new PerformanceWatchdogViewModel({});42 }).toThrowDeveloperError();43 });44 it('can be constructed with just a scene', function() {45 viewModel = new PerformanceWatchdogViewModel({46 scene : scene47 });48 expect(viewModel.lowFrameRateMessage).toBeDefined();49 expect(viewModel.lowFrameRateMessageDismissed).toBe(false);50 expect(viewModel.showingLowFrameRateMessage).toBe(false);51 expect(viewModel.scene).toBe(scene);52 });53 it('honors parameters to the constructor', function() {54 var options = {55 scene : scene,56 lowFrameRateMessage : 'why so slow?'57 };58 viewModel = new PerformanceWatchdogViewModel(options);59 expect(viewModel.lowFrameRateMessage).toBe('why so slow?');60 expect(viewModel.scene).toBe(scene);61 });62 it('shows a message on low frame rate', function() {63 var monitor = FrameRateMonitor.fromScene(scene);64 monitor.quietPeriod = 0.001;65 monitor.warmupPeriod = 0.001;66 monitor.samplingWindow = 0.001;67 monitor.minimumFrameRateDuringWarmup = 1000;68 monitor.minimumFrameRateAfterWarmup = 1000;69 viewModel = new PerformanceWatchdogViewModel({70 scene : scene71 });72 expect(viewModel.showingLowFrameRateMessage).toBe(false);73 // Rendering once starts the quiet period74 scene.render();75 // Wait until we're well past the end of the quiet period.76 spinWait(2);77 // Rendering again records our first sample.78 scene.render();79 // Wait well over a millisecond, which is the maximum frame time allowed by this instance.80 spinWait(2);81 // Record our second sample. The watchdog should notice that our frame rate is too low.82 scene.render();83 expect(viewModel.showingLowFrameRateMessage).toBe(true);84 });85 it('does not report a low frame rate during the queit period', function() {86 var monitor = FrameRateMonitor.fromScene(scene);87 monitor.quietPeriod = 1.0;88 monitor.warmupPeriod = 0.001;89 monitor.samplingWindow = 0.001;90 monitor.minimumFrameRateDuringWarmup = 1000;91 monitor.minimumFrameRateAfterWarmup = 1000;92 viewModel = new PerformanceWatchdogViewModel({93 scene : scene94 });95 // Rendering once starts the quiet period96 scene.render();97 // Wait well over a millisecond, which is the maximum frame time allowed by this instance.98 spinWait(2);99 // Render again. Even though our frame rate is too low, the watchdog shouldn't bark because we're in the quiet period.100 scene.render();101 expect(viewModel.showingLowFrameRateMessage).toBe(false);102 });103 it('the low frame rate message goes away after the warmup period if the frame rate returns to nominal', function() {104 var monitor = FrameRateMonitor.fromScene(scene);105 monitor.quietPeriod = 0.001;106 monitor.warmupPeriod = 0.001;107 monitor.samplingWindow = 0.001;108 monitor.minimumFrameRateDuringWarmup = 10;109 monitor.minimumFrameRateAfterWarmup = 10;110 viewModel = new PerformanceWatchdogViewModel({111 scene : scene112 });113 expect(viewModel.showingLowFrameRateMessage).toBe(false);114 // Rendering once starts the quiet period115 scene.render();116 // Wait until we're well past the end of the quiet period.117 spinWait(2);118 // Rendering again records our first sample.119 scene.render();120 // Wait 120 millseconds, which is over the maximum frame time allowed by this instance.121 spinWait(120);122 // Record our second sample. The watchdog should notice that our frame rate is too low.123 scene.render();124 expect(viewModel.showingLowFrameRateMessage).toBe(true);125 // Render as fast as possible for a samplingWindow, quietPeriod, and warmupPeriod.126 var endTime = getTimestamp() + 50;127 while (getTimestamp() < endTime) {128 scene.render();129 }130 // The low frame rate message should have gone away.131 expect(viewModel.showingLowFrameRateMessage).toBe(false);132 });133 it('does not show the low frame rate message again once it is dismissed', function() {134 var monitor = FrameRateMonitor.fromScene(scene);135 monitor.quietPeriod = 0.001;136 monitor.warmupPeriod = 0.001;137 monitor.samplingWindow = 0.001;138 monitor.minimumFrameRateDuringWarmup = 1000;139 monitor.minimumFrameRateAfterWarmup = 1000;140 viewModel = new PerformanceWatchdogViewModel({141 scene : scene142 });143 expect(viewModel.showingLowFrameRateMessage).toBe(false);144 // Rendering once starts the quiet period145 scene.render();146 // Wait until we're well past the end of the quiet period.147 spinWait(2);148 // Rendering again records our first sample.149 scene.render();150 // Wait well over a millisecond, which is the maximum frame time allowed by this instance.151 spinWait(2);152 // Record our second sample. The watchdog should notice that our frame rate is too low.153 scene.render();154 expect(viewModel.showingLowFrameRateMessage).toBe(true);155 viewModel.dismissMessage();156 // Render several slow frames. The message should not re-appear.157 scene.render();158 spinWait(2);159 scene.render();160 expect(viewModel.showingLowFrameRateMessage).toBe(false);161 });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder()3 .withCapabilities({4 })5 .build();6driver.sleep(5000).then(function() {7 driver.executeScript('mobile: spinWait', {duration: 10});8});9var webdriver = require('selenium-webdriver');10var driver = new webdriver.Builder()11 .withCapabilities({12 })13 .build();14driver.sleep(5000).then(function() {15 driver.executeScript('mobile: spinWait', {duration: 10});16});

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var assert = require('assert');3var path = require('path');4var fs = require('fs');5var _ = require('underscore');6var spawn = require('child_process').spawn;7var exec = require('child_process').exec;8var spawnSync = require('child_process').spawnSync;9var spawnOpts = {stdio: 'inherit', cwd: process.cwd(), env: process.env, encoding: 'utf8'};10var XCUITEST_TIMEOUT = 60000;11var XCUITEST_POLLING = 1000;12var desired = {13};14var driver = wd.promiseChainRemote('localhost', 4723);15driver.on('status', function (info) {16 console.log(info);17});18driver.on('command', function (meth, path, data) {19 console.log(' > ' + meth, path, data || '');20});21driver.on('http', function (meth, path, data) {22 console.log(' > ' + meth, path, data || '');23});24 .init(desired)25 .setImplicitWaitTimeout(5000)26 .then(function () {27 return driver.execute('mobile: spinWait', {28 });29 })30 .then(function () {31 })32 .fin(function () {33 return driver.quit();34 })35 .done();

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Appium Xcuitest Driver automation tests on LambdaTest cloud grid

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

Sign up Free
_

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful