Best JavaScript code snippet using playwright-internal
TestReport.jsx
Source:TestReport.jsx
...127 return "";128 }129 const [ text ] = msg,130 [ ex, filePos ] = text.split( "\n" ),131 errMessage = TestReport.removeAnsiColors( ex.length > 10 ? ex : text );132 filePos && this.parseReportFailureLocationLine( filePos.trim(), errMessage.substr( 0, 80 ) );133 return errMessage;134 }135 /**-136 * Parse report lines like:137 * "at Object.somecrpa (/tmp/.runtime-test/specs/react-html5-form-valid.spec.js:46:7)"138 * @param String filePos139 * @param String message140 */141 parseReportFailureLocationLine( filePos, message ) {142 const re = /\((.*):(\d+):(\d+)\)$/,143 match = filePos.match( re );144 if ( !match ) {145 return;146 }147 const file = match[ 1 ],148 line = match[ 2 ];149 if ( !( file in this.reportedFailures ) ) {150 this.reportedFailures[ file ] = [];151 }152 this.reportedFailures[ file ].push({153 line,154 message155 });156 }157 /*eslint no-control-regex: 0*/158 static removeAnsiColors( msg ) {159 const re = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;160 return msg.replace( re, "" );161 }162 getDetails( testResults ) {163 // report.results.testResults164 return testResults.reduce( ( payload, entry ) => {165 // testResultItem: { console, failureMessage, leaks, numFailingTests, numPassingTests, numPendingTests,166 // perfStats, skipped, snapshot, sourceMaps, testFilePath, testResults }167 const carry = entry.testResults.reduce( ( carry, test ) => {168 // test: { ancestorTitles, duration, failureMessages, fullName, location, numPassingAsserts, status, title }169 const [ suite, describe ] = test.ancestorTitles,170 suiteId = `${ suite } (${ path.parse( entry.testFilePath ).base })`;171 carry[ suiteId ] = suiteId in carry ? carry[ suiteId ] : {};172 carry[ suiteId ][ describe ] = describe in carry[ suiteId ] ? carry[ suiteId ][ describe ] : [];...
logger.test.js
Source:logger.test.js
1'use strict';2const Taste = require('@jikurata/taste');3const Logger = require('../src/Logger.js');4const Record = require('../src/Record.js');5const Console = new Logger();6Console.printMessage = false;7Taste('Emitting record event')8.test('Emits record event when a record is created', (profile) => {9 Console.on('record', (record) => {10 profile['recordEventEmitted'] = true;11 profile['record'] = record;12 });13 Console.createRecord('info','foobar');14 Console.unregisterEvent('record');15})16.expect('recordEventEmitted').toBeTruthy()17.expect('record').toBeInstanceOf(Record);18Taste('Logger retains is record history')19.test('Logger creates a Record object and stores it in its history', (profile) => {20 Console.history.length = 0;21 Console.log('testing log history');22 Console.info('testing log history');23 Console.warn('testing log history');24 Console.error('testing log history');25 profile['logHistoryLength'] = Console.history.length;26})27.expect('logHistoryLength').toEqual(4);28 29Taste('Logger history limit')30.test('Logger deletes the oldest entries if past limit', (profile) => {31 Console.historyLimit = 3;32 for ( let i = 6; --i; ) Console.info(i);33 profile['restrictedHistoryLength'] = Console.history.length;34})35.expect('restrictedHistoryLength').toEqual(3);36Taste('Identifying data types')37.test(profile => {38 class Foo {39 constructor() {40 this.value = 'bar';41 }42 }43 profile.isNull = Console.getDataType(null);44 profile.isUndefined = Console.getDataType(undefined);45 profile.isBoolean = Console.getDataType(true);46 profile.isString = Console.getDataType('foobar');47 profile.isNumber = Console.getDataType(1);48 profile.isBigInt = Console.getDataType(1n);49 profile.isFunction = Console.getDataType(() => {});50 profile.isSymbol = Console.getDataType(Symbol('foo'));51 profile.isObject1 = Console.getDataType({1: 'foo', 2: 'bar'});52 profile.isObject2 = Console.getDataType([1,2,3]);53 profile.isObject3 = Console.getDataType(new Foo());54})55.expect('isNull').toEqual('null')56.expect('isUndefined').toEqual('undefined')57.expect('isBoolean').toEqual('boolean')58.expect('isString').toEqual('string')59.expect('isNumber').toEqual('number')60.expect('isBigInt').toEqual('bigint')61.expect('isFunction').toEqual('function')62.expect('isSymbol').toEqual('symbol')63.expect('isObject1').toEqual('object')64.expect('isObject2').toEqual('object')65.expect('isObject3').toEqual('object');66Taste('Formatting falsy inputs')67.test(profile => {68 profile.test1 = Console.removeANSIColors(Console.log(0).colored);69 profile.test2 = Console.removeANSIColors(Console.log(-1).colored);70 profile.test3 = Console.removeANSIColors(Console.log(null).colored);71 profile.test4 = Console.removeANSIColors(Console.log(undefined).colored);72 profile.test5 = Console.removeANSIColors(Console.log(false).colored);73})74.expect('test1').toEqual('0')75.expect('test2').toEqual('-1')76.expect('test3').toEqual('null')77.expect('test4').toEqual('undefined')78.expect('test5').toEqual('false');79Taste('Formatting string inputs')80.test(profile => {81 profile.test1 = Console.removeANSIColors(Console.log('foo', 'bar').colored);82 profile.test2 = Console.removeANSIColors(Console.log('foo\nbar').colored);83 profile.test3 = Console.removeANSIColors(Console.log('').colored);84 profile.test4 = Console.removeANSIColors(Console.log('', '').colored);85 profile.test5 = Console.removeANSIColors(Console.log(' ').colored);86 profile.test6 = Console.removeANSIColors(Console.log(' ').colored);87 profile.test7 = Console.removeANSIColors(Console.log('foo' + 'bar').colored);88 profile.test8 = Console.removeANSIColors(Console.log(typeof 42).colored);89})90.expect('test1').toEqual('foo bar')91.expect('test2').toEqual('foo\nbar')92.expect('test3').toEqual('')93.expect('test4').toEqual(' ')94.expect('test6').toEqual(' ')95.expect('test7').toEqual('foobar')96.expect('test8').toEqual('number');97Taste('Formatting number inputs')98.test(profile => {99 profile.test1 = Console.removeANSIColors(Console.log(0).colored);100 profile.test2 = Console.removeANSIColors(Console.log(1).colored);101 profile.test3 = Console.removeANSIColors(Console.log(1, 2, 3).colored);102 profile.test4 = Console.removeANSIColors(Console.log(-1).colored);103 profile.test5 = Console.removeANSIColors(Console.log(40 + 2).colored);104 profile.test6 = Console.removeANSIColors(Console.log(0n).colored);105 profile.test7 = Console.removeANSIColors(Console.log(1n).colored);106})107.expect('test1').toEqual('0')108.expect('test2').toEqual('1')109.expect('test3').toEqual('1 2 3')110.expect('test4').toEqual('-1')111.expect('test5').toEqual('42')112.expect('test6').toEqual('0n')113.expect('test7').toEqual('1n');114Taste('Formatting boolean inputs')115.test(profile => {116 profile.test1 = Console.removeANSIColors(Console.log(true).colored);117 profile.test2 = Console.removeANSIColors(Console.log(3 === 3).colored);118 profile.test3 = Console.removeANSIColors(Console.log(!true).colored);119 profile.test4 = Console.removeANSIColors(Console.log(true, false).colored);120})121.expect('test1').toEqual('true')122.expect('test2').toEqual('true')123.expect('test3').toEqual('false')124.expect('test4').toEqual('true false');125Taste('Formatting array inputs')126.test(profile => {127 profile.test1 = Console.removeANSIColors(Console.log([1, 2, 3]).colored);128 profile.test2 = Console.removeANSIColors(Console.log([1, 'foo']).colored);129 profile.test3 = Console.removeANSIColors(Console.log([['a', 'b'], [1,2]]).colored);130})131.expect('test1').toEqual('[ 1, 2, 3 ]')132.expect('test2').toEqual('[ 1, \'foo\' ]')133.expect('test3').toEqual('[ [ \'a\', \'b\' ], [ 1, 2 ] ]');134Taste('Formatting symbol inputs')135.test(profile => {136 profile.test1 = Console.removeANSIColors(Console.log(Symbol(null)).colored);137 profile.test2 = Console.removeANSIColors(Console.log(Symbol(undefined)).colored);138 profile.test3 = Console.removeANSIColors(Console.log(Symbol('')).colored);139 profile.test4 = Console.removeANSIColors(Console.log(Symbol('foo')).colored);140 profile.test5 = Console.removeANSIColors(Console.log(Symbol(1)).colored);141})142.expect('test1').toEqual('Symbol(null)')143.expect('test2').toEqual('Symbol()')144.expect('test3').toEqual('Symbol()')145.expect('test4').toEqual('Symbol(foo)')146.expect('test5').toEqual('Symbol(1)');147Taste('Formatting object inputs')148.test(profile => {149 class Foo {150 constructor() {151 this.a = 1;152 this.b = '2';153 }154 }155 class Bar extends Foo {156 constructor() {157 super();158 this.c = true;159 this.d = null;160 }161 }162 profile.test1 = Console.removeANSIColors(Console.log({}).colored);163 profile.test2 = Console.removeANSIColors(Console.log({1: 'foo', a: 'bar'}).colored);164 profile.test3 = Console.removeANSIColors(Console.log({a: [1,2], b: null}).colored);165 profile.test4 = Console.removeANSIColors(Console.log(Foo).colored);166 profile.test5 = Console.removeANSIColors(Console.log(Bar).colored);167 profile.test6 = Console.removeANSIColors(Console.log(new Foo()).colored);168 profile.test7 = Console.removeANSIColors(Console.log(new Bar()).colored);169})170.expect('test1').toEqual('{ }')171.expect('test2').toEqual('{ 1: \'foo\', a: \'bar\' }')172.expect('test3').toEqual('{ a: [ 1, 2 ], b: null }')173.expect('test4').toEqual('[class Foo]')174.expect('test5').toEqual('[class Bar extends Foo]')175.expect('test6').toEqual('Foo { a: 1, b: \'2\' }')176.expect('test7').toEqual('Bar { a: 1, b: \'2\', c: true, d: null }');177Taste('Formatting function inputs')178.test(profile => {179 function foo() {}180 const bar = () => {}181 profile.test1 = Console.removeANSIColors(Console.log(foo).colored);182 profile.test2 = Console.removeANSIColors(Console.log(bar).colored);183 profile.test3 = Console.removeANSIColors(Console.log(function() {}).colored);184 profile.test4 = Console.removeANSIColors(Console.log(() => { return 'test'; }).colored);185})186.expect('test1').toEqual('[Function: foo]')187.expect('test2').toEqual('[Function: bar]')188.expect('test3').toEqual('[Function (anonymous)]')189.expect('test4').toEqual('[Function (anonymous)]');190Taste('Formatting circular references')191.test(profile => {192 class A {193 constructor() {194 this.a = 1;195 this.obj = new B(this);196 }197 }198 class B {199 constructor(ref) {200 this.b = 1;201 this.ref = ref;202 }203 }204 const arrayC = [1, 2, 3];205 const arrayD = ['a', 'b', arrayC];206 arrayC.push(arrayD);207 profile.test1 = Console.removeANSIColors(Console.log(new A()).colored);208 profile.test2 = Console.removeANSIColors(Console.log(arrayD).colored);209})210.expect('test1').toEqual('A { a: 1, obj: B { b: 1, ref: [Circular A] } }')211.expect('test2').toEqual('[ \'a\', \'b\', [ 1, 2, 3, [Circular Array] ] ]');212Taste('Formatting arrays in a log')213.test('Prints [ 1,2 ]',(profile) => {214 const a = [1,2];215 profile['formattedArray'] = Console.info(a).message;216})217.expect('formattedArray').toMatch('[ 1, 2 ]');218Taste('Formatting objects in a log')219.test('Prints { foo: 1, bar: 2 }', (profile) => {220 const o = {foo: 1, bar: 2};221 profile['formattedObject'] = Console.info(o).message;222})223.expect('formattedObject').toMatch('{ foo: 1, bar: 2 }');224Taste('Formatting multiple arguments in a log')225.test('Prints 1 2 3 and a b c', (profile) => {226 const v1 = 1;227 const v2 = 2;228 const v3 = 3;229 const v4 = 'a';230 const v5 = 'b';231 const v6 = 'c';232 profile['formattedArgs'] = Console.info(v1, v2, v3, 'and', v4, v5, v6).message;233})...
Logger.js
Source:Logger.js
1'use strict';2const EventEmitter = require('@jikurata/events');3const {format} = require('util');4const State = require('./State.js');5const Record = require('./Record.js');6let instance = null;7class Logger extends EventEmitter {8 constructor() {9 if ( instance ) return instance;10 super();11 instance = this;12 Object.defineProperty(this, 'state', {13 value: new State({14 'HISTORY_LIMIT': 50,15 'COLOR': {16 'default': '\x1b[0m',17 'boolean': '\x1b[38;5;27m',18 'number': '\x1b[38;5;64m',19 'string': '\x1b[38;5;130m',20 'text': '\x1b[38;5;250m',21 'array': '\x1b[38;5;248m',22 'object': '\x1b[38;5;248m',23 'function': '\x1b[38;5;30m',24 'bigint': '\x1b[38;5;179m', 25 'symbol': '\x1b[38;5;99m',26 'property': '\x1b[38;5;75m',27 'undefined': '\x1b[38;5;240m',28 'null': '\x1b[38;5;240m',29 'circular': '\x1b[38;5;171m',30 'info': '\x1b[38;5;28m',31 'warn': '\x1b[38;5;100m',32 'error': '\x1b[38;5;88m',33 'timestamp': '\x1b[38;5;240m'34 },35 'USE_COLORS': true,36 'PRINT_MESSAGE': true,37 'SHOW_TIMESTAMP': true,38 'SHOW_TIMEZONE': false,39 'EMIT_RECORD': true40 }),41 enumerable: true,42 writable: false,43 configurable: false44 });45 Object.defineProperty(this, 'history', {46 value: [],47 enumerable: true,48 writable: false,49 configurable: false50 });51 }52 /**53 * @param {String} type54 * @param {...Any} args 55 */56 _print(type, ...args) {57 const r = this.createRecord(type, ...args);58 this.printRecord(r);59 return r;60 }61 /**62 * @param {...Any} args63 * @returns {Record}64 */65 log(...args) {66 return this._print('info', ...args);67 }68 /**69 * @param {...Any} args70 * @returns {Record}71 */72 info(...args) {73 return this._print('info', ...args);74 }75 /**76 * @param {...Any} args77 * @returns {Record}78 */79 warn(...args) {80 return this._print('warn', ...args);81 }82 /**83 * @param {...Any} args84 * @returns {Record}85 */86 error(...args) {87 return this._print('error', ...args);88 }89 /**90 * Create a Record object91 * @param {String} type 92 * @param {...Any} args 93 * @returns {Record}94 */95 createRecord(type, ...args) {96 const t = Date.now();97 const s = this.formatColors(args);98 const record = new Record({99 type: type,100 timestamp: t,101 message: this.removeANSIColors(s),102 colored: s103 });104 // Add record to history105 this.history.push(record);106 // Remove the first entry while the current size exceeds the history limit107 let count = this.history.length - this.state.HISTORY_LIMIT;108 if ( count > 0 ) {109 for ( count; count--; ) {110 this.history.shift();111 }112 }113 if ( this.emitRecord ) {114 this.emit('record', record);115 }116 return record;117 }118 /**119 * Format a record to be printed in console120 * @param {Record} record 121 */122 printRecord(record) {123 if ( !this.printMessage ) {124 return;125 }126 let s = `# `;127 if ( this.showTimestamp ) {128 const ts = new Date(record.timestamp).toString().split(' ').slice(1, (this.showTimezone) ? 6 : 5).join(' ');129 s += `${this.getColor('timestamp')}[${ts}] `;130 }131 s += (this.useColors) ? record.colored : record.message + '\n';132 133 switch(record.type) {134 case 'info': 135 s = `${this.getColor('info')}${s}`;136 return console.info(s);137 case 'warn': 138 s = `${this.getColor('warn')}${s}`;139 return console.warn(s);140 case 'error': 141 s = `${this.getColor('error')}${s}`;142 return console.error(s);143 default: 144 s = `${this.getColor('default')}${s}`145 return console.log(s);146 }147 }148 /**149 * Stringify arguments and append color codes to data types150 * @param {Array<Any>} args151 * @returns {String} 152 */153 formatColors(args) {154 const objStack = [];155 const formatter = (arg) => {156 // Check arg's data type157 const type = this.getDataType(arg);158 const argStr = format(arg);159 if ( type === 'object' ) {160 const objectClass = (arg.constructor && arg.constructor.name) ? arg.constructor.name : '';161 // Check for cyclic references162 if ( objStack.indexOf(arg) === -1 ) {163 objStack.push(arg);164 let substr = '';165 // Format error objects166 if ( arg instanceof Error ) {167 if ( arg.stack ) {168 const split = arg.stack.split(':');169 for ( let i = 0; i < split.length; ++i ) {170 if ( i === 0 ) {171 substr += `${this.getColor('error')}`;172 }173 else if ( i === 1 ) {174 substr += `${this.getColor('text')}`;175 }176 substr += `${split[i]}:`;177 }178 }179 else {180 substr = `${this.getColor('error')}${arg.name}: ${this.getColor('text')}${arg.message}`;181 }182 }183 else if ( Array.isArray(arg) ) {184 // Format an array185 substr = `${this.getColor('array')}[ `;186 for ( let i = 0; i < arg.length; ++i ) {187 substr += `${formatter(arg[i])}`;188 substr += (i < arg.length - 1) ? `${this.getColor('array')}, ` : ' ';189 }190 substr += `${this.getColor('array')}]`;191 }192 else {193 // Format a generic object type194 substr = `${this.getColor('object')}${(objectClass && objectClass !== 'Object') ? objectClass + ' ' : ''}{ `;195 const keys = Object.keys(arg);196 for ( let i = 0; i < keys.length; ++i ) {197 const key = keys[i];198 const value = arg[key];199 substr += `${this.getColor('property')}${key}: ${formatter(value)}`;200 substr += (i < keys.length - 1) ? `${this.getColor('object')}, ` : ' ';201 }202 substr += `${this.getColor('object')}}`;203 }204 // Format complete for current object, remove from stack205 objStack.pop();206 return substr;207 }208 else {209 // Object is a cyclic reference210 return `${this.getColor('circular')}[Circular ${(objectClass)}]`;211 }212 }213 else if ( type === 'string' ) {214 // If the string is an object value, use the string color code215 if ( objStack.length ) {216 return `${this.getColor('string')}\'${argStr}${this.getColor('string')}\'`;217 }218 return `${this.getColor('text')}${argStr}`;219 }220 else {221 return `${this.getColor(type)}${argStr}`;222 }223 }224 let a = [];225 for ( let i = 0; i < args.length; ++i ) {226 a.push(formatter(args[i]));227 }228 return format(...a);229 }230 /**231 * Return the data type of arg232 * @param {Any} arg233 * @returns {String}234 */235 getDataType(arg) {236 if ( arg === null ) {237 return 'null';238 }239 else if ( arg === undefined ) {240 return 'undefined';241 }242 else if ( arg && typeof arg === 'object' ) {243 return 'object';244 }245 else {246 return typeof arg;247 }248 }249 /**250 * Get an ANSI color code for the corresponding type251 * @param {String} color 252 * @returns {String}253 */254 getColor(type) {255 return (this.state.COLOR.hasOwnProperty(type)) ? this.state.COLOR[type] : this.state.COLOR.text;256 }257 /**258 * Remove all ANSI escape attribute codes259 * @param {String} s 260 */261 removeANSIColors(s) {262 const matches = s.match(/\x1b\[[\d|;]*m/gmi);263 if ( matches ) {264 for ( let i = 0; i < matches.length; ++i ) {265 s = s.replace(matches[i], '');266 }267 }268 return s;269 }270 get historyLimit() {271 return this.state.HISTORY_LIMIT;272 }273 set historyLimit(num) {274 if ( num > -1 ) this.state.HISTORY_LIMIT = num;275 }276 get useColors() {277 return this.state.USE_COLORS;278 }279 set useColors(bool) {280 this.state.USE_COLORS = !!bool;281 }282 get printMessage() {283 return this.state.PRINT_MESSAGE;284 }285 set printMessage(bool) {286 this.state.PRINT_MESSAGE = !!bool;287 }288 get showTimestamp() {289 return this.state.SHOW_TIMESTAMP;290 }291 set showTimestamp(bool) {292 this.state.SHOW_TIMESTAMP = !!bool;293 }294 get showTimezone() {295 return this.state.SHOW_TIMEZONE;296 }297 set showTimezone(bool) {298 this.state.SHOW_TIMEZONE = !!bool;299 }300 get emitRecord() {301 return this.state.EMIT_RECORD;302 }303 set emitRecord(bool) {304 this.state.EMIT_RECORD = !!bool;305 }306}...
service.js
Source:service.js
1const { Server } = require('socket.io');2const { createServer } = require("http");3const { spawn } = require('child_process');4const httpServer = createServer();5const fs = require('fs')6const { v4: uuidv4 } = require('uuid');7const dotenv = require('dotenv');8var path = require('path');9const local_dir = './resources/temp'10dotenv.config();11spawn(12 `cd ${process.env.ELIXIR_DIR} && 13 poetry run gradualelixir configure --working-dir ${path.resolve(__dirname)}/resources/temp`, 14 { shell: true }15);16const io = new Server(httpServer, {17 cors: {18 origin: "http://localhost:3000",19 credentials: true20 }21});22const removeANSIColors = (str) => {23 return str.replace(24 /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,25 ''26 );27}28const events = [29 {30 name: 'typecheck static',31 command: (filename) => `cd ${process.env.ELIXIR_DIR} && poetry run gradualelixir type_check --static ${filename}`32 },33 {34 name: 'typecheck',35 command: (filename) => `cd ${process.env.ELIXIR_DIR} && poetry run gradualelixir type_check ${filename}`36 },37 {38 name: 'annotate types',39 command: (filename) => `cd ${process.env.ELIXIR_DIR} && poetry run gradualelixir type_check --annotate types ${filename}`,40 fileSubfix: '_types.ex'41 },42 {43 name: 'annotate casts',44 command: (filename) => `cd ${process.env.ELIXIR_DIR} && poetry run gradualelixir type_check --annotate casts ${filename}`,45 fileSubfix: '_casts.ex'46 }47]48io.on('connection', socket => {49 events.forEach((ev) => {50 try { 51 socket.on(ev.name, (arg) => {52 socket.emit('lock')53 const uuid = uuidv4()54 const filename = `${uuid}.ex`55 const path = `${local_dir}/${filename}`56 fs.writeFileSync(path, arg, () => {})57 const command = spawn(ev.command(filename), { shell: true });58 command.stderr.on('data', (data) => {59 socket.emit('input', {60 code: removeANSIColors(data.toString()),61 isElixir: false62 })63 })64 command.stdout.on('data', (data) => {65 if(!fs.existsSync(`${local_dir}/${uuid}${ev.fileSubfix}`)) {66 socket.emit('input', {67 code: removeANSIColors(data.toString()),68 isElixir: false69 })70 }71 })72 command.stdout.on('close', () => {73 fs.unlink(path, () => {})74 if(ev.fileSubfix) {75 const auxFile = `${local_dir}/${uuid}${ev.fileSubfix}`76 if (fs.existsSync(auxFile)) {77 const content = fs.readFileSync(auxFile, {encoding:'utf8', flag:'r'});78 socket.emit('input', {79 code: content,80 isElixir: true81 })82 fs.unlink(auxFile, () => {})83 }84 }85 socket.emit('unlock')86 })87 })88 }89 catch (err) {90 io.emit('input', err)91 socket.emit('unlock')92 }93 })94});95io.on('disconnect', () => {96 console.log('bye')97})...
status.json.js
Source:status.json.js
...23});24router.get('/', function (req, res) {25 shelljs.exec('grep "error" ' + __dirname + '/../logs/log | tail -n 1',26 function (exitcode, logOutput) {27 var lastError = utils.removeAnsiColors(logOutput);28 var lastErrorTimestamp = Math.round((new Date(lastError.split(' ')[0])).29 getTime()/1000);30 res.send(JSON.stringify({31 hostname: os.hostname(),32 uptime: os.uptime(),33 loadavg: os.loadavg(),34 totalmem: os.totalmem(),35 freemem: os.freemem(),36 processUptime: process.uptime(),37 mongoConnect: db.isConnect(),38 redisConnect: redis.status === "ready" ? true : false,39 lastError: lastError,40 lastErrorTimestamp: lastErrorTimestamp,41 gitShort: git.short,...
utils.js
Source:utils.js
1var crypto = require('crypto');2function randomToken (len) {3 if (!len) {4 len = 16;5 }6 return crypto.randomBytes(Math.ceil(len * 3 / 4))7 .toString('base64') // convert to base64 format8 .slice(0, len) // return required number of characters9 .replace(/\+/g, '0') // replace '+' with '0'10 .replace(/\//g, '0'); // replace '/' with '0'11}12exports.randomToken = randomToken;13function getRandomItem (items) {14 return items[Math.floor(Math.random()*items.length)];15}16exports.getRandomItem = getRandomItem;17function removeAnsiColors (string) {18 return string.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');19}...
Using AI Code Generation
1const { removeAnsiColors } = require('playwright-core/lib/utils/terminal');2const { test, expect } = require('@playwright/test');3test('test', async ({ page }) => {4 const title = await page.innerText('.navbar__inner .navbar__title');5 expect(removeAnsiColors(title)).toBe('Playwright');6});7### `removeAnsiColors(str)`8### `removeAnsiColors.stripColor(str)`9### `removeAnsiColors.hasColor(str)`10### `removeAnsiColors.hasAnsi(str)`11### `removeAnsiColors.hasAnsiColors(str)`12### `removeAnsiColors.hasAnsiCodes(str)`13### `removeAnsiColors.hasAnsiCodesOrMarkup(str)`14### `removeAnsiColors.hasAnsiMarkup(str)`
Using AI Code Generation
1const { removeAnsiColors } = require('playwright/lib/internal/util');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 const title = await page.title();8 console.log(`Title: ${removeAnsiColors(title)}`);9 await browser.close();10})();
Using AI Code Generation
1const { removeAnsiColors } = require('@playwright/test/lib/utils/terminal');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4 const title = await page.textContent('text=The most reliable end-to-end testing tool');5 console.log(title);6 console.log(removeAnsiColors(title));7});
Using AI Code Generation
1const { removeAnsiColors } = require('@playwright/test/lib/utils/terminal');2const { test } = require('@playwright/test');3const assert = require('assert');4test('removeAnsiColors', async ({}) => {5 const str = '\u001b[32mHello World';6 const result = removeAnsiColors(str);7 assert.strictEqual(result, 'Hello World');8});9 at Object.toBe (test.js:11:18)
Using AI Code Generation
1const { removeAnsiColors } = require('@playwright/test/lib/utils/terminal');2console.log(removeAnsiColors('\u001b[31mHello World!'));3### `isUnderTest()`4const { isUnderTest } = require('@playwright/test/lib/utils/utils');5console.log(isUnderTest());6### `setUnderTest()`7const { setUnderTest } = require('@playwright/test/lib/utils/utils');8setUnderTest();9### `createGuid()`10const { createGuid } = require('@playwright/test/lib/utils/utils');11console.log(createGuid());12### `createGuids()`13const { createGuids } = require('@playwright/test/lib/utils/utils');14console.log(createGuids(3));15### `isGuid()`16const { is
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.
Get 100 minutes of automation test minutes FREE!!