Best JavaScript code snippet using playwright-internal
conference.js
Source:conference.js
...24 if(window.RTCPeerConnection == undefined ) {25 alert('Use latest version of Chrome or Firefox');26 return null;27 }28 function sendMessageToServer(msg) {29 try {30 if(ws !=null || ws != undefined) {31 //console.log('SEND: ' + msg);32 ws.send(msg);33 }34 } catch(e) {35 console.error('exception in websocket send' + e);36 }37 }38 var proto = Conference.prototype;39 proto.mute = function(audio, video) {40 selfObj.rtc.mute(audio, video);41 }42 proto.unmute = function(audio, video) {43 selfObj.rtc.unmute(audio, video);44 }45 proto.getStream = function(audio,video) {46 console.log('audio feed conference', audio);47 console.log(' video feed conference', video);48 selfObj.rtc.getMedia(audio,video);49 }50 proto.switchStream = function(audioSource, videoSource) {51 var sess = confSess.plist[selfObj.wsId];52 if(sess) {53 selfObj.rtc.switchStream(sess, audioSource, videoSource);54 }55 }56 proto.startScrnShare = function(source) {57 if(this.confid && (confSess.state == 3)) {58 selfObj.rtc.getScreenMedia(source, function(err, stream) {59 if(err) {60 selfObj.emit('scrnStream', stream, err);61 return;62 }63 if(stream) {64 window.screenStream = screenStream = stream;65 stream.onended = function(e) {66 console.log('Stream ended ..', e);67 selfObj.stopScrnShare(stream);68 }69 var track = stream.getVideoTracks()[0];70 if(track) {71 track.onended = function(e){72 console.log(' Screenshare Vtrack ended state: '+track.readyState+' kind:'+track.kind, e);73 selfObj.stopScrnShare(stream);74 };75 }76 selfObj.emit('scrnStream', stream);77 if(confSess.via == 'ms') {78 var msg = {'type':'request','method':'addScreen', 'data':{'confid':selfObj.confid, 'name':selfObj.name}};79 sendMessageToServer(JSON.stringify(msg));80 return;81 }82 for(var id in confSess.plist) {83 var sess = confSess.plist[id];84 if(sess) {85 selfObj.rtc.addScreen(sess, stream);86 }87 }88 }89 });90 }91 }92 proto.stopScrnShare = function(lstream) {93 lstream = lstream || screenStream;94 if(lstream){95 if(confSess.state == 3) {96 if(confSess.via == 'ms') {97 var msg = {'type':'request','method':'removeScreen', 'data':{'confid':this.confid, 'name':this.name}};98 sendMessageToServer(JSON.stringify(msg));99 var sess = confSess.plist[selfObj.wsId+'_screen'];100 if(sess) {101 selfObj.rtc.close(sess);102 }103 } else {104 for(var id in confSess.plist) {105 var sess = confSess.plist[id];106 if(sess) {107 selfObj.rtc.removeScreen(sess, lstream);108 }109 }110 }111 }112 this.rtc.stopStream(lstream);113 selfObj.emit('stopScrn', '');114 window.screenStream = screenStream = null;115 }116 }117 proto.updateDetails = function(confid, data) {118 if(this.confid && (confSess.state == 3)) {119 data.confid = this.confid;120 var msg = {'type':'request','method':'updateDetails', 'wsId': this.wsId, 'data':data};121 sendMessageToServer(JSON.stringify(msg));122 }123 }124 proto.onCodeText = function(confid, data) {125 if(this.version < data.ver) {126 this.version = data.ver;127 }128 this.emit('ctext', confid, data.text, data.ver);129 }130 proto.sendCode = function(text) {131 if(this.confid && (confSess.state == 3)) {132 this.lastSent = new Date().getTime();133 this.version++;134 var msg = {'type':'request','method':'ctext', 'wsId': this.wsId, 'data':135 {'confid':this.confid, 'text': text, 'ver':this.version}};136 sendMessageToServer(JSON.stringify(msg));137 }138 }139 proto.sendDirectIM = function(confid, wsId, content) {140 if(confSess.state == 3) {141 var msg = {'type':'request','method':'directIM', 'data':{'confid':this.confid, 'name':this.name, 'wsId':wsId, 'content':content}};142 sendMessageToServer(JSON.stringify(msg));143 }144 }145 proto.sendIM = function(confid, content) {146 if(confSess.state == 3) {147 var msg = {'type':'request','method':'im', 'data':{'confid':this.confid, 'name':this.name, 'content':content}};148 sendMessageToServer(JSON.stringify(msg));149 }150 }151 proto.onRemoteCandidate = function(confid, data) {152 try {153 this.rtc.onCandidate(confSess.plist[data.wsId], data.candidate);154 } catch(e) {155 console.error('Exception in onRemoteCandidate :' , e);156 }157 }158 proto.onRemoteOffer = function(confid, data) {159 try {160 console.log('Got remote Offer');161 if(data.handle) {162 confSess.plist[data.handle] = {'handle' : data.handle, 'type':'listener'};163 this.rtc.onOffer(confSess.plist[data.handle], data.jsep);164 return;165 }166 confSess.plist[data.wsId] = {'wsId': data.wsId, 'name': data.name, 'role': data.role, 'screen':data.screen, 'isRecording': false};167 if(data.role == 'candidate') {168 confSess.cand = confSess.plist[data.wsId];169 confSess.remote = data.name;170 }171 this.rtc.onOffer(confSess.plist[data.wsId], data.jsep);172 this.emit('pjoined', confSess.plist[data.wsId]);173 } catch(e) {174 console.error('Exception in remoteOffer ' , e);175 }176 }177 proto.onRemoveStream = function(confid, data) {178 var sess = confSess.plist[data.wsId];179 if(sess) {180 this.rtc.close(sess);181 this.emit('removeStream', sess);182 }183 delete confSess.plist[data.wsId];184 }185 proto.onPartcipLeft = function(confid, data) {186 try {187 console.log('PLeft conf: ' + confid + ' wsid:' + data.wsId + ' name:' + data.name + ' role: ' + data.role);188 var sess = confSess.plist[data.wsId];189 if(sess) {190 this.rtc.close(sess);191 this.emit('removeStream', sess);192 this.emit('pleft', sess);193 }194 delete confSess.plist[data.wsId];195 }catch(e) {196 console.error('Exception in onPartcipLeft', e);197 }198 }199 proto.onAccepted = function(confid, data) {200 try {201 console.log('call accepted' + confid + ' cand: ' + confSess.cand.name + ' = '+ confSess.cand.wsId);202 this.rtc.createOffer(confSess.plist[confSess.cand.wsId]);203 this.emit('answered', confSess.cand);204 } catch(e) {205 console.error('Exception in onAccepted ' + e);206 }207 }208 proto.onJoinedRoom = function(confid, data) {209 try {210 confSess.plist = confSess.plist || {};211 var sess = {'wsId':selfObj.wsId, 'type':'publisher'};212 confSess.plist[selfObj.wsId] = sess;213 selfObj.rtc.createOffer(sess);214 if((selfObj.role == 'host') && (selfObj.type != 'unlisted')) {215 var sess2 = {'wsId':selfObj.wsId+'_tab', 'type':'publisher_tab'};216 confSess.plist[sess2.wsId] = sess2;217 selfObj.rtc.extStartSession(confSess.id, sess2.wsId, selfObj.role, selfObj.name, sess2);218 }219 } catch(e) {220 console.error('Exception in proto.onJoinedRoom', e);221 }222 }223 proto.onJoined = function(confid, data) {224 try {225 console.log('joined session state: ' + data.state + ' id:' + confid + ' status:' + data.status);226 if(data.status == 'failed' || data.confid == null) {227 console.log(data.status);228 console.log(data.confid);229 alert(data.reason || 'Expired link');230 return;231 }232 confSess.id = this.confid = data.confid;233 confSess.state = 3;234 confSess.plist = data.plist;235 // if(data.state == 3)236 if(data.via == 'ms') {237 } else {238 console.dir(confSess.plist);239 Object.keys(confSess.plist).forEach(function(key, index ) {240 var sess = confSess.plist[key];241 if(sess && (sess.wsId != selfObj.wsId)) {242 setTimeout(function() {243 selfObj.rtc.createOffer(sess);244 }, (1000 * index));245 }246 });247 }248 this.emit('joinedConf', data.confid, data.state, data.status || 'sucesses');249 if(data.text) this.emit('ctext', confid, data.text, data.ver);250 } catch(e) {251 console.error('Exception in onJoined', e);252 }253 }254 proto.answer = function(id) {255 var msg = {'type':'response', 'method':'incomingCall','wsId':this.wsId, 'data':{'confid':this.confid, 'state':3}};256 sendMessageToServer(JSON.stringify(msg));257 confSess.state = 3;258 }259 proto.onIncomingCall = function(id, data) {260 try {261 var from = data.from;262 /*263 if(confSess.isBusy == true) {264 var msg = {'type':'response', 'method':'incomingCall','wsId':this.wsId, 'data':{'confid':id, 'state':4, 'reason':'Already in call'}};265 sendMessageToServer(JSON.stringify(msg));266 console.warn('already in call, so rejecting incoming call from: ' + from);267 return;268 } */269 this.confid = id;270 confSess.id = id;271 confSess.type = 'incoming';272 confSess.remote = from;273 confSess.isBusy = true;274 confSess.state = 2;275 console.log('processing incoming call ' + this.confid + 'from:' + from);276 var msg = {'type':'response', 'method':'incomingCall','wsId':this.wsId, 'data':{'confid':this.confid, 'state':2, 'reason':'Ringing'}};277 sendMessageToServer(JSON.stringify(msg));278 this.emit('incomingcall', id, from);279 } catch(e) {280 console.error('Exception in incomingcall', e);281 }282 }283 proto.onConfStarted = function(data) {284 try {285 confSess = new Object();286 confSess.id = this.confid = data.confid;287 confSess.role = this.role;288 confSess.remote = '';289 confSess.cand = null;290 confSess.plist = new Array();291 confSess.state = 1;292 confSess.via = 'ms';293 this.emit('confstarted', data);294 } catch(e) {295 console.error('Exception in onConfSt ', e);296 }297 }298 proto.startConf = function(interviewType, interviewId, env, authheader) {299 var msg = {'type':'request', 'method':'startConf', 'data':{'name':this.name, 'role': this.role, 'confType':this.type, 'interviewTypeId':interviewType,'interviewId':interviewId, 'env':env, 'authheader':authheader, 'useragent': webrtcDetectedBrowser + '-' + webrtcDetectedVersion}};300 sendMessageToServer(JSON.stringify(msg));301 }302 proto.joinConf = function(confid, role, valid, interviewType, interviewId, env, authheader) {303 //console.log('join conf proto in confeerence, getting confid:' + confid + ' role is:' + this.role);304 this.confid = confid;305 this.interviewType = interviewType;306 this.interviewId = interviewId;307 confSess = new Object();308 confSess.role = this.role;309 confSess.type = this.type;310 confSess.cand = {};311 confSess.plist = [];312 confSess.state = 1;313 confSess.via = 'ms';314 var msg = {'type':'request', 'method':'joinConf', 315 'data':{'name':this.name, 'confid': this.confid, 'role': this.role, 'confType':confSess.type, 316 'interviewTypeId':interviewType,'interviewId' : interviewId, 'env':env, valid:valid, 'authheader':authheader, 'useragent': webrtcDetectedBrowser + '-' + webrtcDetectedVersion}};317 sendMessageToServer(JSON.stringify(msg));318 console.log('Joing conf r:' + this.role);319 }320 proto.leaveConf = function() {321 var msg = {'type':'request', 'method':'leaveConf', 'wsId':this.wsId, 'data':{'confid': this.confid, 'role': this.role}};322 sendMessageToServer(JSON.stringify(msg));323 confSess.state = 5;324 selfObj.stopScrnShare();325 cleanup(this.confid);326 }327 proto.uploader = function(source, data, pname) {328 try {329 if(source ) {330 var msg = {'type':'request', 'method':'stream', 'wsId':this.wsId, 'data':{'confid': this.confid, 'source':source, 'name': pname}};331 ws.send(JSON.stringify(msg));332 }333 console.log('source: ' + source, data)334 if(data != null)335 ws.send(data);336 } catch(e) {337 console.error('Exception in sendFileStream:', e);338 }339 }.bind(this);340 function cleanup(confid) {341 try {342 if(isRecording) {343 //stopRecording();344 }345 console.log('Cleaning the Call ######## ');346 if(screenStream) {347 selfObj.stopScrnShare();348 }349 var parent = document.getElementById("container");350 for(var id in confSess.plist) {351 var sess = confSess.plist[id];352 if(sess) {353 if(sess.wsId.indexOf('_tab')>0) {354 selfObj.rtc.extStopSession(confid, sess.wsId, sess);355 } else {356 selfObj.rtc.close(sess);357 selfObj.emit('removeStream', sess);358 if(sess.stream2) {359 selfObj.emit('removeStream', sess, sess.stream2);360 }361 }362 }363 delete confSess.plist[id];364 }365 delete confSess.plist;366 confSess.plist = [];367 confSess.id = '';368 confSess.type = '';369 confSess.remote = '';370 confSess.state = 0;371 confSess.isBusy = false;372 confSess.iceDone = false;373 selfObj.confid = null;374 selfObj.emit('hangup', confid);375 } catch(e) {376 console.error('Exception in cleanup' + e);377 }378 }379 proto.speaking = function(is_speaking){380 var msg = {'type':'request', 'method':'speaking', 'wsId':this.wsId, 'data': {'confid':this.confid, 'wsId':this.wsId, 'speaking':is_speaking}};381 sendMessageToServer(JSON.stringify(msg));382 }383 proto.hangup = function(){384 try {385 var msg = {'type':'request', 'method':'hangup', 'wsId':this.wsId, 'data':{'confid':this.confid, 'state': (confSess.state > 2)?5:4}};386 sendMessageToServer(JSON.stringify(msg));387 selfObj.stopScrnShare();388 confSess.state = 5;389 cleanup(this.confid);390 } catch(e) {391 console.error('Exception in hangup: ' + e);392 console.dir(confSess);393 }394 }395 proto.register = function() {396 console.log('Registering :' + this.name + 'UA: ' + webrtcDetectedBrowser + '_' +webrtcDetectedVersion);397 var msg = {'type':'request', 'method':'register', 'data':398 {'name':this.name, 'role': this.role, 'sessionId':session, 'useragent': webrtcDetectedBrowser + '-' + webrtcDetectedVersion}};399 sendMessageToServer(JSON.stringify(msg));400 }401 proto.onMessage = function(msg) {402 try {403 if(typeof msg === "string"){404 var json = JSON.parse(msg);405 var data = json.data;406 //console.log('RECV: type:' + json.type + ' method:' + json.method + ' Reason:' + ((data && data.reason)? data.reason:''));407 if(json.type == 'request') {408 switch(json.method){409 case 'ctext' : {410 this.onCodeText(data.confid, data);411 }412 break;413 case 'incomingCall': {414 selfObj.onIncomingCall(data.confid, data);415 }416 break;417 case 'activeCall':418 case 'speaking':419 case 'updateDetails':420 case 'delCall': {421 this.emit(json.method, data);422 }423 break;424 case 'addBuddy':425 case 'delCand':426 case 'addAdmin':427 case 'delBuddy': {428 this.emit(json.method, data.wsId, data.name);429 }430 break;431 case 'dimMsg': {432 this.emit('dimMsg', data);433 }434 break;435 case 'imMsg' : {436 this.emit('imMsg', data.name, data.content);437 }438 break;439 case 'videolist': {440 this.emit('videolist', data.name, data.file);441 }442 break;443 case 'pleft': {444 this.onPartcipLeft(data.confid, data);445 }446 break;447 case 'removestream': {448 this.onRemoveStream(data.confid, data);449 }450 break;451 case 'offer': {452 this.onRemoteOffer(data.confid, data);453 }454 break;455 case 'reoffer': {456 this.rtc.onReOffer(confSess.plist[data.wsId], data.jsep);457 }458 break;459 case 'answer': {460 this.rtc.onAnswer(confSess.plist[data.wsId], data.jsep, confSess.id);461 }462 break;463 case 'reanswer': {464 this.rtc.onReAnswer(confSess.plist[data.wsId], data.jsep, confSess.id);465 }466 break;467 case 'candidate': {468 this.onRemoteCandidate(data.confid, data);469 }470 break;471 default:472 console.log('unhadled request ' + json.method);473 }474 } else if(json.type == 'response') {475 switch(json.method){476 case 'ctext' : {477 }478 break;479 case 'register': {480 try {481 this.wsId = json.wsId;482 console.log('registered with id: ' + this.wsId);483 data.wsId = this.wsId;484 this.emit('connected', data);485 } catch(e) {486 console.error('Execp reg resp', e);487 }488 }489 break;490 case 'startConf': {491 try {492 this.wsId = json.wsId;493 data.wsId = this.wsId;494 this.onConfStarted(data);495 confSess.state = 3;496 } catch(e) {497 console.error('Execp startConf resp', e);498 }499 }500 break;501 case 'im':502 case 'directIM':503 console.log(' msg recv im resp');504 break;505 case 'call':506 case 'callstatus':507 case 'confstatus':{508 if(data.state <= 2) {509 // Trying & Ringing510 } else if(data.state == 3) { // accepted511 confSess.state = 3;512 this.onAccepted(data.confid, data);513 } else if(data.state > 3) {514 console.log('state:' + data.state + ' Reason: ' + data.reason);515 cleanup(data.confid);516 }517 }518 break;519 case 'joinConf': {520 this.wsId = json.wsId;521 this.onJoined(data.confid, data);522 }523 break;524 case 'joinedRoom': {525 this.onJoinedRoom(data.confid, data);526 }527 break;528 case 'addScreen': {529 var sess = {'wsId':selfObj.wsId+'_screen', 'type':'publisher_screen'};530 confSess.plist[sess.wsId] = sess;531 selfObj.rtc.createOffer(sess);532 }533 break;534 case 'addTab' : {535 var sess = {'wsId':selfObj.wsId+'_tab', 'type':'publisher_tab'};536 confSess.plist[sess.wsId] = sess;537 selfObj.rtc.requestTabOffer(sess, confSess.id);538 }539 break540 case 'stream': {541 console.log('file submit sucesses ' + data.file);542 //document.getElementById("submitB").textContent = "Uploaded";543 }544 break;545 case 'answer': {546 this.rtc.onAnswer(confSess.plist[data.wsId], data.jsep, confSess.id);547 }548 break;549 default:550 console.log('unhadled response ' + json.method);551 }552 }553 }554 } catch(e) {555 console.error('Exception in onMessage method:' + json.method, e);556 }557 }558 proto.mutep = function(stream, audio, video) {559 selfObj.rtc.mutep(stream, audio, video);560 }561 proto.unmutep = function(stream, audio, video) {562 selfObj.rtc.unmutep(stream, audio, video);563 }564 proto.connect = function() {565 try {566 ws = new WebSocket(this.url, protocol);567 ws.onopen = function() {568 isConnected = true;569 console.log('websocket opened');570 // setTimeout(selfObj.register, 500);571 selfObj.emit('connected', null);572 // selfObj.rtc.getMedia(); //comment here573 };574 ws.onclose = function() {575 console.log('Webscoket closed');576 isConnected = false;577 ws = null;578 }579 ws.onerror = function(e) {580 console.error('error in websocket connection url: ' + nodeurl + ' e:' + e);581 isConnected = false;582 }583 ws.onmessage = function(event) {584 try {585 if(typeof event.data == 'string') {586 selfObj.onMessage(event.data);587 } else {588 selfObj.onInfileData(event.data);589 }590 } catch(e) {591 console.error('Exception in ws message ' + e);592 }593 }594 } catch(e) {595 console.error('Exception in connect', e);596 }597 }598 proto.on = function(name, cb) {599 try { this.ee.on(name, cb);600 } catch(e) { console.error("[conf:on] excep ", e);601 }602 }603 proto.emit = function(event) {604 this.ee.emit.apply(this.ee, arguments);605 }606 this.rtc.on('offer', function(sess, jsep) {607 var msg = {'type':'request', 'method':'offer', 'wsId': selfObj.wsId,608 'data':{'confid': selfObj.confid, 'wsId': sess.wsId, 'handle':sess.handle, 'type': sess.type, 'jsep':jsep}};609 sendMessageToServer(JSON.stringify(msg));610 });611 this.rtc.on('reoffer', function(sess, jsep) {612 var msg = {'type':'request', 'method':'reoffer', 'wsId': selfObj.wsId,613 'data':{'confid': selfObj.confid, 'wsId': sess.wsId, 'handle':sess.handle, 'jsep':jsep}};614 sendMessageToServer(JSON.stringify(msg));615 });616 this.rtc.on('answer', function(sess, jsep) {617 var msg = {'type':'request', 'method':'answer', 'wsId': selfObj.wsId,618 'data':{'confid': selfObj.confid, 'wsId': sess.wsId, 'handle':sess.handle, 'jsep':jsep}};619 sendMessageToServer(JSON.stringify(msg));620 });621 this.rtc.on('reanswer', function(sess, jsep) {622 var msg = {'type':'request', 'method':'reanswer', 'wsId': selfObj.wsId,623 'data':{'confid': selfObj.confid, 'wsId': sess.wsId, 'handle':sess.handle, 'jsep':jsep}};624 sendMessageToServer(JSON.stringify(msg));625 });626 this.rtc.on('candidate', function(sess, candidate) {627 var msg = {'type':'request', 'method':'candidate', 'wsId': selfObj.wsId,628 'data':{'confid': selfObj.confid, 'wsId': sess.wsId, 'handle':sess.handle, 'type': (sess.type?sess.type:'listener'), 'candidate': candidate}};629 sendMessageToServer(JSON.stringify(msg));630 });631 this.rtc.on('stream', function( stream) {632 // selfObj.register();633 selfObj.emit('stream', stream);634 });635 this.rtc.on('rstream', function(sess, stream) {636 selfObj.emit('remStream', sess, stream);637 });638 this.rtc.on('removestream', function(sess, stream) {639 selfObj.emit('removeStream', sess, stream);640 });641 this.rtc.on('tready', function(sess) {642 var msg = {'type':'request','method':'addTab', 'data':{'confid':selfObj.confid, 'name':selfObj.name}};643 sendMessageToServer(JSON.stringify(msg));644 selfObj.emit('recStarted', sess);645 });646 this.rtc.on('tended', function(sess, stream) {647 var msg = {'type':'request','method':'removeTab', 'data':{'confid':selfObj.confid, 'name':selfObj.name}};648 sendMessageToServer(JSON.stringify(msg));649 });650 this.rtc.on('icecomp', function(sess) {651 confSess.iceDone = true;652 });653 this.rtc.on('error', function(sess) {654 });...
niRemoteUpdateService.Test.Local.js
Source:niRemoteUpdateService.Test.Local.js
...58 versionMessage.version = preferredVersion;59 socket.addEventListener('close', function () {60 done();61 });62 updateService.sendMessageToServer(JSON.stringify(versionMessage));63 });64 });65 describe('receives a status update message', function () {66 afterEach(function () {67 expect(updateService.getBlocked()).toBe(true);68 });69 it('that indicates the VI is stopped and blocks the UI', function (done) {70 var statusMessage = {71 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,72 data: {73 status: 'stopped'74 }75 };76 socket.addEventListener('message', function () {77 done();78 });79 updateService.sendMessageToServer(JSON.stringify(statusMessage));80 });81 it('that indicates the VI is paused and blocks the UI', function (done) {82 var statusMessage = {83 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,84 data: {85 status: 'paused'86 }87 };88 socket.addEventListener('message', function () {89 done();90 });91 updateService.sendMessageToServer(JSON.stringify(statusMessage));92 });93 it('that indicates the VI has an error with a message and blocks the UI', function (done) {94 var statusMessage = {95 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,96 errorMessage: 'This is an error message',97 data: {98 status: 'error',99 }100 };101 socket.addEventListener('message', function () {102 done();103 });104 updateService.sendMessageToServer(JSON.stringify(statusMessage));105 });106 it('that indicates the VI has an error without a message and blocks the UI', function (done) {107 var statusMessage = {108 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,109 data: {110 status: 'error'111 }112 };113 socket.addEventListener('message', function () {114 done();115 });116 updateService.sendMessageToServer(JSON.stringify(statusMessage));117 });118 });119 describe('receives a status update message', function () {120 afterEach(function () {121 expect(updateService.getBlocked()).toBe(false);122 });123 it('that indicates the VI is running and unblocks the UI', function (done) {124 var statusMessage = {125 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,126 data: {127 status: 'running'128 }129 };130 socket.addEventListener('message', function () {131 done();132 });133 updateService.sendMessageToServer(JSON.stringify(statusMessage));134 });135 it('with an invalid status', function (done) {136 var statusMessage = {137 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,138 data: {139 status: 'invalid'140 }141 };142 socket.addEventListener('message', function () {143 done();144 });145 updateService.sendMessageToServer(JSON.stringify(statusMessage));146 });147 });148 describe('receives a running status update when the UI is blocked', function () {149 beforeEach(function(done) {150 var stoppedStatusMessage = {151 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,152 data: {153 status: 'stopped'154 }155 };156 socket.addEventListener('message', function () {157 done();158 });159 updateService.sendMessageToServer(JSON.stringify(stoppedStatusMessage));160 });161 afterEach(function() {162 expect(updateService.getBlocked()).toBe(false);163 });164 it('and it unblocks the UI', function (done) {165 var runningStatusMessage = {166 messageType: updateMessageTypeEnum.VI_STATE_UPDATE,167 data: {168 status: 'running'169 }170 };171 socket.addEventListener('message', function () {172 done();173 });174 updateService.sendMessageToServer(JSON.stringify(runningStatusMessage));175 });176 });177 describe('receives a property update message', function() {178 beforeEach(function () {179 var frontPanelControlId = 'id109';180 var frontPanelControlKind = NationalInstruments.HtmlVI.ControlKindEnum.NI_GAUGE;181 var data = {182 value: 1183 };184 this.expectedMessage = {185 messageType: updateMessageTypeEnum.PROPERTY_UPDATE,186 viName: viName,187 frontPanelControlId: frontPanelControlId,188 frontPanelControlKind: frontPanelControlKind,189 data: data190 };191 this.updateMessage = new NationalInstruments.HtmlVI.UpdateMessage();192 this.updateMessage.initAsPropertyUpdateMessage(viName, frontPanelControlId, frontPanelControlKind, data);193 spyOn(console, 'log');194 });195 afterEach(function () {196 expect(console.log).toHaveBeenCalledWith(JSON.stringify(this.expectedMessage));197 });198 it('and applies the property update', function (done) {199 socket.addEventListener('message', function () {200 done();201 });202 updateService.sendMessageToServer(JSON.stringify(this.updateMessage));203 });204 });...
main.js
Source:main.js
...30 fillTopicSelect();31 registerUser(publicTopic);32 connectingElement.classList.add('hidden');33 getLast10MessagesFromTopic(publicTopic);34 sendMessageToServer('Joining', 'JOIN', topicInput.value);35 messageInput.focus()36 });37 }38 event.preventDefault();39}40function disconnect() {41 if (stompClient !== null) {42 stompClient.disconnect(function() {43 console.log("Client disconnected");44 });45 stompClient = null;46 }47}48function subscribeToChatMessage(topicId){49 stompClient.subscribe('/topic/chat/sended/' + topicId, function (payload) {50 console.log('### Subscribed to topic ' + topicId);51 onMessageReceived(payload);52 });53}54function unSubscribeAll(){55 for (const sub in stompClient.subscriptions) {56 if (stompClient.subscriptions.hasOwnProperty(sub)) {57 stompClient.unsubscribe(sub);58 }59 }60}61function fillTopicSelect() {62 stompClient.subscribe('/app/chat/topics/subscribe', function (response) {63 var topics = JSON.parse(response.body);64 var select = document.querySelector('#topics-selector');65 66 for (var i = 0; i < topics.length; i += 1) {67 var option = document.createElement("option");68 option.text = topics[i];69 option.value = i;70 select.add(option);71 }72 });73}74function getLast10MessagesFromTopic(topicId) {75 stompClient.subscribe('/app/chat/messages/subscribe/' + topicId, onMessageReceived);76}77function send(event) {78 var messageContent = messageInput.value.trim();79 sendMessageToServer(messageContent, 'CHAT', topicInput.value);80 81 messageInput.value = '';82 event.preventDefault();83}84function sendMessageToServer(message, type, topicValue){85 if(message && stompClient) {86 87 var chatMessage = {88 user: username,89 content: message,90 type: type,91 topicId: topicValue92 }; 93 stompClient.send("/app/chat/send/" + topicValue, {}, JSON.stringify(chatMessage));94 }95}96function registerUser(topicId){97 stompClient.send("/app/chat/register/" + topicId, {},98 JSON.stringify({user: username, type: 'JOIN'})99 )100}101function onMessageReceived(payload) {102 var message = JSON.parse(payload.body);103 104 105 if(message.length > 0){106 for (var i = 0; i < message.length; i += 1) {107 writeMessage(message[i]); 108 writeRanking(message[i]); 109 }110 } else {111 writeMessage(message);112 writeRanking(message); 113 }114 115 sortRanking();116 117}118function writeMessage(message){119 if(message === undefined || message.length === 0 ){120 return;121 }122 123 var messageElement = document.createElement('li');124 125 if(message.type === 'JOIN') {126 messageElement.classList.add('event-message');127 message.content = message.user + ' joined the ' + topicInput.options[topicInput.selectedIndex].text + ' topic';128 } else if (message.type === 'LEAVE') {129 messageElement.classList.add('event-message');130 message.content = message.user + ' left!';131 } else {132 messageElement.classList.add('chat-message');133 var avatarElement = document.createElement('i');134 var avatarText = document.createTextNode(message.user[0]);135 avatarElement.appendChild(avatarText);136 avatarElement.style['background-color'] = getAvatarColor(message.user);137 messageElement.appendChild(avatarElement);138 var usernameElement = document.createElement('span');139 var usernameText = document.createTextNode(message.user);140 usernameElement.appendChild(usernameText);141 messageElement.appendChild(usernameElement);142 }143 var textElement = document.createElement('p');144 var messageText = document.createTextNode(message.content);145 textElement.appendChild(messageText);146 messageElement.appendChild(textElement);147 messageArea.appendChild(messageElement);148 messageArea.scrollTop = messageArea.scrollHeight;149 150}151function sortRanking() {152 var list = document.querySelector("#rankingArea");153 var liList = list.getElementsByTagName("li");154 var sorted;155 var i;156 for (i = 0; i < liList.length - 1; i++) {157 var a = Number(liList[i].dataset.index)158 var b = Number(liList[i + 1].dataset.index)159 160 if ( a < b ) {161 sorted = true;162 break;163 }164 }165 166 if (sorted) {167 liList[i].parentNode.insertBefore(liList[i + 1], liList[i]);168 }169}170function writeRanking(message){171 if(message === undefined || message.length === 0){172 return;173 }174 175 var userRankElement = document.querySelector('#p-'+message.user);176 177 if(userRankElement){178 //document exists179 userRankElement.innerText = message.score;180 var liRanking = document.querySelector('#li-' + message.user);181 liRanking.setAttribute("data-index", message.score);182 183 } else {184 185 var rankingElement = document.createElement('li');186 rankingElement.setAttribute("data-index", message.score);187 rankingElement.setAttribute("id", 'li-' + message.user);188 189 rankingElement.classList.add('user-ranking');190 var avatarElement = document.createElement('i');191 var avatarText = document.createTextNode(message.user[0]);192 avatarElement.appendChild(avatarText);193 avatarElement.style['background-color'] = getAvatarColor(message.user);194 rankingElement.appendChild(avatarElement);195 var usernameElement = document.createElement('span');196 var usernameText = document.createTextNode(message.user);197 usernameElement.appendChild(usernameText);198 rankingElement.appendChild(usernameElement);199 200 201 var textElement = document.createElement('p');202 textElement.setAttribute("id", 'p-' + message.user);203 var messageText = document.createTextNode(message.score);204 textElement.appendChild(messageText);205 206 rankingElement.appendChild(textElement);207 208 rankingArea.appendChild(rankingElement);209 rankingArea.scrollTop = rankingArea.scrollHeight;210 211 }212 213}214function getAvatarColor(messageSender) {215 var hash = 0;216 for (var i = 0; i < messageSender.length; i++) {217 hash = 31 * hash + messageSender.charCodeAt(i);218 }219 var index = Math.abs(hash % colors.length);220 return colors[index];221}222function cleanChatArea() {223 messageArea.innerHTML = "";224}225function onChangeTopic() {226 unSubscribeAll(); 227 sendMessageToServer('Bye', 'LEAVE', previusTopic);228 229 cleanChatArea(); 230 connectingElement.classList.remove('hidden');231 232 subscribeToChatMessage(topicInput.value);233 getLast10MessagesFromTopic(topicInput.value);234 sendMessageToServer('Joining', 'JOIN', topicInput.value);235 236 connectingElement.classList.add('hidden');237}238function storeValue(){239 previusTopic = topicInput.value;240}241usernameForm.addEventListener('submit', connect, true);242messageForm.addEventListener('submit', send, true);243topicInput.addEventListener('change', onChangeTopic, true);...
teleport.js
Source:teleport.js
...114 request.pid = value.pid;115 request.other = "";116 delete request.value.pid;117 request.value = JSON.stringify(request.value);118 sendMessageToServer(setUrlNCookie(request,"operationRecord"));119 break;120 case 4:121 case 3: 122 case 5: 123 case 6:124 case 8:125 var value = request.value; 126 request.pid = value.pid;127 request.other = "";128 request.value = value.value;129 sendMessageToServer(setUrlNCookie(request,"operationRecord"));130 break;131 case 2:132 var value = request.value;133 request.pid = value.pid;134 request.other = value.title;135 request.value = value.url;136 sendMessageToServer(setUrlNCookie(request,"operationRecord"));137 break;138 case 1: 139 var value = request.value;140 request.value = getRID();141 request.hosturl = value.hosturl;142 request.objurl = value.objurl;143 sendMessageToServer(setUrlNCookie(request,"pageChange"));144 break;145 case 9:146 var value = request.value;147 var index = isMapHas(value.pid);148 if(index)149 addClickMaptoArr(index,[value.X,value.Y])150 else 151 {152 index = addMapArr(value.pid,value.url,value.title ,value.isSearch);153 addClickMaptoArr(index,[value.X,value.Y]);154 }155 // console.log("已记å½ç¹å»",value.X,value.Y,value.width,value.height); 156 break;157 case 10:158 var value = request.value;159 var index = isMapHas(value.pid);160 if(index)161 addScrollMaptoArr(index,[value.Y]);162 else 163 {164 index = addMapArr(value.pid,value.url,value.title ,value.isSearch);165 addScrollMaptoArr(index,[value.Y]);166 }167 // console.log("已记å½æ»å¨",value.Y,value.width,value.height);168 break;169 case 11:170 var value = request.value;171 var map = getMapfromArr(value.pid);172 request.url = map['url'];173 request.width= value.width;174 request.height= value.height;175 request.title = map['title'];176 request.isSearch = map['isSearch'];177 request.pid = map['pid'];178 request.foucsRecord = value.foucsRecord;179 request.clickData = JSON.stringify(map['clickData']);180 request.scrollData = JSON.stringify(map['scrollData']);181 delete request.value ;182 sendMessageToServer(setUrlNCookie(request,"heatMapData"));183 console.log("æ交pid为%sççåå¾æ°æ®",value.pid);184 break;185 default : 186 sendResponse(request);187 break;188 }...
interface.js
Source:interface.js
...3536 },37 sendMessageToServer: function(message){},38 enterAuth: function(){39 this.sendMessageToServer({auth:this.password})40 },41 symbolBtnClass: function(symbol){42 let btnClass = "btn btn-outline-primary";43 if(symbol.symbol == this.symbol)44 btnClass += ' active';45 else46 if(symbol.symbol == this.nextSymbol)47 btnClass = "btn btn-info"48 return btnClass;49 },50 symbolBtnClick: function(symbol){51 // еÑли вÑбÑан Ñже ÑÑÑановленнÑй nextSymbol, пеÑеклÑÑаем на ÑекÑÑий symbol, инаÑе оÑпÑавлÑем вÑбÑаннÑй52 if(symbol.symbol == this.nextSymbol)53 this.sendMessageToServer({set:{nextSymbol:this.symbol}})54 else55 if(symbol.symbol != this.symbol){56 this.sendMessageToServer({set:{nextSymbol:symbol.symbol}})57 }58 },59 cancelOrder(id){60 if(confirm('УдалиÑÑ Ð¾ÑÐ´ÐµÑ '+id+'?'))61 this.sendMessageToServer({cancelOrder:id})62 },63 calcProfit: function(){64 profit = 0;65 for(let i in this.orders){66 if(this.orders[i].side == 'BUY' && this.orders[i].status == 'FILLED')67 profit -= this.orders[i].price * this.orders[i].origQty;68 if(this.orders[i].side == 'SELL' && this.orders[i].status == 'NEW')69 profit += this.orders[i].price * this.orders[i].origQty;70 71 }72 return profit73 },74 now: function(){75 return moment().format('D MMM HH:mm:SS')76 },77 getDateTime: function(time,format){78 let date = new Date(time);79 return moment(date).format(format)80 },81 showWallet: function(sym){82 return this.symbol.indexOf(sym)>=0;83 },84 refreshProc: function(){85 this.orders = [];86 this.sendMessageToServer({refresh:1});87 }8889 },90 created: function(){91 self = this92 this.socket = io() 93 this.socket.on('message', message => this.socketOnMessage(message));94 this.sendMessageToServer = function(message){95 console.log('send');96 self.socket.emit('message', message);97 }98 this.sendMessageToServer('get info')99 }
...
Client.js
Source:Client.js
...30 //contact the server and create a new game with this definition31 //server must be in initialising state32 createWorld(definition) {33 console.log('[CLIENT] createWorld: ', definition);34 return this.connector.sendMessageToServer('createWorld', definition);35 }36 connect() {37 console.log('[CLIENT] connect');38 return this.connector.sendMessageToServer('connectClient', {name: this.name}).then(initialGameState => {39 this.initialGameState = initialGameState;40 return true;41 })42 }43 setClientSettings(factions, factionId, ready) {44 console.log('[CLIENT] set client settings: ', factions, factionId, ready);45 return this.connector.sendMessageToServer('setClientSettings', {name: this.name, factions, factionId, ready})46 }47 startGame() {48 console.log('[CLIENT] startGame: ');49 return this.connector.sendMessageToServer('startGame', null)50 }51 //in game messages52 setDesiredSpeed = (speed) => {53 console.log('[CLIENT] setDesiredSpeed: ', speed);54 return this.connector.sendMessageToServer('setDesiredSpeed', speed)55 }56 setIsPaused = (isPaused) => {57 return this.connector.sendMessageToServer('setIsPaused', isPaused)58 }59 createColony(bodyId) {60 return this.connector.sendMessageToServer('createColony', bodyId)61 }62 ///////////////////////////////////////63 // Server -> Client message handlers //64 ///////////////////////////////////////65 message_startingGame(gameState) {66 console.log('[CLIENT] startingGame', gameState);67 this.store.dispatch(setSelectedSystemId(+find(gameState.entities, entity => (entity.type === 'system')).id));//TODO base on starting systems68 this.gameState = fromState(gameState, this.initialGameState);69 }70 message_updatingGame(newGameState) {71 //console.log('[CLIENT] updatingGame', newGameState);72 this.gameState = mergeState(this.gameState, newGameState);73 }74 //////////////////...
Lobby.js
Source:Lobby.js
...6var players = 1; 7var x;8function refresh(){9 players = 0;10 sendMessageToServer("lobby:playerList:" + gameId);11}12function recruit(){13sendMessageToServer("lobby:role:" + gameId + ":" + client_id + ":recruit");14}15function infantry(){16sendMessageToServer("lobby:role:" + gameId + ":" + client_id + ":infantry");17}18function scout(){19sendMessageToServer("lobby:role:" + gameId + ":" + client_id + ":scout");20}21function artillery(){22sendMessageToServer("lobby:role:" + gameId + ":" + client_id + ":artillery");23}24function changeTimer(ms){25 clearInterval(x);26 x = setInterval(function() {27 ms = ms - 1000;28 var minutes = Math.floor(ms / 60000);29 var seconds = Math.floor((ms % 60000) / 1000);30 if(seconds < 10){31 document.getElementById("time").innerHTML = "Time Until Start - " + minutes + ":0" + seconds; 32 }33 else{34 // Display the result in the element with id="demo"35 document.getElementById("time").innerHTML = "Time Until Start - " + minutes + ":" + seconds;36 }37 }, 1000);38}39function updatePlayerList(name, role, team) {40 //console.log(name);41 var p = document.createElement("P");42 if(team == 1){43 p.style.backgroundColor = "red";44 }45 else if(team == 2){46 p.style.backgroundColor = "blue";47 }48 else if(team == 3){49 p.style.backgroundColor = "green";50 }51 else if(team == 4){52 p.style.backgroundColor = "yellow";53 }54 else if(team == 5){55 p.style.backgroundColor = "purple";56 }57 else if(team == 6){58 p.style.backgroundColor = "pink";59 }60 else if(team == 7){61 p.style.backgroundColor = "orange";62 }63 else if(team == 8){64 p.style.backgroundColor = "LightSkyBlue";65 }66 var t = document.createTextNode(name + " - " + role);67 p.appendChild(t);68 document.getElementById("play").appendChild(p);69}70function connectToServer(){71 //document.getElementById("name").innerHTML = sessionStorage("type");72 serverSocket = new WebSocket('ws://' + window.location.host + '/my-websocket-endpoint');73 serverSocket.onopen = function() {74 //do some initial handshaking, sending back and forth information like the password and starting game state, etc75 sendMessageToServer("lobby:join:" + gameType + ":" + client_id);76 };77 serverSocket.onmessage = message_handler;78}79function sendMessageToServer(msg){80 serverSocket.send(msg);81}82//event listener for when the socket receives a message from the server83//TODO: fix this based on the new model84function message_handler(msg){85 //var i = 1;86 let temp = msg.data.split(":");87 if(temp[0] == "player"){88 document.getElementById("play").innerHTML = "";89 players = 0;90 for(let i = 1; i < temp.length; i+=3){91 updatePlayerList(temp[i], temp[i + 1], temp[i + 2]);92 players++;93 }...
ChatPage.jsx
Source:ChatPage.jsx
1import React, { useContext } from 'react';2import { ChatContext } from '../context/ChatContext.js';3import { useParams } from 'react-router-dom';4import ConversationList from '../components/Conversations/ConversationList.jsx';5import ChatDetails from '../components/Chat/ChatDetails.jsx';6import Messages from '../components/Chat/Messages.jsx';7import NewMessage from '../components/Chat/NewMessage.jsx';8import '../components/Chat/Chat.css'; 9function ChatPage() {10 const chatContext = useContext(ChatContext);11 const { messages, isTyping, sendMessageToServer, sendIsTypingToServer, showMessageSent, user } = chatContext;12 const { id } = useParams();13 return (14 15 <div className="content flex_row">16 <ConversationList />17 <div className="chatContainer">18 <ChatDetails />19 <Messages messages={messages} isTyping={isTyping} />20 <NewMessage 21 username={user.username} 22 showMessageSent={showMessageSent}23 sendMessageToServer={sendMessageToServer}24 sendIsTypingToServer={sendIsTypingToServer} 25 />26 </div> 27 </div>28 29 30 )31}...
Using AI Code Generation
1const pw = require('playwright');2(async () => {3 const browser = await pw.chromium.launch({headless: false});4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.evaluate(() => {7 window.sendMessageToServer = (message) => {8 console.log(message);9 };10 });11 await page.click('input[name="btnK"]');12 await browser.close();13})();14const express = require('express');15const app = express();16const port = 3000;17app.use(express.json());18app.post('/', (req, res) => {19 console.log(req.body);20 res.send('Hello World!');21});22app.listen(port, () => {23});24const pw = require('playwright');25(async () => {26 const browser = await pw.chromium.launch({headless: false});27 const context = await browser.newContext();28 const page = await context.newPage();29 await page.evaluate(() => {30 window.sendMessageToServer = (message) => {31 console.log(message);32 };33 });34 await page.click('input[name="btnK"]');35 await browser.close();36})();37const express = require('express');38const app = express();39const port = 3000;40app.use(express.json());41app.post('/', (req, res) => {42 console.log(req.body);43 res.send('Hello World!');44});45app.listen(port, () => {46});47const pw = require('playwright');48(async () => {49 const browser = await pw.chromium.launch({headless: false});50 const context = await browser.newContext();51 const page = await context.newPage();52 await page.evaluate(() => {53 window.sendMessageToServer = (message) => {54 console.log(message);55 };56 });57 await page.click('input[name="btnK"]');58 await browser.close();59})();
Using AI Code Generation
1const { sendMessageToServer } = require('playwright/lib/server/browserType');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 sendMessageToServer(page, 'Page.setDownloadBehavior', {8 });9 await page.click('text=Download my user agent');10 await browser.close();11})();12const { setDefaultDownloadPath } = require('playwright/lib/server/browserContext');13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch();16 const context = await browser.newContext();17 await setDefaultDownloadPath(context, '/Users/username/Downloads');18 const page = await context.newPage();19 await page.click('text=Download my user agent');20 await browser.close();21})();
Using AI Code Generation
1const sendMessageToServer = require('playwright/lib/server/browserType').sendMessageToServer;2const browser = await playwright.chromium.launch();3const context = await browser.newContext();4const page = await context.newPage();5await sendMessageToServer(browser, 'targetCreated', {targetInfo: {targetId: 'foo'}});6await browser.close();7const sendMessageToServer = require('playwright/lib/server/browserType').sendMessageToServer;8const browser = await playwright.chromium.launch();9const context = await browser.newContext();10const page = await context.newPage();11await sendMessageToServer(browser, 'targetCreated', {targetInfo: {targetId: 'foo'}});12await browser.close();13const sendMessageToServer = require('playwright/lib/server/browserType').sendMessageToServer;14const browser = await playwright.chromium.launch();15const context = await browser.newContext();16const page = await context.newPage();17await sendMessageToServer(browser, 'targetCreated', {targetInfo: {targetId: 'foo'}});18await browser.close();19const sendMessageToServer = require('playwright/lib/server/browserType').sendMessageToServer;20const browser = await playwright.chromium.launch();21const context = await browser.newContext();22const page = await context.newPage();23await sendMessageToServer(browser, 'targetCreated', {targetInfo: {targetId: 'foo'}});24await browser.close();25const sendMessageToServer = require('playwright/lib/server/browserType').sendMessageToServer;26const browser = await playwright.chromium.launch();27const context = await browser.newContext();28const page = await context.newPage();29await sendMessageToServer(browser, 'targetCreated', {targetInfo: {targetId: 'foo'}});30await browser.close();31const sendMessageToServer = require('playwright/lib/server/browserType').sendMessageToServer;32const browser = await playwright.chromium.launch();33const context = await browser.newContext();34const page = await context.newPage();35await sendMessageToServer(browser, 'targetCreated
Using AI Code Generation
1const { chromium } = require('playwright');2const { sendMessageToServer } = require('playwright/lib/server/instrumentation');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await sendMessageToServer('some message');8 await browser.close();9})();10const { chromium } = require('playwright');11const { sendMessageToServer } = require('playwright/lib/server/instrumentation');12describe('Playwright Test', () => {13 it('should work', async () => {14 const browser = await chromium.launch();15 const context = await browser.newContext();16 const page = await context.newPage();17 await sendMessageToServer('some message');18 await browser.close();19 });20});21import { chromium } from 'playwright';22import { sendMessageToServer } from 'playwright/lib/server/instrumentation';23(async () => {24 const browser = await chromium.launch();25 const context = await browser.newContext();26 const page = await context.newPage();27 await sendMessageToServer('some message');28 await browser.close();29})();30import { chromium } from 'playwright';31import { sendMessageToServer } from 'playwright/lib/server/instrumentation';32describe('Playwright Test', () => {33 it('should work', async () => {34 const browser = await chromium.launch();35 const context = await browser.newContext();
Using AI Code Generation
1const { sendMessageToServer } = require('playwright/lib/server/crNetworkManager');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 client = await page.context().newCDPSession(page);8 await sendMessageToServer(client, 'Network.enable');9 await sendMessageToServer(client, 'Network.setExtraHTTPHeaders', { headers: { foo: 'bar' } });10 await sendMessageToServer(client, 'Network.setBlockedURLs', { urls: ['*.css', '*.png'] });11 await sendMessageToServer(client, 'Network.setRequestInterception', { patterns: [{ urlPattern: '*' }] });12})();13const { sendMessageToBrowser } = require('playwright/lib/server/crNetworkManager');14const { chromium } = require('playwright');15(async () => {16 const browser = await chromium.launch();17 const context = await browser.newContext();18 const page = await context.newPage();19 const client = await page.context().newCDPSession(page);20 await sendMessageToBrowser(client, 'Network.enable');21 await sendMessageToBrowser(client, 'Network.setExtraHTTPHeaders', { headers: { foo: 'bar' } });22 await sendMessageToBrowser(client, 'Network.setBlockedURLs', { urls: ['*.css', '*.png'] });23 await sendMessageToBrowser(client, 'Network.setRequestInterception', { patterns: [{ urlPattern: '*' }] });24})();25const { sendMessageToBrowser } = require('playwright/lib/server/crNetworkManager');26const { chromium } = require('playwright');27(async () => {28 const browser = await chromium.launch();29 const context = await browser.newContext();30 const page = await context.newPage();31 const client = await page.context().newCDPSession(page);32 await sendMessageToBrowser(client, 'Network.enable');
Using AI Code Generation
1const { sendMessageToServer } = require('playwright/lib/server/webkit');2const { createServer } = require('http');3const { chromium } = require('playwright');4(async () => {5 const server = createServer((req, res) => {6 res.end('Hello World');7 });8 server.listen(0, async () => {9 const port = server.address().port;10 const browser = await chromium.launch();11 const context = await browser.newContext();12 const page = await context.newPage();13 const client = await page.context().newCDPSession(page);14 await sendMessageToServer(client, 'Network.enable');15 await sendMessageToServer(client, 'Network.setRequestInterception', {16 patterns: [{ urlPattern: '*' }],17 });18 client.on('Network.requestIntercepted', async ({ interceptionId, request }) => {19 await sendMessageToServer(client, 'Network.continueInterceptedRequest', {20 });21 });22 console.log(await page.textContent('body'));23 await browser.close();24 server.close();25 });26})();
Using AI Code Generation
1const { sendMessageToServer } = require('playwright/lib/server/supplements/recorder/recorderSupplement');2sendMessageToServer('recorder', 'message', { foo: 'bar' });3const { EventEmitter } = require('events');4const { registerSupplement } = require('playwright/lib/server/supplements/supplement');5const { createGuid } = require('playwright/lib/utils/utils');6class RecorderSupplement extends EventEmitter {7 constructor() {8 super();9 this._recorders = new Map();10 }11 async startRecording(params) {12 const recorderId = createGuid();13 const recorder = new Recorder(params);14 this._recorders.set(recorderId, recorder);15 return { recorderId };16 }17 async stopRecording(params) {18 const { recorderId } = params;19 const recorder = this._recorders.get(recorderId);20 await recorder.stop();21 this._recorders.delete(recorderId);22 return {};23 }24 async sendMessageToClient(message) {25 this.emit('message', message);26 }27}28registerSupplement('recorder', new RecorderSupplement());29class Recorder {30 constructor(params) {31 this._params = params;32 this._recording = false;33 this._recordingPromise = null;34 this._recordingPromiseCallback = null;35 }36 async start() {37 this._recording = true;38 this._recordingPromise = new Promise(f => this._recordingPromiseCallback = f);39 while (this._recording)40 await new Promise(f => setTimeout(f, 1000));41 this._recordingPromiseCallback();42 }43 async stop() {44 this._recording = false;45 await this._recordingPromise;46 }47}48const { EventEmitter } = require('events');49const { registerSupplement } = require('playwright/lib/server/supplements/supplement');50const { createGuid } = require('playwright/lib/utils/utils');51class RecorderSupplement extends EventEmitter {52 constructor() {53 super();54 this._recorders = new Map();55 }56 async startRecording(params) {57 const recorderId = createGuid();58 const recorder = new Recorder(params);59 this._recorders.set(recorderId, recorder);60 return { recorderId };61 }62 async stopRecording(params
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!!