Best JavaScript code snippet using qawolf
remote-tasks.js
Source:remote-tasks.js
...114 return new RemoteTaskRunnerServer( ...vx );115}116// ---------------------------------------------------------------------------117// ---------------------------------------------------------------------------118function frtRunnerClient( ...vx ){119 return new RemoteTaskRunnerClient( ...vx );120}121// ===========================================================================122// exports123// ===========================================================================124module.exports = {125 // conventional naming -------------------------126 127 // typical usage 128 serve : frtRunnerServer,129 client : ffpCallerClient,130 // flipped usage 131 provide : frtRunnerClient,132 marshal : ffpCallerServer,133 ...
taskAnalyzer.ts
Source:taskAnalyzer.ts
1/*!2 * Copyright (c) Microsoft Corporation. All rights reserved.3 * Licensed under the MIT License.4 */5import { assert } from "@fluidframework/common-utils";6import { ISequencedClient } from "@fluidframework/protocol-definitions";7export interface IHelpTasks {8 robot: string[];9 browser: string[];10}11const isRobot = (client: ISequencedClient): boolean => {12 return !(client.client?.details?.capabilities?.interactive ?? true);13};14/**15 * For a given list of connected clients and tasks to run, this function calculates need for local & remote help.16 * Right now only one client (aka leader) is allowed to run tasks and ask for local and remote.17 * To become completely distributed, each client should take into account other client permissions18 * and calculate help list. Then each client will pick up work independently and only leader will19 * ask for help.20 * TODO: Make this run on all clients once services are hardened better.21 * @param runnerClientId - Client making this call.22 * @param clients - List of all clients currently in the system.23 * @param tasks - Tasks to be performed.24 */25export function analyzeTasks(26 runnerClientId: string,27 clients: Map<string, ISequencedClient>,28 tasks: string[]): IHelpTasks | undefined {29 const robotClients = [...clients].filter((client) => isRobot(client[1]));30 const handledTasks = robotClients.map((robot) => robot[1].client.details.type);31 const unhandledTasks = tasks.filter((task) => !handledTasks.includes(task));32 if (unhandledTasks.length > 0) {33 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion34 const runnerClient = clients.get(runnerClientId)!;35 assert(!!runnerClient); // assume runnerClientId must be in the clients list.36 const permission = runnerClient.client && runnerClient.client.permission ? runnerClient.client.permission : [];37 const allowedTasks = unhandledTasks.filter((task) => permission && permission.includes(task));38 const robotNeeded = unhandledTasks.filter((task) => permission && !permission.includes(task));39 return {40 browser: allowedTasks,41 robot: robotNeeded,42 };43 }...
runner-client.js
Source:runner-client.js
...9 t.snapshot(client.ws.send.args)10}11test.cb('run a race', t => {12 const fn = sinon.spy()13 const client = new RunnerClient()14 client.enqueueRace('foo', fn)15 setTimeout(() => {16 t.true(fn.calledOnce)17 checkMessageSequence(t, client)18 t.end()19 }, CI ? 100 : 0)20})21test.cb('run an async race', t => {22 const fn = sinon.stub().callsFake(() => Promise.resolve())23 const client = new RunnerClient()24 client.enqueueRace('foo', fn)25 // Use setTimeout here because of Promise#then26 setTimeout(() => {27 t.true(fn.calledOnce)28 checkMessageSequence(t, client)29 t.end()30 }, CI ? 100 : 10)31})32test.cb('run multiple races in band', t => {33 const client = new RunnerClient()34 const fn1 = sinon.spy()35 const fn2 = sinon.stub().callsFake(() => Promise.resolve())36 const fn3 = sinon.spy()37 client.enqueueRace('foo', fn1)38 client.enqueueRace('bar', fn2)39 client.enqueueRace('baz', fn3)40 // Use setTimeout here because of Promise#then41 setTimeout(() => {42 t.true(fn1.calledOnce)43 t.true(fn2.calledAfter(fn1))44 t.true(fn3.calledAfter(fn2))45 checkMessageSequence(t, client)46 t.end()47 }, CI ? 100 : 10)48})49test.cb('handle exception in a race', t => {50 const client = new RunnerClient()51 const fnThrow = () => { throw new Error('error') }52 client.enqueueRace('foo', fnThrow, false)53 client.enqueueRace('bar', fnThrow, true)54 client.enqueueRace('baz', () => {}, false)55 setTimeout(() => {56 checkMessageSequence(t, client)57 t.end()58 }, CI ? 100 : 0)...
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!!