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](
Jest + Playwright - Test callbacks of event-based DOM library
firefox browser does not start in playwright
Is it possible to get the selector from a locator object in playwright?
How to run a list of test suites in a single file concurrently in jest?
Running Playwright in Azure Function
firefox browser does not start in playwright
This question is quite close to a "need more focus" question. But let's try to give it some focus:
Does Playwright has access to the cPicker object on the page? Does it has access to the window object?
Yes, you can access both cPicker and the window object inside an evaluate call.
Should I trigger the events from the HTML file itself, and in the callbacks, print in the DOM the result, in some dummy-element, and then infer from that dummy element text that the callbacks fired?
Exactly, or you can assign values to a javascript variable:
const cPicker = new ColorPicker({
onClickOutside(e){
},
onInput(color){
window['color'] = color;
},
onChange(color){
window['result'] = color;
}
})
And then
it('Should call all callbacks with correct arguments', async() => {
await page.goto(`http://localhost:5000/tests/visual/basic.html`, {waitUntil:'load'})
// Wait until the next frame
await page.evaluate(() => new Promise(requestAnimationFrame))
// Act
// Assert
const result = await page.evaluate(() => window['color']);
// Check the value
})
Check out the latest blogs from LambdaTest on this topic:
Native apps are developed specifically for one platform. Hence they are fast and deliver superior performance. They can be downloaded from various app stores and are not accessible through browsers.
One of the essential parts when performing automated UI testing, whether using Selenium or another framework, is identifying the correct web elements the tests will interact with. However, if the web elements are not located correctly, you might get NoSuchElementException in Selenium. This would cause a false negative result because we won’t get to the actual functionality check. Instead, our test will fail simply because it failed to interact with the correct element.
Smartphones have changed the way humans interact with technology. Be it travel, fitness, lifestyle, video games, or even services, it’s all just a few touches away (quite literally so). We only need to look at the growing throngs of smartphone or tablet users vs. desktop users to grasp this reality.
As part of one of my consulting efforts, I worked with a mid-sized company that was looking to move toward a more agile manner of developing software. As with any shift in work style, there is some bewilderment and, for some, considerable anxiety. People are being challenged to leave their comfort zones and embrace a continuously changing, dynamic working environment. And, dare I say it, testing may be the most ‘disturbed’ of the software roles in agile development.
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!!