How to use _runWithTimeout method in Playwright Internal

Best JavaScript code snippet using playwright-internal

TimerExample.js

Source:TimerExample.js Github

copy

Full Screen

1/**2 * Copyright (c) Facebook, Inc. and its affiliates.3 *4 * This source code is licensed under the MIT license found in the5 * LICENSE file in the root directory of this source tree.6 *7 * @format8 * @flow9 */10'use strict';11const RNTesterButton = require('../../components/RNTesterButton');12const React = require('react');13const {Alert, Platform, ToastAndroid, Text, View} = require('react-native');14function burnCPU(milliseconds) {15 const start = global.performance.now();16 while (global.performance.now() < start + milliseconds) {}17}18type RequestIdleCallbackTesterProps = $ReadOnly<{||}>;19type RequestIdleCallbackTesterState = {|message: string|};20class RequestIdleCallbackTester extends React.Component<21 RequestIdleCallbackTesterProps,22 RequestIdleCallbackTesterState,23> {24 state = {25 message: '-',26 };27 _idleTimer: ?IdleCallbackID = null;28 _iters = 0;29 componentWillUnmount() {30 if (this._idleTimer != null) {31 cancelIdleCallback(this._idleTimer);32 this._idleTimer = null;33 }34 }35 render() {36 return (37 <View>38 <RNTesterButton onPress={this._run.bind(this, false)}>39 Run requestIdleCallback40 </RNTesterButton>41 <RNTesterButton onPress={this._run.bind(this, true)}>42 Burn CPU inside of requestIdleCallback43 </RNTesterButton>44 <RNTesterButton onPress={this._runWithTimeout}>45 Run requestIdleCallback with timeout option46 </RNTesterButton>47 <RNTesterButton onPress={this._runBackground}>48 Run background task49 </RNTesterButton>50 <RNTesterButton onPress={this._stopBackground}>51 Stop background task52 </RNTesterButton>53 <Text>{this.state.message}</Text>54 </View>55 );56 }57 _run(shouldBurnCPU: boolean) {58 if (this._idleTimer != null) {59 cancelIdleCallback(this._idleTimer);60 this._idleTimer = null;61 }62 this._idleTimer = requestIdleCallback(deadline => {63 let message = '';64 if (shouldBurnCPU) {65 burnCPU(10);66 message = 'Burned CPU for 10ms,';67 }68 this.setState({69 message: `${message} ${deadline.timeRemaining()}ms remaining in frame`,70 });71 });72 }73 _runWithTimeout = () => {74 if (this._idleTimer != null) {75 cancelIdleCallback(this._idleTimer);76 this._idleTimer = null;77 }78 this._idleTimer = requestIdleCallback(79 deadline => {80 this.setState({81 message: `${deadline.timeRemaining()}ms remaining in frame, it did timeout: ${82 deadline.didTimeout ? 'yes' : 'no'83 }`,84 });85 },86 {timeout: 100},87 );88 burnCPU(100);89 };90 _runBackground = () => {91 if (this._idleTimer != null) {92 cancelIdleCallback(this._idleTimer);93 this._idleTimer = null;94 }95 const handler = deadline => {96 while (deadline.timeRemaining() > 5) {97 burnCPU(5);98 this.setState({99 message: `Burned CPU for 5ms ${this100 ._iters++} times, ${deadline.timeRemaining()}ms remaining in frame`,101 });102 }103 this._idleTimer = requestIdleCallback(handler);104 };105 this._idleTimer = requestIdleCallback(handler);106 };107 _stopBackground = () => {108 this._iters = 0;109 if (this._idleTimer != null) {110 cancelIdleCallback(this._idleTimer);111 this._idleTimer = null;112 }113 };114}115type TimerTesterProps = $ReadOnly<{|116 dt?: number,117 type: string,118|}>;119class TimerTester extends React.Component<TimerTesterProps> {120 _ii = 0;121 _iters = 0;122 _start = 0;123 _timerId: ?TimeoutID = null;124 _rafId: ?AnimationFrameID = null;125 _intervalId: ?IntervalID = null;126 _immediateId: ?Object = null;127 _timerFn: ?() => any = null;128 render() {129 const args =130 'fn' + (this.props.dt !== undefined ? ', ' + this.props.dt : '');131 return (132 <RNTesterButton onPress={this._run}>133 Measure: {this.props.type}({args}) - {this._ii || 0}134 </RNTesterButton>135 );136 }137 componentWillUnmount() {138 if (this._timerId != null) {139 clearTimeout(this._timerId);140 this._timerId = null;141 }142 if (this._rafId != null) {143 cancelAnimationFrame(this._rafId);144 this._rafId = null;145 }146 if (this._immediateId != null) {147 clearImmediate(this._immediateId);148 this._immediateId = null;149 }150 if (this._intervalId != null) {151 clearInterval(this._intervalId);152 this._intervalId = null;153 }154 }155 _run = () => {156 if (!this._start) {157 const d = new Date();158 this._start = d.getTime();159 this._iters = 100;160 this._ii = 0;161 if (this.props.type === 'setTimeout') {162 if (this.props.dt !== undefined && this.props.dt < 1) {163 this._iters = 5000;164 } else if (this.props.dt !== undefined && this.props.dt > 20) {165 this._iters = 10;166 }167 this._timerFn = () => {168 this._timerId = setTimeout(this._run, this.props.dt);169 };170 } else if (this.props.type === 'requestAnimationFrame') {171 this._timerFn = () => {172 this._rafId = requestAnimationFrame(this._run);173 };174 } else if (this.props.type === 'setImmediate') {175 this._iters = 5000;176 this._timerFn = () => {177 this._immediateId = setImmediate(this._run);178 };179 } else if (this.props.type === 'setInterval') {180 this._iters = 30; // Only used for forceUpdate periodicity181 this._timerFn = null;182 this._intervalId = setInterval(this._run, this.props.dt);183 }184 }185 if (this._ii >= this._iters && this._intervalId == null) {186 const d = new Date();187 const e = d.getTime() - this._start;188 const msg =189 'Finished ' +190 this._ii +191 ' ' +192 this.props.type +193 ' calls.\n' +194 'Elapsed time: ' +195 e +196 ' ms\n' +197 e / this._ii +198 ' ms / iter';199 console.log(msg);200 if (Platform.OS === 'ios') {201 Alert.alert(msg);202 } else if (Platform.OS === 'android') {203 ToastAndroid.show(msg, ToastAndroid.SHORT);204 }205 this._start = 0;206 this.forceUpdate(() => {207 this._ii = 0;208 });209 return;210 }211 this._ii++;212 // Only re-render occasionally so we don't slow down timers.213 if (this._ii % (this._iters / 5) === 0) {214 this.forceUpdate();215 }216 if (this._timerFn) {217 this._timerId = this._timerFn();218 }219 };220 clear = () => {221 if (this._intervalId != null) {222 clearInterval(this._intervalId);223 // Configure things so we can do a final run to update UI and reset state.224 this._intervalId = null;225 this._iters = this._ii;226 this._run();227 }228 };229}230exports.framework = 'React';231exports.title = 'Timers';232exports.category = 'UI';233exports.description = 'A demonstration of Timers in React Native.';234exports.examples = [235 {236 title: 'this.setTimeout(fn, t)',237 description: ('Execute function fn t milliseconds in the future. If ' +238 't === 0, it will be enqueued immediately in the next event loop. ' +239 'Larger values will fire on the closest frame.': string),240 render: function(): React.Node {241 return (242 <View>243 <TimerTester type="setTimeout" dt={0} />244 <TimerTester type="setTimeout" dt={1} />245 <TimerTester type="setTimeout" dt={100} />246 </View>247 );248 },249 },250 {251 title: 'this.requestAnimationFrame(fn)',252 description: 'Execute function fn on the next frame.',253 render: function(): React.Node {254 return (255 <View>256 <TimerTester type="requestAnimationFrame" />257 </View>258 );259 },260 },261 {262 title: 'this.requestIdleCallback(fn)',263 description: 'Execute function fn on the next JS frame that has idle time',264 render: function(): React.Node {265 return (266 <View>267 <RequestIdleCallbackTester />268 </View>269 );270 },271 },272 {273 title: 'this.setImmediate(fn)',274 description: 'Execute function fn at the end of the current JS event loop.',275 render: function(): React.Node {276 return (277 <View>278 <TimerTester type="setImmediate" />279 </View>280 );281 },282 },283 {284 title: 'this.setInterval(fn, t)',285 description: ('Execute function fn every t milliseconds until cancelled ' +286 'or component is unmounted.': string),287 render: function(): React.Node {288 type IntervalExampleProps = $ReadOnly<{||}>;289 type IntervalExampleState = {|290 showTimer: boolean,291 |};292 class IntervalExample extends React.Component<293 IntervalExampleProps,294 IntervalExampleState,295 > {296 state = {297 showTimer: true,298 };299 _timerTester: ?React.ElementRef<typeof TimerTester>;300 render() {301 return (302 <View>303 {this.state.showTimer && this._renderTimer()}304 <RNTesterButton onPress={this._toggleTimer}>305 {this.state.showTimer ? 'Unmount timer' : 'Mount new timer'}306 </RNTesterButton>307 </View>308 );309 }310 _renderTimer = () => {311 return (312 <View>313 <TimerTester314 ref={ref => (this._timerTester = ref)}315 dt={25}316 type="setInterval"317 />318 <RNTesterButton319 onPress={() => this._timerTester && this._timerTester.clear()}>320 Clear interval321 </RNTesterButton>322 </View>323 );324 };325 _toggleTimer = () => {326 this.setState({showTimer: !this.state.showTimer});327 };328 }329 return <IntervalExample />;330 },331 },...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1"use strict";2exports.__esModule = true;3exports.default = void 0;4var _isPlainObj = _interopRequireDefault(require("is-plain-obj"));5var _parse = _interopRequireDefault(require("./parse"));6var _export = _interopRequireDefault(require("../util/export"));7var _getTypes = _interopRequireDefault(require("../types/getTypes"));8var _getModelFieldLimit = _interopRequireDefault(require("../util/getModelFieldLimit"));9var _runWithTimeout = _interopRequireDefault(require("../util/runWithTimeout"));10function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }11class Query {12 constructor(obj, options = {}) {13 this.update = fn => {14 if ((0, _isPlainObj.default)(fn)) return this.update(v => ({ ...v,15 ...fn16 }));17 if (typeof fn !== 'function') throw new Error('Missing update function!'); // update instance query18 const newInstanceValue = fn(this._parsed);19 if (!newInstanceValue || typeof newInstanceValue !== 'object') throw new Error('Invalid update function! Must return an object.');20 this._parsed = newInstanceValue; // update non-instance query21 const newCollectionValue = fn(this._parsedCollection);22 if (!newCollectionValue || typeof newCollectionValue !== 'object') throw new Error('Invalid update function! Must return an object.');23 this._parsedCollection = newCollectionValue;24 return this;25 };26 this.constrain = ({27 defaultLimit,28 maxLimit,29 attributes,30 where31 } = {}) => {32 if (where && !Array.isArray(where)) throw new Error('Invalid where array!');33 if (attributes && !Array.isArray(attributes)) throw new Error('Invalid attributes array!');34 return this.update(v => {35 const limit = v.limit || defaultLimit;36 return { ...v,37 attributes: attributes || v.attributes,38 where: where ? [...v.where, ...where] : v.where,39 limit: maxLimit ? limit ? Math.min(limit, maxLimit) : maxLimit : limit40 };41 });42 };43 this.value = ({44 instanceQuery = true45 } = {}) => instanceQuery ? this._parsed : this._parsedCollection;46 this.toJSON = () => this.input;47 this.getOutputSchema = () => {48 let fieldLimit = this.options.fieldLimit || (0, _getModelFieldLimit.default)(this.options.model);49 if (this.input.exclusions) {50 fieldLimit = fieldLimit.filter(i => !this.input.exclusions.includes(i.field));51 }52 return fieldLimit.reduce((acc, f) => {53 acc[f.field] = (0, _getTypes.default)({54 field: f.field55 }, this.options)[0];56 return acc;57 }, {});58 };59 this.execute = async ({60 raw = false,61 useMaster,62 debug = this.options.model.sequelize.options.logging,63 timeout64 } = {}) => {65 const fn = this.options.count !== false ? 'findAndCountAll' : 'findAll';66 const exec = transaction => this.options.model[fn]({67 raw,68 useMaster,69 logging: debug,70 transaction,71 ...this.value()72 });73 if (!timeout) return exec();74 return (0, _runWithTimeout.default)(exec, {75 sequelize: this.options.model.sequelize,76 timeout77 });78 };79 this.executeStream = async ({80 onError,81 format,82 tupleFraction,83 transform,84 useMaster,85 debug = this.options.model.sequelize.options.logging,86 timeout,87 finishTimeout88 } = {}) => (0, _export.default)({89 timeout,90 finishTimeout,91 useMaster,92 tupleFraction,93 format,94 transform,95 onError,96 debug,97 model: this.options.model,98 value: this.value()99 });100 this.count = async ({101 useMaster,102 timeout,103 debug = this.options.model.sequelize.options.logging104 } = {}) => {105 const exec = transaction => this.options.model.count({106 useMaster,107 transaction,108 logging: debug,109 ...this.value()110 });111 if (!timeout) return exec();112 return (0, _runWithTimeout.default)(exec, {113 sequelize: this.options.model.sequelize,114 timeout115 });116 };117 this.destroy = async ({118 debug = this.options.model.sequelize.options.logging,119 timeout120 } = {}) => {121 const exec = transaction => this.options.model.destroy({122 logging: debug,123 transaction,124 ...this.value({125 instanceQuery: false126 })127 });128 if (!timeout) return exec();129 return (0, _runWithTimeout.default)(exec, {130 sequelize: this.options.model.sequelize,131 timeout132 });133 };134 if (!obj) throw new Error('Missing query!');135 if (!options.model || !options.model.rawAttributes) throw new Error('Missing model!');136 if (options.fieldLimit && !Array.isArray(options.fieldLimit)) throw new Error('Invalid fieldLimit!');137 this.input = obj;138 this.options = options;139 this._parsed = (0, _parse.default)(obj, options);140 this._parsedCollection = (0, _parse.default)(obj, { ...options,141 instanceQuery: false142 });143 }144}145exports.default = Query;...

Full Screen

Full Screen

queue.js

Source:queue.js Github

copy

Full Screen

...38 this.runTask(nextTask);39 // call next to run multiple tasks concurrently40 this.next();41 }42 _runWithTimeout(task) {43 return new Promise((resolve, reject)=> {44 const timer = setTimeout(()=> {45 const err = new Error('Timeout');46 err.code = 'ETIMEDOUT';47 reject(err);48 }, this.timeout);49 Promise.resolve()50 .then(task)51 .then(resolve)52 .catch(reject)53 .finally(()=> clearTimeout(timer));54 });55 }56 async runTask(task) {57 let result, error;58 this.emitter.emit('will-run', task);59 try {60 result = await (this.timeout? this._runWithTimeout(task): task());61 } catch(err) {62 error = err;63 }64 // ignore task if the queue has been cleared65 if(!this.runningTasks.includes(task)) return;66 // remove task from running task list67 this.runningTasks.splice(this.runningTasks.indexOf(task), 1);68 // notify failure or success69 if(error) {70 this.emitter.emit('did-fail', { task, error });71 } else {72 this.emitter.emit('did-run', { task , result });73 }74 // run next task...

Full Screen

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal 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