Best JavaScript code snippet using qawolf
scheduler.factory.ts
Source:scheduler.factory.ts
1import { ILogService, IPromise, ITimeoutService, IWindowService, module } from 'angular';2import { Observable, Subject, Subscription } from 'rxjs';3import { SETTINGS } from 'core/config/settings';4export interface IScheduler {5 subscribe: (next?: () => void, error?: (error: any) => void, complete?: () => void) => Subscription;6 scheduleImmediate: () => void;7 unsubscribe: () => void;8}9export class SchedulerFactory {10 constructor(private $log: ILogService, private $window: IWindowService, private $timeout: ITimeoutService) {11 'ngInject';12 }13 public createScheduler(pollSchedule = SETTINGS.pollSchedule): IScheduler {14 let scheduler = new Subject();15 let lastRunTimestamp = new Date().getTime();16 let pendingRun: IPromise<void> = null;17 let suspended = false;18 // When creating the timer, use last run as the dueTime (first arg); zero can lead to concurrency issues19 // where the scheduler will fire shortly after being subscribed to, resulting in surprising immediate refreshes20 let source = Observable.timer(pollSchedule, pollSchedule);21 const run = (): void => {22 if (suspended) {23 return;24 }25 this.$timeout.cancel(pendingRun);26 lastRunTimestamp = new Date().getTime();27 scheduler.next(true);28 pendingRun = null;29 };30 source.subscribe(run);31 const suspendScheduler = (): void => {32 this.$log.debug('auto refresh suspended');33 suspended = true;34 };35 const scheduleNextRun = (delay: number) => {36 // do not schedule another run if a run is pending37 suspended = false;38 pendingRun = pendingRun || this.$timeout(run, delay);39 };40 const resumeScheduler = (): void => {41 suspended = false;42 const now = new Date().getTime();43 this.$log.debug('auto refresh resumed');44 if (now - lastRunTimestamp > pollSchedule) {45 run();46 } else {47 scheduleNextRun(pollSchedule - (now - lastRunTimestamp));48 }49 };50 const watchDocumentVisibility = (): void => {51 this.$log.debug('document visibilityState changed to: ', document.visibilityState);52 if (document.visibilityState === 'visible') {53 resumeScheduler();54 } else {55 suspendScheduler();56 }57 };58 const scheduleImmediate = (): void => {59 run();60 suspended = true;61 scheduleNextRun(pollSchedule);62 };63 document.addEventListener('visibilitychange', watchDocumentVisibility);64 this.$window.addEventListener('offline', suspendScheduler);65 this.$window.addEventListener('online', resumeScheduler);66 scheduler.next(true);67 return {68 subscribe: scheduler.subscribe.bind(scheduler),69 scheduleImmediate,70 unsubscribe: () => {71 suspended = true;72 if (scheduler) {73 scheduler.next(false);74 scheduler.unsubscribe();75 }76 scheduler = null;77 source = null;78 this.$timeout.cancel(pendingRun);79 document.removeEventListener('visibilitychange', watchDocumentVisibility);80 this.$window.removeEventListener('offline', suspendScheduler);81 this.$window.removeEventListener('online', resumeScheduler);82 },83 };84 }85}86export const SCHEDULER_FACTORY = 'spinnaker.core.scheduler';87module(SCHEDULER_FACTORY, []).factory(88 'schedulerFactory',89 ($log: ILogService, $window: IWindowService, $timeout: ITimeoutService) =>90 new SchedulerFactory($log, $window, $timeout),...
SchedulerFactory.ts
Source:SchedulerFactory.ts
1import { IPromise } from 'angular';2import { Observable, Subject, Subscription } from 'rxjs';3import { $log, $window, $timeout } from 'ngimport';4import { SETTINGS } from 'core/config/settings';5export interface IScheduler {6 subscribe: (next?: () => void, error?: (error: any) => void, complete?: () => void) => Subscription;7 scheduleImmediate: () => void;8 unsubscribe: () => void;9}10export class SchedulerFactory {11 public static createScheduler(pollSchedule = SETTINGS.pollSchedule): IScheduler {12 let scheduler = new Subject();13 let lastRunTimestamp = new Date().getTime();14 let pendingRun: IPromise<void> = null;15 let suspended = false;16 // When creating the timer, use last run as the dueTime (first arg); zero can lead to concurrency issues17 // where the scheduler will fire shortly after being subscribed to, resulting in surprising immediate refreshes18 let source = Observable.timer(pollSchedule, pollSchedule);19 const run = (): void => {20 if (suspended) {21 return;22 }23 $timeout.cancel(pendingRun);24 lastRunTimestamp = new Date().getTime();25 scheduler.next(true);26 pendingRun = null;27 };28 source.subscribe(run);29 const suspendScheduler = (): void => {30 $log.debug('auto refresh suspended');31 suspended = true;32 };33 const scheduleNextRun = (delay: number) => {34 // do not schedule another run if a run is pending35 suspended = false;36 pendingRun = pendingRun || $timeout(run, delay);37 };38 const resumeScheduler = (): void => {39 suspended = false;40 const now = new Date().getTime();41 $log.debug('auto refresh resumed');42 if (now - lastRunTimestamp > pollSchedule) {43 run();44 } else {45 scheduleNextRun(pollSchedule - (now - lastRunTimestamp));46 }47 };48 const watchDocumentVisibility = (): void => {49 $log.debug('document visibilityState changed to: ', document.visibilityState);50 if (document.visibilityState === 'visible') {51 resumeScheduler();52 } else {53 suspendScheduler();54 }55 };56 const scheduleImmediate = (): void => {57 run();58 suspended = true;59 scheduleNextRun(pollSchedule);60 };61 document.addEventListener('visibilitychange', watchDocumentVisibility);62 $window.addEventListener('offline', suspendScheduler);63 $window.addEventListener('online', resumeScheduler);64 scheduler.next(true);65 return {66 subscribe: scheduler.subscribe.bind(scheduler),67 scheduleImmediate,68 unsubscribe: () => {69 suspended = true;70 if (scheduler) {71 scheduler.next(false);72 scheduler.unsubscribe();73 }74 scheduler = null;75 source = null;76 $timeout.cancel(pendingRun);77 document.removeEventListener('visibilitychange', watchDocumentVisibility);78 $window.removeEventListener('offline', suspendScheduler);79 $window.removeEventListener('online', resumeScheduler);80 },81 };82 }...
StatusCard.test.js
Source:StatusCard.test.js
1import React from 'react'2import StatusCard from 'components/JobRuns/StatusCard'3import mountWithTheme from 'test-helpers/mountWithTheme'4import { MINUTE_MS, TWO_MINUTES_MS } from 'test-helpers/isoDate'5describe('components/JobRuns/StatusCard', () => {6 const pendingRun = {7 id: 'runA',8 status: 'pending',9 result: {},10 createdAt: MINUTE_MS,11 finishedAt: null12 }13 const completedRun = {14 id: 'runA',15 status: 'completed',16 result: { amount: 2000000000000000000 },17 createdAt: TWO_MINUTES_MS,18 finishedAt: MINUTE_MS19 }20 const erroredRun = {21 id: 'runA',22 status: 'errored',23 result: {},24 createdAt: TWO_MINUTES_MS,25 finishedAt: MINUTE_MS26 }27 it('converts the given title to title case', () => {28 let component = mountWithTheme(29 <StatusCard title={'pending_confirmations'} />30 )31 expect(component.text()).toContain('Pending Confirmations')32 })33 it('can display children', () => {34 let withChildren = mountWithTheme(35 <StatusCard title={'pending_confirmations'}>I am a child</StatusCard>36 )37 expect(withChildren.text()).toContain('I am a child')38 })39 it('can display the elapsed time for completed and errored jobs', () => {40 let erroredStatus = mountWithTheme(41 <StatusCard title="errored" jobRun={erroredRun} />42 )43 let completedStatus = mountWithTheme(44 <StatusCard title="completed" jobRun={completedRun} />45 )46 expect(erroredStatus.text()).toContain('1m')47 expect(completedStatus.text()).toContain('1m')48 })49 it('will not display the elapsed time for pending jobs', () => {50 let pendingStatus = mountWithTheme(51 <StatusCard title="pending_confirmations" jobRun={pendingRun} />52 )53 expect(pendingStatus.text()).not.toContain('1m')54 })55 it('can display link earned for completed jobs', () => {56 let completedStatus = mountWithTheme(57 <StatusCard title="completed" jobRun={completedRun} />58 )59 expect(completedStatus.text()).toContain('+2 Link')60 })61 it('will not display link earned for errored or pending jobs', () => {62 let erroredStatus = mountWithTheme(63 <StatusCard title="errored" jobRun={erroredRun} />64 )65 let pendingStatus = mountWithTheme(66 <StatusCard title="pending_confirmations" jobRun={pendingRun} />67 )68 expect(erroredStatus.text()).not.toContain('Link')69 expect(pendingStatus.text()).not.toContain('Link')70 })...
utils.js
Source:utils.js
1const logSteps = [];2const appendLogStep = (fn) => {3 logSteps.push(fn);4};5const log = (s) => {6 const msg = `[${new Date().toISOString()}] ` + s;7 logSteps.forEach((fn) => {8 fn(msg);9 });10};11const isDebug = false;12if (isDebug) {13 appendLogStep((s) => {14 // eslint-disable-next-line no-console15 console.log(s);16 });17}18const _logs = [];19appendLogStep((s) => {20 _logs.push(s);21});22/**23 * return a new asynchronous function which has same functionality as `func`,24 * but can at most run `maxCount` instance concurrently, exceeded calls will25 * be pend and run when old calls end.26 * @param {number} maxCount27 * @param {(...args: any[]) => Promise<any>} func28 * @returns {(...args: any[]) => Promise<any>}29 */30function limit(maxCount, func) {31 let currentCount = 0;32 let totalCount = 0;33 const pendingRun = [];34 return async function (...args) {35 const run = async function (...args) {36 currentCount++;37 const current = totalCount++;38 log(`[#${current}] Requesting ${args[0]}\n`);39 const ret = await func(...args);40 const waitTime = Math.random() * 1000;41 log(`[#${current}] Done, waiting ${waitTime}\n`);42 setTimeout(async () => {43 currentCount--;44 if (pendingRun.length > 0) {45 const pending = pendingRun.shift();46 (async () => {47 const ret = await pending.func(...pending.args);48 pending.resolve(ret);49 })();50 }51 }, waitTime);52 return ret;53 };54 if (currentCount >= maxCount) {55 return new Promise((resolve) => {56 pendingRun.push({ func: run, args, resolve });57 });58 } else {59 return await run(...args);60 }61 };62}63const zipFiles = async (files, onProgress) => {64 const zip = new JSZip();65 Object.keys(files).forEach((name) => {66 zip.file(name, files[name]);67 });68 return await zip.generateAsync({ type: 'blob' }, onProgress);69};...
CodeSandbox.js
Source:CodeSandbox.js
1import React , {useEffect, useRef} from 'react';2function CodeSandbox(props) {3 const frameRef = useRef();4 const setConsoleBuffer = props.setConsoleBuffer;5 const setGraph = props.setGraph;6 useEffect(() => {7 const processMessage = (e) => {8 if(frameRef.current===null) {9 return;10 }11 if (e.origin === "null" && e.source === frameRef.current.contentWindow) {12 let msg = e.data;13 if (msg.info.msgType === "console") {14 setConsoleBuffer(consoleBuffer =>15 [...consoleBuffer, {level: msg.info.level, data: msg.data}]16 );17 } else if (msg.info.msgType === "graph") {18 setGraph({show: true, data: msg.data.data});19 } else if (msg.info.msgType === "error") {20 console.error(msg.data);21 }22 }23 }24 window.addEventListener('message', processMessage);25 }, [setConsoleBuffer, setGraph]);26 const setPendingRun = props.setPendingRun;27 const pendingRun = props.pendingRun;28 const code = props.code;29 useEffect(() => {30 if (pendingRun === true) {31 frameRef.current.contentWindow.postMessage(code, "*");32 setPendingRun(false);33 }34 }, [setPendingRun, pendingRun, code]);35 return (36 <iframe title="code sandbox"37 src = {process.env.PUBLIC_URL + '/code_sandbox.html'}38 sandbox = "allow-scripts"39 ref = {frameRef}40 width = {0}41 height = {0}42 ></iframe>43 )44}...
Using AI Code Generation
1const qawolf = require('qawolf');2(async () => {3 const browser = await qawolf.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'qawolf');7 await page.press('input[name="q"]', 'Enter');8 await qawolf.pendingRun(page, 'test', { browser, context });9 await browser.close();10})();11const qawolf = require('qawolf');12(async () => {13 const browser = await qawolf.launch();14 const context = await browser.newContext();15 const page = await context.newPage();16 await page.fill('input[name="q"]', 'qawolf');17 await page.press('input[name="q"]', 'Enter');18 await qawolf.pendingRun(page, 'test', { browser, context });19 await browser.close();20})();21at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)22at Function.Module._load (internal/modules/cjs/loader.js:725:27)23at Module.require (internal/modules/cjs/loader.js:952:19)24at require (internal/modules/cjs/helpers.js:88:18)25at Object. (C:\Users\HP\Desktop\test.js:1:18)26at Module._compile (internal/modules/cjs/loader.js:1063:30)27at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)28at Module.load (internal/modules/cjs/loader.js:928:32)29at Function.Module._load (internal/modules/cjs/loader.js:769:14)30at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
Using AI Code Generation
1const { pendingRun } = require("qawolf");2const { chromium } = require("playwright");3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.fill("input[name=q]", "QA Wolf");8 await pendingRun(page, "test");9 await browser.close();10})();11const { pendingRun } = require("qawolf");12const { chromium } = require("playwright");13(async () => {14 const browser = await chromium.launch();15 const context = await browser.newContext();16 const page = await context.newPage();17 await page.fill("input[name=q]", "QA Wolf");18 await pendingRun(page, "test");19 await browser.close();20})();21const { pendingRun } = require("qawolf");22const { chromium } = require("playwright");23(async () => {24 const browser = await chromium.launch();25 const context = await browser.newContext();26 const page = await context.newPage();27 await page.fill("input[name=q]", "QA Wolf");28 await pendingRun(page, "test");29 await browser.close();30})();31const { pendingRun } = require("qawolf");32const { chromium } = require("playwright");33(async () => {34 const browser = await chromium.launch();35 const context = await browser.newContext();36 const page = await context.newPage();37 await page.fill("input[name=q]", "QA Wolf");38 await pendingRun(page, "test");39 await browser.close();40})();41const { pendingRun } = require("qawolf");42const { chromium } = require("playwright");43(async () => {44 const browser = await chromium.launch();45 const context = await browser.newContext();46 const page = await context.newPage();
Using AI Code Generation
1const { pendingRun } = require("qawolf");2pendingRun("test");3const { pendingRun } = require("qawolf");4pendingRun("test");5const { pendingRun } = require("qawolf");6pendingRun("test");7const { pendingRun } = require("qawolf");8pendingRun("test");9const { pendingRun } = require("qawolf");10pendingRun("test");11const { pendingRun } = require("qawolf");12pendingRun("test");13const { pendingRun } = require("qawolf");14pendingRun("test");15const { pendingRun } = require("qawolf");16pendingRun("test");17const { pendingRun } = require("qawolf");18pendingRun("test");19const { pendingRun } = require("qawolf");20pendingRun("test");21const { pendingRun } = require("qawolf");22pendingRun("test");23const { pendingRun } = require("qawolf");24pendingRun("test");25const { pendingRun } = require("qawolf");26pendingRun("test");
Using AI Code Generation
1const { pendingRun } = require("qawolf");2const test = require("qawolf");3const { browser } = require("qawolf");4const { context } = require("qawolf");5const { device } = require("qawolf");6const { page } = require("qawolf");7const { click } = require("qawolf");8const { type } = require("qawolf");9const { select } = require("qawolf");10const { check } = require("qawolf");11const { click } = require("qawolf");12const { type } = require("qawolf");13const { select } = require("qawolf");14const { check } = require("qawolf");15const { click } = require("qawolf");16const { type } = require("qawolf");17const { select } = require("qawolf");18const { check } = require("qawolf");19const { click } = require("qawolf");20const { type } = require("qawolf");21const { select } = require("qawolf");22const { check } = require("qawolf");23const { click } = require("qawolf");
Using AI Code Generation
1const { pendingRun } = require('qawolf');2const test = async () => {3 const browser = await pendingRun('test');4 await browser.close();5};6test();7{8 "test": {9 {10 },11 {12 }13 }14}
Using AI Code Generation
1test("test", async ({ page }) => {2 await pendingRun(page);3});4test("test", async ({ page }) => {5 await pendingRun(page);6});7test("test", async ({ page }) => {8 await pendingRun(page);9});10test("test", async ({ page }) => {11 await pendingRun(page);12});13test("test", async ({ page }) => {14 await pendingRun(page);15});16test("test", async ({ page }) => {17 await pendingRun(page);18 await page.goto("
Using AI Code Generation
1const { launch, devices } = require("qawolf");2const iPhone = devices["iPhone 11 Pro Max"];3const selectors = {4};5const browser = await launch({6});7await browser.type(selectors.search, "qawolf");8await browser.click(selectors.searchButton);9const run = await browser.pendingRun();10await run.run();11await browser.close();
Using AI Code Generation
1const qawolf = require("qawolf");2qawolf.create();3qawolf.pendingRun("test.js");4qawolf.destroy();5const qawolf = require("qawolf");6qawolf.create();7qawolf.pendingRun("test.js");8qawolf.destroy();9const qawolf = require("qawolf");10qawolf.create();11qawolf.pendingRun("test.js");12qawolf.destroy();13const qawolf = require("qawolf");14qawolf.create();15qawolf.pendingRun("test.js");16qawolf.destroy();17const qawolf = require("qawolf");18qawolf.create();19qawolf.pendingRun("test.js");20qawolf.destroy();21const qawolf = require("qawolf");22qawolf.create();23qawolf.pendingRun("test.js");24qawolf.destroy();25const qawolf = require("qawolf");26qawolf.create();27qawolf.pendingRun("test.js");28qawolf.destroy();29const qawolf = require("qawolf");30qawolf.create();31qawolf.pendingRun("test.js");32qawolf.destroy();33const qawolf = require("qawolf");34qawolf.create();
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!!