Best JavaScript code snippet using playwright-internal
cleaning.js
Source: cleaning.js
1 var reader;2 var progress = document.querySelector('.percent');3 var readText;4 var keyText;5 var columnChanging;6 var readInList = [];7 var keyInList = [];8 var foundKeyValues = {};9 var toAssign = {};10 var index = 0;11 var cleaningStarted = false;12 var names;13 function strCompare(a, b) { // Removes speical characters, staring and ending spaces, and extra spaces for ignoring case comparison14 let s1 = a.replace(/[^A-Za-z0-9\s]/g, "").replace(/\s*/g, " ").toLowerCase().trim();15 let s2 = b.replace(/[^A-Za-z0-9\s]/g, "").replace(/\s*/g, " ").toLowerCase().trim();16 return s1.localeCompare(s2);17 }18 function resetKeys(){19 if(keyText != null){20 document.getElementById("errorMessage").innerHTML = " "21 breakKeyText();22 if(cleaningStarted){23 startCleaning();24 }25 }26 else{27 document.getElementById("errorMessage").innerHTML = "No key file was uploaded."28 }29 }30 function resetInput(){31 if(readText != null){32 document.getElementById("errorMessage").innerHTML = " "33 breakReadText();34 if (cleaningStarted) {35 startCleaning();36 }37 } else {38 document.getElementById("errorMessage").innerHTML = "No input file was uploaded."39 }40 }41 function abortRead() {42 reader.abort();43 }44 function errorHandler(evt) {45 switch(evt.target.error.code) {46 case evt.target.error.NOT_FOUND_ERR:47 document.getElementById("errorMessage").innerHTML = "File was not found.";48 break;49 case evt.target.error.NOT_READABLE_ERR:50 document.getElementById("errorMessage").innerHTML = "File was not able to be read.";51 alert('File is not readable');52 break;53 case evt.target.error.ABORT_ERR:54 break; // noop55 default:56 document.getElementById("errorMessage").innerHTML = "There was an error reading this file.";57 };58 }59 function updateProgress(evt) {60 // evt is an ProgressEvent.61 if (evt.lengthComputable) {62 var percentLoaded = Math.round((evt.loaded / evt.total) * 100);63 // Increase the progress bar length.64 if (percentLoaded < 100) {65 progress.style.width = percentLoaded + '%';66 progress.textContent = percentLoaded + '%';67 }68 }69 }70 function handleKeysSelect(evt) {71 // Reset progress indicator on new file selection.72 progress.style.width = '0%';73 progress.textContent = '0%';74 reader = new FileReader();75 reader.onerror = errorHandler;76 reader.onprogress = updateProgress;77 reader.onabort = function(e) {78 document.getElementById("errorMessage").innerHTML = "File read was cancelled";79 };80 reader.onloadstart = function(e) {81 document.getElementById('progress_bar').className = 'loading';82 };83 reader.onload = function(e) {84 // Ensure that the progress bar displays 100% at the end.85 progress.style.width = '100%';86 progress.textContent = '100%';87 setTimeout("document.getElementById('progress_bar').className='';", 2000);88 keyText = reader.result;89 breakKeyText();90 }91 // Read in the image file as a binary string.92 reader.readAsText(evt.target.files[0]);93 }94 function handleFileSelect(evt) {95 // Reset progress indicator on new file selection.96 progress.style.width = '0%';97 progress.textContent = '0%';98 reader = new FileReader();99 reader.onerror = errorHandler;100 reader.onprogress = updateProgress;101 reader.onabort = function(e) {102 document.getElementById("errorMessage").innerHTML = "File read was cancelled";103 };104 reader.onloadstart = function(e) {105 document.getElementById('progress_bar').className = 'loading';106 };107 reader.onload = function(e) {108 // Ensure that the progress bar displays 100% at the end.109 progress.style.width = '100%';110 progress.textContent = '100%';111 setTimeout("document.getElementById('progress_bar').className='';", 2000);112 readText = reader.result;113 breakReadText();114 }115 // Read in the image file as a binary string.116 reader.readAsText(evt.target.files[0]);117 }118 document.getElementById('files').addEventListener('change', handleFileSelect, false);119 document.getElementById('keys').addEventListener('change', handleKeysSelect, false);120 function download(data, filename, type) {121 var file = new Blob([data], {type: type});122 if (window.navigator.msSaveOrOpenBlob) // IE10+123 window.navigator.msSaveOrOpenBlob(file, filename);124 else { // Others125 var a = document.createElement("a"),126 url = URL.createObjectURL(file);127 a.href = url;128 a.download = filename;129 document.body.appendChild(a);130 a.click();131 setTimeout(function() {132 document.body.removeChild(a);133 window.URL.revokeObjectURL(url);134 }, 0);135 }136 }137 var mapLetterValue = function(val) {138 var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0;139 for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) {140 result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1);141 }142 return result;143 };144 function isEmpty(ob){145 for(var i in ob){ return false;}146 return true;147 }148 function startCleaning(){149 foundKeyValues = {};150 toAssign = {};151 index = 0;152 cleaningStarted = true;153 names = [];154 var columnToChange = document.getElementById("ColumnToChange").value;155 columnToChange = columnToChange.toUpperCase();156 columnChanging = [ columnToChange ].map(mapLetterValue)[0] - 1;157 if(readText == null){158 document.getElementById("errorMessage").innerHTML = "No input file was uploaded."159 }160 else if (keyText == null) {161 document.getElementById("errorMessage").innerHTML = "No key file was uploaded."162 } else if (columnToChange == "") {163 document.getElementById("errorMessage").innerHTML = "No column to clean was selected."164 } else {165 document.getElementById("errorMessage").innerHTML = " "166 var currentValue;167 for(var i = 1; i < readInList.length; i++) {168 currentValue = readInList[i][columnChanging];169 if (currentValue == ""); // empty column170 else if ((foundKeyValues[currentValue] != "" && foundKeyValues[currentValue] != null )) { // we already know the value171 readInList[i][columnChanging] = foundKeyValues[currentValue];172 } else {173 var locatedValue = findValue(currentValue);174 if (locatedValue != ""){ // Item was assigned a value175 foundKeyValues[currentValue] = locatedValue;176 readInList[i][columnChanging] = locatedValue;177 }178 else { // Item hasn't been assigned yet179 if(toAssign[currentValue] != "" && toAssign[currentValue] != null) { // Item has been found elsewhere180 toAssign[currentValue][toAssign[currentValue].length] = i;181 }182 else { // This is the first time we've found this item183 toAssign[currentValue] = [ i ];184 }185 }186 }187 }188 assignKeysToNames();189 if(isEmpty(toAssign)){190 $("#name-chooser").text("Cleaning complete!");191 }192 else{193 $("#name-chooser").text(names[0]);194 populateChoices();195 }196 }197 }198 function assignKeysToNames(){199 names = [];200 for(item in toAssign){201 names[names.length] = item;202 }203 }204 function nextChoice(companyPicked) {205 document.getElementById("errorMessage").innerHTML = " "206 var newIndex;207 for(var i = 0; i < toAssign[names[index]].length; i++){208 newIndex = toAssign[names[index]][i];209 readInList[newIndex][columnChanging] = companyPicked;210 }211 for(var i = 0; i < keyInList.length; i++){212 if(strCompare(keyInList[i][0], companyPicked) == 0){213 keyInList[i][keyInList[i].length] = names[index];214 i = keyInList.length;215 }216 }217 if(index < names.length - 1) {218 index++;219 $("#name-chooser").text(names[index]);220 document.getElementById("customInput").value = "";221 } else {222 $("#name-chooser").text("You're Done!");223 toAssign = {}224 index = 0;225 document.getElementById("choices").innerHTML = "";226 document.getElementById("custom").innerHTML = "";227 document.getElementById("instruction").innerHTML = '<h3 id="instruction" class="text-muted">Download your files now, or continue cleaning.</h3>';228 }229 return false;230 }231 function nextChoiceAdd() {232 document.getElementById("errorMessage").innerHTML = " "233 var theirValue = document.getElementById("customInput").value;234 var foundValue = findValue(theirValue);235 if(findValue(theirValue) != ""){236 theirValue = foundValue;237 } else {238 keyInList[keyInList.length] = [ theirValue ];239 }240 populateChoices();241 var newIndex;242 for(var i = 0; i < toAssign[names[index]].length; i++){243 newIndex = toAssign[names[index]][i];244 readInList[newIndex][columnChanging] = theirValue;245 }246 if(index < names.length - 1) {247 index++;248 $("#name-chooser").text(names[index]);249 } else {250 $("#name-chooser").text("You're Done!");251 toAssign = {}252 index = 0;253 document.getElementById("choices").innerHTML = "";254 document.getElementById("custom").innerHTML = "";255 document.getElementById("instruction").innerHTML = '<h3 id="instruction" class="text-muted">Download your files now, or continue cleaning.</h3>';256 }257 document.getElementById("customInput").value = "";258 return false;259 }260 function populateChoices(){261 document.getElementById("choices").innerHTML = "";262 var sortedKeys = keyInList.slice().sort(function (a, b) {263 return strCompare(a[0], b[0]);264 });265 for(var i = 0; i < sortedKeys.length; i++){266 if(sortedKeys[i][0] != ""){267 document.getElementById("choices").innerHTML += '<div class="form-group" style="padding:1% 3% .25% 3%"><button class="btn" onclick="return nextChoice(\'' + sortedKeys[i][0] + '\');">' + sortedKeys[i][0] + '</button></div>';268 }269 }270 document.getElementById("custom").innerHTML = '<div class="form-group"><label for="customInput">Company Name:</label><input type="text" class="form-control" id="customInput" placeholder="New company name" onInput="displayFilteredChoices()" /></div><button class="btn btn-primary" onclick="return nextChoiceAdd();">Submit</button>';271 document.getElementById("instruction").innerHTML = '<h3 id="instruction" class="text-muted">Select a canonical company name:</h3>';272 }273 function substringComparison(a, b, chars){274 if(chars > b.length){ // if a is longer than b, it can't be b275 return false;276 }277 if (a.trim().length != a.length){ // Handles surrounding white spaces that might have slipped by278 chars = a.trim().length;279 }280 let s1 = a.replace(/[^A-Za-z0-9\s]/g, "").replace(/\s*/g, "").toLowerCase().trim().substring(0, chars);281 let s2 = b.replace(/[^A-Za-z0-9\s]/g, "").replace(/\s*/g, "").toLowerCase().trim();282 return s2.includes(s1);283 }284 function displayFilteredChoices(){285 document.getElementById("choices").innerHTML = "";286 var theirValue = document.getElementById("customInput").value;287 var filteredKeys = [];288 for (var i = 0; i < keyInList.length; i++){289 if(substringComparison(theirValue, keyInList[i][0], theirValue.replace(/[^A-Za-z0-9\s]/g, "").replace(/\s*/g, "").trim().length)){290 filteredKeys[filteredKeys.length] = keyInList[i][0];291 }292 }293 var sortedKeys = filteredKeys.slice().sort(function (a, b) {294 return strCompare(a, b);295 });296 for(var i = 0; i < sortedKeys.length; i++){297 if(sortedKeys[i] != ""){298 document.getElementById("choices").innerHTML += '<div class="form-group" style="padding:1% 3% .25% 3%"><button class="btn" onclick="return nextChoice(\'' + sortedKeys[i] + '\');">' + sortedKeys[i] + '</button></div>';299 }300 }301 document.getElementById("instruction").innerHTML = '<h3 id="instruction" class="text-muted">Select a canonical company name:</h3>';302 }303 function findValue(itemToLocate){304 for(var i = 0; i < keyInList.length; i++) {305 for(var j = 0; j < keyInList[i].length; j++){306 if (strCompare(keyInList[i][j], itemToLocate) == 0){307 return keyInList[i][0];308 }309 }310 }311 return "";312 }313 function breakReadText(){314 var splitByLine = readText.split(/\r?\n/g);315 var splitByComma = [];316 for(var i = 0; i < splitByLine.length; i++){317 splitByComma[i] = splitByLine[i].split(',');318 }319 for(var i = 0; i < splitByComma.length; i++){320 for (var j = 0; j < splitByComma[i].length; j++){321 splitByComma[i][j] = splitByComma[i][j].trim().replace(/^[^A-Za-z0-9\s]*/g, "").replace(/[^A-Za-z0-9\s]*$/g, "").replace(/\s+/g, " ");322 }323 }324 readInList = splitByComma;325 }326 function breakKeyText(){327 var splitByLine = keyText.split(/\r?\n/g);328 var splitByComma = [];329 for(var i = 0; i < splitByLine.length; i++){330 splitByComma[i] = splitByLine[i].split(',');331 }332 for(var i = 0; i < splitByComma.length; i++){333 for (var j = 0; j < splitByComma[i].length; j++){334 splitByComma[i][j] = splitByComma[i][j].trim().replace(/^[^A-Za-z0-9\s]*/g, "").replace(/[^A-Za-z0-9\s]*$/g, "").replace(/\s+/g, " ");335 }336 }337 keyInList = splitByComma;338 }339 function reassembleReadText(){340 var splitByLine = [];341 for(var i = 0; i < readInList.length; i++){342 splitByLine[i] = readInList[i].join(',');343 }344 return splitByLine.join('\n');345 }346 function reassembleKeyText(){347 var splitByLine = [];348 for(var i = 0; i < keyInList.length; i++){349 splitByLine[i] = keyInList[i].join(',');350 }351 return splitByLine.join('\n');352 }353 function downloadFile(){354 var fileName = document.getElementById("FileName").value;355 if(fileName == ""){356 document.getElementById("errorMessage").innerHTML = "No file name was given.";357 } else if ( isEmpty(readInList) ) {358 document.getElementById("errorMessage").innerHTML = "No input file was uploaded.";359 }360 else {361 document.getElementById("errorMessage").innerHTML = " ";362 var newText = reassembleReadText();363 download(newText, fileName, "text/csv");364 }365 }366 function downloadKeyFile(){367 var fileName = document.getElementById("KeyFileName").value;368 if(fileName == ""){369 document.getElementById("errorMessage").innerHTML = "No key file name was given.";370 } else if ( isEmpty(keyInList) ) {371 document.getElementById("errorMessage").innerHTML = "No key file was uploaded.";372 } else {373 document.getElementById("errorMessage").innerHTML = " ";374 var newText = reassembleKeyText();375 download(newText, fileName, "text/csv");376 }377 }378 var acc = document.getElementsByClassName("accordion");379 var i;380 for (i = 0; i < acc.length; i++) {381 acc[i].addEventListener("click", function() {382 this.classList.toggle("active");383 var panel = this.nextElementSibling;384 if (panel.style.display === "block") {385 panel.style.display = "none";386 } else {387 panel.style.display = "block";388 }389 });...
transcribe.js
Source: transcribe.js
1const url = window.location.href2const replacedURL = url.replace('#', '&')3const finalURL = new URLSearchParams(replacedURL)4var accessToken = finalURL.get('access_token')5var idToken = finalURL.get("id_token")6var expiresIn = finalURL.get('expires_in')7var tokenType = finalURL.get('token_type')8var UserID, UserName, UserEmail;9var no_of_output;10$(document).ready(function(){11 if(sessionStorage.getItem('accessToken') == null && sessionStorage.getItem('idToken') == null) {12 sessionStorage.setItem('accessToken', accessToken);13 sessionStorage.setItem('idToken', idToken);14 sessionStorage.setItem('expiresIn', expiresIn);15 sessionStorage.setItem('tokenType', tokenType);16 }17 $('#uploadPage').attr('href', "upload.html#access_token=" + sessionStorage.getItem('accessToken') + 18 "&id_token=" + sessionStorage.getItem('idToken') +19 "&expires_in=" + sessionStorage.getItem('expiresIn') +20 "&token_type=" + sessionStorage.getItem('tokenType'));21 $('#transcribePage').attr('href', "transcribe.html#access_token=" + sessionStorage.getItem('accessToken') + 22 "&id_token=" + sessionStorage.getItem('idToken') +23 "&expires_in=" + sessionStorage.getItem('expiresIn') +24 "&token_type=" + sessionStorage.getItem('tokenType'));25 $('#downloadPage').attr('href', "download.html#access_token=" + sessionStorage.getItem('accessToken') + 26 "&id_token=" + sessionStorage.getItem('idToken') +27 "&expires_in=" + sessionStorage.getItem('expiresIn') +28 "&token_type=" + sessionStorage.getItem('tokenType'));29 30 $.getJSON( "../stack-output.json", function( data ) {31 let cloudFrontUrl = data.CloudFrontDistroUrl32 let stackRegion = data.StackRegion33 let cognitoUserPoolLogoutUrl = data.CognitoUserPoolLogoutUrl34 let identityPoolId = data.CognitoIdentityPoolId35 let identityProvider = data.CognitoIdentityProvider36 let s3AudioBucket = data.S3AudioBucket37 let s3JsonBucket = data.S3JsonBucket38 let s3CsvBucket = data.S3CsvBucket39 let s3PdfBucket = data.S3PdfBucket40 var params = {41 AccessToken: accessToken/* required */42 };43 44 AWS.config.region = stackRegion;45 AWS.config.apiVersions = {46 cognitoidentityserviceprovider: '2016-04-18'47 };48 var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();49 cognitoidentityserviceprovider.getUser(params, function(err, data) {50 if (err) {51 window.location.href = cloudFrontUrl52 }53 else {54 for(var i = 0; i < data.UserAttributes.length; i++) {55 if(data.UserAttributes[i].Name == 'sub') {56 UserID = data.UserAttributes[i].Value;57 }58 }59 for(var i = 0; i < data.UserAttributes.length; i++) {60 if(data.UserAttributes[i].Name == 'name') {61 UserName = data.UserAttributes[i].Value;62 }63 }64 for(var j = 0; j < data.UserAttributes.length; j++) {65 if(data.UserAttributes[j].Name == 'email') {66 UserEmail = data.UserAttributes[j].Value;67 }68 }69 $('#UserName').text(UserName);70 $('#UserEmail').text(UserEmail);71 let logins = {}72 logins[identityProvider] = idToken73 74 AWS.config.credentials = new AWS.CognitoIdentityCredentials({75 IdentityPoolId: identityPoolId,76 Logins: logins77 });78 79 sessionStorage.setItem('aws', AWS.config.credentials);80 81 AWS.config.credentials.get(); 82 83 var s3 = new AWS.S3({apiVersion: '2006-03-01'});84 var params = {85 Bucket: s3CsvBucket, 86 Key: UserID + '/' + sessionStorage.getItem('s3FileKey')87 };88 const s3Stream = s3.getObject(params, function(err, data){89 if(err) {90 console.log(err)91 }92 else {93 var s3output = data.Body.toString('utf8')94 var removeInvertedCom = s3output.replace(/["]+/g, '')95 var splitByNewLine = removeInvertedCom.split('\n')96 var header = splitByNewLine[0].split(',')97 var time = []98 var spk = []99 var set = []100 for(let i = 1; i < splitByNewLine.length; i++) {101 var splitByComma = splitByNewLine[i].split(',')102 var comment = '';103 if(splitByComma.length > 3) {104 for(let j = 0; j < splitByComma.length; j++) {105 if(j == 0) {106 time.push(splitByComma[j])107 }108 else if(j == 1) {109 spk.push(splitByComma[j])110 }111 else {112 comment+= splitByComma[j]113 }114 }115 set.push(comment.trim())116 } else {117 for(let j = 0; j < splitByComma.length; j++) {118 if(j == 0) {119 time.push(splitByComma[j])120 }121 else if(j == 1) {122 spk.push(splitByComma[j])123 }124 else {125 set.push(splitByComma[j].trim())126 }127 }128 }129 }130 const distinct = (value, index, self) => {131 return self.indexOf(value) === index132 }133 var distinctSpk = spk.filter(distinct)134 no_of_output = set.length;135 var spk_wait_img = $('#spk_wait_img')136 var spk_wait = $('#spk_wait')137 $("#speakers_dynamic").empty(spk_wait_img);138 $("#speakers_dynamic").empty(spk_wait);139 for(let disSpk = 0; disSpk < distinctSpk.length; disSpk++) {140 var input = document.createElement("input");141 input.type = "text";142 input.classList.add("form-control", "form-control-sm", "my-1")143 input.setAttribute("data-tag", distinctSpk[disSpk]);144 input.setAttribute("oninput", "changeSpkName(this)");145 input.placeholder = distinctSpk[disSpk];146 input.value = distinctSpk[disSpk];147 $("#speakers_dynamic").append(input)148 }149 var trans_wait_img = $('#trans_wait_img')150 var trans_wait = $('#trans_wait')151 $('#transcribe_output').removeClass("d-flex", "flex-column", "justify-content-center", "align-content-center")152 $("#transcribe_output").empty(trans_wait_img);153 $("#transcribe_output").empty(trans_wait);154 for(let tra = 0; tra < set.length; tra++) {155 var div = document.createElement("div");156 div.classList.add("form-group");157 var label_1 = document.createElement("label");158 label_1.classList.add(spk[tra]);159 var label_1_text = document.createTextNode(spk[tra] + " ");160 label_1.append(label_1_text);161 var label_2 = document.createElement("label");162 var label_2_text = document.createTextNode(String.fromCharCode(160) + "|" + String.fromCharCode(160) + time[tra]);163 label_2.append(label_2_text);164 var textarea = document.createElement("textarea");165 textarea.classList.add("form-control", "my-1");166 textarea.id = "textarea-" + tra;167 textarea.rows = "2";168 textarea.value = set[tra];169 var p = document.createElement("p");170 p.classList.add("d-none");171 p.id = 'p-' + tra;172 div.append(label_1);173 div.append(label_2);174 div.append(textarea);175 div.append(p);176 $("#transcribe_output").append(div)177 }178 }179 });180 }181 });182 183 $('#downloadTranscribe').attr('onclick', `exportHTML('${s3PdfBucket}')`)184 $('#logout-btn').attr('href', cognitoUserPoolLogoutUrl)185 })186})187function changeSpkName(e) {188 var data_tag = e.getAttribute("data-tag");189 var arr_spk = document.getElementsByClassName(data_tag)190 for(let i = 0; i < arr_spk.length; i++) {191 arr_spk[i].innerHTML = e.value;192 }193}194function exportHTML(s3PdfBucket) {195 for (let i = 0; i < no_of_output; i++) {196 $('#p-' + i).text($('#textarea-' + i).val());197 }198 var doc = new jsPDF();199 var elementHTML = $('#transcribe_output').html();200 var specialElementHandlers = {201 '#elementH': function (element, renderer) {202 return true;203 }204 };205 doc.fromHTML(elementHTML, 15, 15, {206 'width': 170,207 'elementHandlers': specialElementHandlers208 });209 210 if($('#fileName').val() == '') {211 var upload = new AWS.S3.ManagedUpload({212 params: {213 Bucket: s3PdfBucket,214 Key: UserID + '/' + sessionStorage.getItem('fileName') + '.pdf',215 Body: doc.output('blob')216 }217 })218 swal({219 title: "Success",220 text: "Please wait, we are uploading your transcription for your future use.",221 icon: "success",222 closeOnClickOutside: false,223 closeOnEsc: false,224 buttons: false225 });226 var promise = upload.promise();227 promise.then(228 function(data) {229 swal.close();230 doc.save(sessionStorage.getItem('fileName') + '.pdf');231 });232 }233 else234 {235 var upload = new AWS.S3.ManagedUpload({236 params: {237 Bucket: s3PdfBucket,238 Key: UserID + '/' + $('#fileName').val() + '-' + sessionStorage.getItem('fileName') + '.pdf',239 Body: doc.output('blob')240 }241 })242 swal({243 title: "Success",244 text: "Please wait, we are uploading your transcription for your future use.",245 icon: "success",246 closeOnClickOutside: false,247 closeOnEsc: false,248 buttons: false249 });250 var promise = upload.promise();251 promise.then(252 function(data) {253 swal.close();254 doc.save($('#fileName').val() + '-' + sessionStorage.getItem('fileName') + '.pdf');255 });256 }...
StringUtils-test.js
Source: StringUtils-test.js
...71});72describe("makeSplitBy", function() {73 it("splits string into an array by character (,)", function() {74 let splitByComma = StringUtils.makeSplitBy(",");75 expect(splitByComma("a,b")).toEqual(["a", "b"]);76 expect(splitByComma("a,b,c")).toEqual(["a", "b", "c"]);77 expect(splitByComma("a,b,c,d")).toEqual(["a", "b", "c", "d"]);78 expect(splitByComma("a,b,c\\,d")).toEqual(["a", "b", "c,d"]);79 expect(splitByComma("a,b\\,c,d")).toEqual(["a", "b,c", "d"]);80 expect(splitByComma("a\\,b,c,d")).toEqual(["a,b", "c", "d"]);81 expect(splitByComma("\\,a,b,c,d")).toEqual([",a", "b", "c", "d"]);82 expect(splitByComma("a,b,c,d\\,")).toEqual(["a", "b", "c", "d,"]);83 expect(splitByComma("a,b,c,d,")).toEqual(["a", "b", "c", "d", ""]);84 expect(splitByComma(",a,b,c,d")).toEqual(["", "a", "b", "c", "d"]);85 });86 it("splits string into an array by character (/)", function() {87 let splitBySlash = StringUtils.makeSplitBy("/");88 expect(splitBySlash("a/b")).toEqual(["a", "b"]);89 expect(splitBySlash("a/b/c")).toEqual(["a", "b", "c"]);90 expect(splitBySlash("a/b/c/d")).toEqual(["a", "b", "c", "d"]);91 expect(splitBySlash("a/b/c\\/d")).toEqual(["a", "b", "c/d"]);92 expect(splitBySlash("a/b\\/c/d")).toEqual(["a", "b/c", "d"]);93 expect(splitBySlash("a\\/b/c/d")).toEqual(["a/b", "c", "d"]);94 expect(splitBySlash("\\/a/b/c/d")).toEqual(["/a", "b", "c", "d"]);95 expect(splitBySlash("a/b/c/d\\/")).toEqual(["a", "b", "c", "d/"]);96 expect(splitBySlash("a/b/c/d/")).toEqual(["a", "b", "c", "d", ""]);97 expect(splitBySlash("/a/b/c/d")).toEqual(["", "a", "b", "c", "d"]);98 });99});100describe("idempotence of makeJoinWith and splitByComma", function() {101 it("is idempotent ->", function() {102 let splitByComma = StringUtils.makeSplitBy(",");103 let joinWithComma = StringUtils.makeJoinWith(",");104 let id = string => joinWithComma(splitByComma(string));105 expect(id("a")).toEqual("a");106 expect(id("a,b")).toEqual("a,b");107 expect(id(",a,b")).toEqual(",a,b");108 expect(id("a,b,")).toEqual("a,b,");109 expect(id("a,b,c")).toEqual("a,b,c");110 });111 it("is idempotent <-", function() {112 let splitByComma = StringUtils.makeSplitBy(",");113 let joinWithComma = StringUtils.makeJoinWith(",");114 let id = string => splitByComma(joinWithComma(string));115 expect(id(["a"])).toEqual(["a"]);116 expect(id(["a", "b"])).toEqual(["a", "b"]);117 expect(id(["", "a", "b"])).toEqual(["", "a", "b"]);118 expect(id(["", "a", "b", ""])).toEqual(["", "a", "b", ""]);119 expect(id(["", "a,b", "b", ""])).toEqual(["", "a,b", "b", ""]);120 });...
aggregatesync.js
Source: aggregatesync.js
1/**2 * Aggregates GDP and Population Data by Continents3 * @param {*} filePath4 */5const fs = require('fs');6const aggregate = (filePath) => {7 let countryObjects;8 const countryMap = [];9 const conti = [];10 // converting country continent to map11 const fileContents = fs.readFileSync('countriesmap.txt', 'utf8');12 const splitString = fileContents.split('\n');13 let splitByComma;14 const countryContinentMap = new Map();15 for (let i = 0; i < splitString.length; i += 1) {16 splitByComma = splitString[i].split(',');17 splitByComma[1] = splitByComma[1].replace(/\r/g, '');18 countryContinentMap.set(splitByComma[0], splitByComma[1]);19 }20 // reading datafile and making final op21 const data = fs.readFileSync(filePath, 'utf8');22 const dataString = data.toString();23 const splitData = dataString.split('\n');24 const headers = splitData[0].split(',');25 for (let i = 0; i < headers.length; i += 1) {26 headers[i] = headers[i].replace(/['"]+/g, '');27 }28 for (let i = 1; i < splitData.length; i += 1) {29 const cleandata = splitData[i].split(',');30 for (let k = 0; k < cleandata.length; k += 1) {31 cleandata[k] = cleandata[k].replace(/['"]+/g, '');32 }33 countryObjects = {};34 for (let j = 0; j < cleandata.length; j += 1) {35 countryObjects[headers[j]] = cleandata[j];36 }37 countryMap.push(countryObjects);38 }39 for (let i = 0; i < countryMap.length; i += 1) {40 if (countryMap[i]['Country Name'] !== 'European Union') {41 countryMap[i].continent = countryContinentMap.get(countryMap[i]['Country Name']);42 conti.push(countryContinentMap.get(countryMap[i]['Country Name']));43 }44 }45 const continent = new Set(conti);46 const contisplitData = [...continent];47 contisplitData.splice(6, 1);48 const finalsplitData = [];49 const countryObjectsectdefined = {};50 for (let i = 0; i < contisplitData.length; i += 1) {51 let sumpop = 0;52 let sumgdp = 0;53 for (let j = 0; j < countryMap.length; j += 1) {54 if (contisplitData[i] === countryMap[j].continent) {55 sumpop += parseFloat(countryMap[j]['Population (Millions) - 2012']);56 sumgdp += parseFloat(countryMap[j]['GDP Billions (US Dollar) - 2012']);57 }58 }59 const name = {};60 name.GDP_2012 = sumgdp;61 name.POPULATION_2012 = sumpop;62 finalsplitData.push(name);63 }64 for (let i = 0; i < contisplitData.length; i += 1) {65 countryObjectsectdefined[contisplitData[i]] = finalsplitData[i];66 }67 fs.writeFileSync('./output/output.json', JSON.stringify(countryObjectsectdefined));68};...
cli.js
Source: cli.js
1#!/usr/bin/env node2const { program } = require('commander')3const { patch } = require('./patch')4const { install } = require('./install')5const splitByComma = str => str.split(',')6program7 .command('patch', { isDefault: true })8 .argument('<source>', 'comma separated list of files or dirs to process, supports environment variables', splitByComma)9 .argument('<html-template>', 'eg. /public/index.html or /dist/index.html')10 .option('-i --inline', 'inline config in html template')11 .action(patch)12program13 .command('install')14 .description('installs upconfig by patching package.json scripts.')15 .usage('upconfig install dev,serve CONFIG_PATH dist/index.html')16 .argument('<scripts>', 'scripts to install, comma separated, eg. start,build', splitByComma)17 .argument('<configs', 'configs to load, comma separated, eg. config.js,\$MY_ENV_CONFIG', splitByComma)18 .argument('<html-template>', 'eg. /public/index.html or /dist/index.html')19 .option('-p --package-json <path>', 'path to package json', 'package.json')20 .option('-i --inline', 'inline config in html template')21 .action(install)...
index.js
Source: index.js
1/**2 * æ°æ®ç»æï¼æ°ç»3 * ç®æ³ï¼éå4 */5/**6 * @param {string} s7 * @return {number}8 */9var countSegments = function(s) {10 if (s.trim().length === 0) {11 return 0;12 }13 var splitByComma = s.trim().split(',');14 return splitByComma.reduce((t, cur, i) => {15 var splitBySpace = cur.trim().split(' ');16 if (i === splitByComma.length - 1) {17 if (!cur.trim()) {18 return t;19 }20 }21 return t + splitBySpace.length;22 }, 0);...
map.js
Source: map.js
...5 position:[47.0219, 28.8617]6}7const splitByComma = split(',')8const updateMap = (state, {center, zoom, position}) => ({9 center: splitByComma(center),10 zoom,11 position: splitByComma(position)12}) 1314export default function(state = defaultState, action){15 switch (action.type) {16 case 'MAP':17 return updateMap(state, action.payload)1819 default:20 return state21 }22}
...
otherMethods.js
Source: otherMethods.js
1function addDecimalSeparators(cents){2 var arr = cents.toString().split("");3 while (arr.length < 3){4 arr.splice(0,0,"0");5 }6 arr.splice(arr.length-2,0,".");7 var withComma = arr.join("");8 var splitByComma = withComma.split(".");9 splitByComma[0] = addSpaces(splitByComma[0]);10 return splitByComma.join(".");11}12function addSpaces(number){13 var arr = number.toString().split("");14 for (var i = arr.length - 3; i >= 1; i -= 3){15 arr[i] = " " + arr[i];16 }17 return arr.join("");...
Using AI Code Generation
1const { splitByComma } = require('playwright/lib/utils/utils');2const input = 'foo,bar,baz';3const result = splitByComma(input);4console.log(result);5const { splitByComma } = require('playwright/lib/utils/utils');6const input = 'foo,bar,baz';7const result = splitByComma(input);8console.log(result);9const { splitByComma } = require('playwright/lib/utils/utils');10const input = 'foo,bar,baz';11const result = splitByComma(input);12console.log(result);13const { splitByComma } = require('playwright/lib/utils/utils');14const input = 'foo,bar,baz';15const result = splitByComma(input);16console.log(result);17const { splitByComma } = require('playwright/lib/utils/utils');18const input = 'foo,bar,baz';19const result = splitByComma(input);20console.log(result);21const { splitByComma } = require('playwright/lib/utils/utils');22const input = 'foo,bar,baz';23const result = splitByComma(input);24console.log(result);25const { splitByComma } = require('playwright/lib/utils/utils');26const input = 'foo,bar,baz';27const result = splitByComma(input);28console.log(result);
Using AI Code Generation
1const { splitByComma } = require('playwright/lib/utils/utils');2const { test } = require('@playwright/test');3const { expect } = require('@playwright/test');4test.describe('test', () => {5 test('test', async ({ page }) => {6 const list = splitByComma('a,b');7 expect(list).toEqual(['a', 'b']);8 });9});10Type: `Array<{ name: string, use: { browserName: 'chromium' | 'firefox' | 'webkit' } }>`11module.exports = {12 {13 use: {14 },15 },16 {17 use: {18 },19 },20};21Type: `{ viewport?: { width: number, height: number }, ignoreHTTPSErrors?: boolean, screenshot?: 'only-on-failure' | 'on', video?: 'on' | 'off' | 'retain-on-failure', baseURL?: string, storageState?: string, ... }`22module.exports = {23 use: {24 viewport: { width: 1280, height: 720 },25 }26};27Defines the default timeout for all tests. The default value is `30000` (30 seconds
Using AI Code Generation
1const { splitByComma } = require('@playwright/test/lib/utils').internal;2const str = 'foo,bar,baz';3const arr = splitByComma(str);4console.log(arr);5 ✓ test.spec.js (1s)6 1 passed (2s)7 at Object.<anonymous> (test.js:6:5)8 at Object.<anonymous> (test.js:6:5)9- [Playwright GitHub](
firefox browser does not start in playwright
How to run a list of test suites in a single file concurrently in jest?
Is it possible to get the selector from a locator object in playwright?
Running Playwright in Azure Function
firefox browser does not start in playwright
Jest + Playwright - Test callbacks of event-based DOM library
I found the error. It was because of some missing libraries need. I discovered this when I downgraded playwright to version 1.9 and ran the the code then this was the error msg:
(node:12876) UnhandledPromiseRejectionWarning: browserType.launch: Host system is missing dependencies!
Some of the Universal C Runtime files cannot be found on the system. You can fix
that by installing Microsoft Visual C++ Redistributable for Visual Studio from:
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
Full list of missing libraries:
vcruntime140.dll
msvcp140.dll
Error
at Object.captureStackTrace (D:\Projects\snkrs-play\node_modules\playwright\lib\utils\stackTrace.js:48:19)
at Connection.sendMessageToServer (D:\Projects\snkrs-play\node_modules\playwright\lib\client\connection.js:69:48)
at Proxy.<anonymous> (D:\Projects\snkrs-play\node_modules\playwright\lib\client\channelOwner.js:64:61)
at D:\Projects\snkrs-play\node_modules\playwright\lib\client\browserType.js:64:67
at BrowserType._wrapApiCall (D:\Projects\snkrs-play\node_modules\playwright\lib\client\channelOwner.js:77:34)
at BrowserType.launch (D:\Projects\snkrs-play\node_modules\playwright\lib\client\browserType.js:55:21)
at D:\Projects\snkrs-play\index.js:4:35
at Object.<anonymous> (D:\Projects\snkrs-play\index.js:7:3)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:12876) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:12876) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
A list of missing libraries was provided. After successful installments, firefox ran fine. I upgraded again to version 1.10 and firefox still works.
Check out the latest blogs from LambdaTest on this topic:
Mobile application development is on the rise like never before, and it proportionally invites the need to perform thorough testing with the right mobile testing strategies. The strategies majorly involve the usage of various mobile automation testing tools. Mobile testing tools help businesses automate their application testing and cut down the extra cost, time, and chances of human error.
Pair testing can help you complete your testing tasks faster and with higher quality. But who can do pair testing, and when should it be done? And what form of pair testing is best for your circumstance? Check out this blog for more information on how to conduct pair testing to optimize its benefits.
Hey LambdaTesters! We’ve got something special for you this week. ????
When I started writing tests with Cypress, I was always going to use the user interface to interact and change the application’s state when running tests.
Joseph, who has been working as a Quality Engineer, was assigned to perform web automation for the company’s website.
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!!