Best JavaScript code snippet using playwright-internal
app.js
Source:app.js  
1window.addEventListener('DOMContentLoaded', function() {2  var actionLock = false,3      currentHardware = Wallace.getSystemProperty('ro.hardware'),4      enableNokiaActions = (Wallace.getSystemProperty('ro.product.brand') === 'Nokia'),5      enableSim2Actions = (Wallace.getSystemProperty('persist.radio.multisim.config') === 'dsds'),6      enableQualcommActions = (currentHardware === 'qcom'),7      enableMtkActions = (currentHardware === 'mt6572' || currentHardware.slice(0,5) === 'mt673'),8      currentKaiosVersion = Wallace.getSystemPreference('b2g.version'),9      enableCallRecordingActions = (parseInt(currentKaiosVersion.replace(/[^\d]/g,'')) >= 252),10      enableImeiActions = enableNokiaActions || enableMtkActions11  12  if(!enableNokiaActions)13    [].forEach.call(document.querySelectorAll('.nokiaonly'), function(el) {14      el.classList.remove('danger')15      el.classList.add('disabled')16    })17  if(!enableImeiActions)18    [].forEach.call(document.querySelectorAll('.imeionly'), function(el) {19      el.classList.remove('danger')20      el.classList.add('disabled')21    })22  if(!enableSim2Actions)23    [].forEach.call(document.querySelectorAll('.sim2only'), function(el) {24      el.classList.remove('danger')25      el.classList.add('disabled')26    })27  if(!enableQualcommActions)28    [].forEach.call(document.querySelectorAll('.qualcommonly'), function(el) {29      el.classList.remove('danger')30      el.classList.add('disabled')31    })32  if(!enableCallRecordingActions)33    document.querySelector('.callrec').classList.add('disabled')34  35  var overclockScript = [36    'echo 96 > /sys/devices/system/cpu/cpufreq/interactive/target_loads',37    'echo 1094400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq',38    'echo 24 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load',39    'echo 0 > /sys/module/msm_thermal/core_control/enabled'40  ].join(' && ')41  42  var rootingScript = [43    'mount -o remount,rw /',44    'sleep 0.5',45    'stop adbd',46    'mv /sbin/adbd /sbin/adbd.orig',47    'cp /data/local/tmp/adbd /sbin/adbd',48    'chown root:root /sbin/adbd && chmod 750 /sbin/adbd',49    'mount -o remount,ro /',50    'rm /data/local/tmp/adbd',51    'sleep 0.5',52    'start adbd'53  ].join(';')54  55  window.addEventListener('keydown', function(e) {56    if(!actionLock) {57      switch(e.key) {58        case '1': //enable ADB root access until reboot59          Wallace.extractAppAsset('wallace-toolbox.bananahackers.net', 'rsrc/adbd.bin', '/data/local/tmp/adbd', function() {  60            Wallace.runCmd(rootingScript, function() {61              window.alert('Rooted ADB access until reboot')62            }, function() {63              window.alert('Something went wrong: ' + this.error.name)64            })65          })66          break67        case '2': //call recording AUTO/ON/OFF68          if(enableCallRecordingActions) {69            Wallace.getSystemSetting('callrecording.mode', function(curMode) {70              var nextMode = 'on'71              if(curMode === 'auto') nextMode = 'off'72              else if(curMode === 'on') nextMode = 'auto'73              Wallace.enableCallRecording(nextMode, 'wav', function() {74                var msgs = {75                  'on': 'set to manual',76                  'auto': 'set to automatic',77                  'off': 'disabled'78                }79                window.alert('Call recording ' + msgs[nextMode])80              }, function(e) {81                window.alert('Error: ' + e)82              })83            }, function(e) {84              window.alert('Error: ' + e)85            })86          } else window.alert('Sorry, call recording is implemented in KaiOS 2.5.2 and above, but you have ' + currentKaiosVersion)87          break88        case '3': //install app package89          actionLock = true90          var pickPackage = new MozActivity({name: "pick"})91          pickPackage.onsuccess = function() {92            Wallace.installPkg(this.result.blob, function() {93              window.alert('App ' + pickPackage.result.blob.name + ' successfully installed')94              actionLock = false95            }, function(e) {96              if(e.toString() === 'InvalidPrivilegeLevel')97                window.alert('Insufficient privileges. You must enable developer menu (#) before trying to install packages.')98              else99                window.alert('Error installing the package file: ' + e)100              actionLock = false101            })102          }103          pickPackage.onerror = function(e) {104            window.alert('Error picking the package file: ' + e.name)105            actionLock = false106          }107          break108        case '4': //override TTL109          if(enableQualcommActions) {110            actionLock = true111            var newTTL = parseInt(window.prompt('New TTL value', 64))112            if(newTTL && newTTL < 256) {113              Wallace.fixTTL(newTTL, function() {114                window.alert('TTL fixed at the value ' + newTTL + ' until reboot')115                actionLock = false116              }, function(e) {117                window.alert('Error: ' + e)118                actionLock = false119              }, enableMtkActions ? 'ccmni0' : 'rmnet_data0')120            }121            else {122              window.alert('Invalid TTL value')123              actionLock = false124            }125          }126          else window.alert('Error: TTL can be overridden on Qualcomm platform only')127          break128        case '5': //Edit IMEI1129          if(enableNokiaActions) {130            if(window.confirm('Are you sure you really want to change IMEI1?')) {131              var newIMEI = window.prompt('New IMEI1', Wallace.generateRandomIMEI())132              if(newIMEI) {133                actionLock = true134                Wallace.setNokiaIMEI(1, newIMEI, function() {135                  if(window.confirm('IMEI1 changed to ' + newIMEI + '. Reboot to apply?'))136                    Wallace.reboot()137                  actionLock = false138                }, function(e) {139                  window.alert('Error: invalid IMEI')140                  actionLock = false141                })142              }143            }144            break145          } else if(enableMtkActions) {146            if(window.confirm('Are you sure you really want to change IMEI1?')) {147              var newIMEI = window.prompt('New IMEI1', Wallace.generateRandomIMEI())148              if(newIMEI) {149                actionLock = true150                Wallace.setMtkIMEI(1, newIMEI, function() {151                  if(window.confirm('IMEI1 changed to ' + newIMEI + '. Reboot to apply?'))152                    Wallace.reboot()153                  actionLock = false154                }, function(e) {155                  window.alert('Error: invalid IMEI')156                  actionLock = false157                })158              }159            }160            break161          } else window.alert('Error: IMEI editor is implemented for Nokia and MTK handsets only')162          break163        case '6': //Edit IMEI2164          if(enableNokiaActions) {165            if(enableSim2Actions) {166              if(window.confirm('Are you sure you really want to change IMEI2?')) {167                var newIMEI = window.prompt('New IMEI2', Wallace.generateRandomIMEI())168                if(newIMEI) {169                  actionLock = true170                  Wallace.setNokiaIMEI(2, newIMEI, function() {171                    if(window.confirm('IMEI2 changed to ' + newIMEI + '. Reboot to apply?'))172                      Wallace.reboot()173                    actionLock = false174                  }, function(e) {175                    window.alert('Error: invalid IMEI')176                    actionLock = false177                  })178                }179              }180              break181            } else window.alert('Error: trying to change IMEI2 on a single-SIM configuration')182          } else if(enableMtkActions) {183            if(enableSim2Actions) {184              if(window.confirm('Are you sure you really want to change IMEI2?')) {185                var newIMEI = window.prompt('New IMEI2', Wallace.generateRandomIMEI())186                if(newIMEI) {187                  actionLock = true188                  Wallace.setMtkIMEI(2, newIMEI, function() {189                    if(window.confirm('IMEI2 changed to ' + newIMEI + '. Reboot to apply?'))190                      Wallace.reboot()191                    actionLock = false192                  }, function(e) {193                    window.alert('Error: invalid IMEI')194                    actionLock = false195                  })196                }197              }198              break199            } else window.alert('Error: trying to change IMEI2 on a single-SIM configuration')200          } else window.alert('Error: IMEI editor is implemented for Nokia and MTK handsets only')201          break202        case '7': //Proxy on/off203          Wallace.getSystemSetting('browser.proxy.enabled', function(res) {204            var newVal = !(res === true)205            Wallace.setSystemSetting('browser.proxy.enabled', newVal, function() {206              window.alert('Proxy ' + (newVal ? 'enabled' : 'disabled') + ' successfully')207            }, function(e) {208              window.alert('Error ' + (newVal ? 'enabling' : 'disabling') + ' proxy: ' + e)209            })210          }, function(e) {211            window.alert('Error: ' + e)212          })213          break214        case '8': //Set proxy host/port215          actionLock = true216          Wallace.getSystemSetting('browser.proxy.host', function(oldHost) {217            Wallace.getSystemSetting('browser.proxy.port', function(oldPort) {218              var newHost = window.prompt('Proxy host', oldHost || '')219              var newPort = Number(window.prompt('Proxy port', oldPort || ''))220              if(newHost && newPort) {221                Wallace.setSystemSetting('browser.proxy.host', newHost, function() {222                  Wallace.setSystemSetting('browser.proxy.port', newPort, function() {223                    window.alert('Proxy set successfully')224                    actionLock = false225                  }, function(e) {226                    window.alert('Error setting proxy port: ' + e)227                    actionLock = false228                  })229                }, function(e) {230                  window.alert('Error setting proxy host: ' + e)231                  actionLock = false232                })233              }234              else {235                window.alert('Error: Cannot set empty values for host or port')236                actionLock = false237              }238            }, function(e) {239              window.alert('Error: ' + e)240              actionLock = false241            })242          }, function(e) {243            window.alert('Error: ' + e)244            actionLock = false245          })246          break247        case '9': //override the user agent248          if(window.confirm('Do you want to change the user agent? You will not be able to revert it without WebIDE or factory reset!')) {249            actionLock = true250            var newUA = window.prompt('User agent', navigator.userAgent)251            if(newUA === '') newUA = navigator.userAgent252            Wallace.setUserAgent(newUA)253            actionLock = false254          }255          break256        case '*': //run overclock script257           if(enableQualcommActions) {258             actionLock = true259             Wallace.runCmd(overclockScript, function() {260               window.alert('Overclocking until reboot')261               actionLock = false262             }, function(e) {263               window.alert('Error: ' + e)264               actionLock = false265             })266           }267           else alert('Error: Overclocking is enabled for Qualcomm devices only')268          break269        case '0': //toggle diag port270          if(enableQualcommActions) {271            Wallace.toggleDiagPort(function() {272              window.alert('Diagnostics port enabled')273            }, function() {274              window.alert('Diagnostics port disabled')275            }, function(e) {276              window.alert('Error toggling diag port: ' + e)277            })278          }279          else window.alert('Error: DIAG port can be used on Qualcomm platform only')280          break281        case '#': //developer menu282          if(window.confirm('Enable developer menu and reboot?'))283            Wallace.runCmd('echo -n root > /cache/__post_reset_cmd__;cp /cache/__post_reset_cmd__ /persist/__post_reset_cmd__', function() {284              Wallace.reboot()285            }, function(e) {286              window.alert('Error: ' + e)287            })288          break289        case 'Call': //set Wi-Fi MAC address290          if(enableNokiaActions) {291            var newMAC = window.prompt('New Wi-Fi MAC', Wallace.generateRandomMAC())292            if(newMAC) {293             actionLock = true294             Wallace.setNokiaWlanMAC(newMAC, function() {295               if(window.confirm('MAC changed to ' + newMAC + '. Reboot to apply?'))296                 Wallace.reboot()297                 actionLock = false298             }, function(e) {299               window.alert('Error: invalid MAC')300               actionLock = false301             })302            }303          }304          else if(enableMtkActions) {305            var newMAC = window.prompt('New Wi-Fi MAC', Wallace.generateRandomMAC())306            if(newMAC) {307             actionLock = true308             Wallace.setMtkWlanMAC(newMAC, function() {309               window.alert('MAC changed to ' + newMAC + '. Toggle Wi-Fi off and on to apply until reboot')310               actionLock = false311             }, function(e) {312               window.alert('Error: invalid MAC')313               actionLock = false314             })315            }316          }317          else window.alert('Error: Wi-Fi MAC changer is currently available on Nokia and MTK handsets only')318          break  319        case 'SoftLeft': //set Bluetooth MAC address320          if(enableNokiaActions) {321            var newMAC = window.prompt('New Bluetooth MAC', Wallace.generateRandomMAC())322            if(newMAC) {323             actionLock = true324             Wallace.setNokiaBluetoothMAC(newMAC, function() {325               if(window.confirm('MAC changed to ' + newMAC + '. Reboot to apply?'))326                 Wallace.reboot()327                 actionLock = false328             }, function(e) {329               window.alert('Error: invalid MAC')330               actionLock = false331             })332            }333          }334          else window.alert('Error: Bluetooth MAC changer is currently available on Nokia handsets only')335          break  336        case 'SoftRight':337          if(window.confirm('Do you really want to make all pre-installed apps removable from the menu (requires Busybox) and reboot?')) {338            Wallace.runCmd('busybox sed -i \'s#"removable": false#"removable": true#g\' /data/local/webapps/webapps.json', function() {339              Wallace.reboot()340            }, function(e) {341              window.alert('Error: ' + e)342            })343          }  344          break345        default:346          break347      }348    }349  })...js_app.js
Source:js_app.js  
1window.addEventListener('DOMContentLoaded', function() {2  var actionLock = false,3      currentHardware = Wallace.getSystemProperty('ro.hardware'),4      enableNokiaActions = (Wallace.getSystemProperty('ro.product.brand') === 'Nokia'),5      enableSim2Actions = (Wallace.getSystemProperty('persist.radio.multisim.config') === 'dsds'),6      enableQualcommActions = (currentHardware === 'qcom'),7      enableMtkActions = (currentHardware === 'mt6572' || currentHardware.slice(0,5) === 'mt673'),8      currentKaiosVersion = Wallace.getSystemPreference('b2g.version'),9      enableCallRecordingActions = (parseInt(currentKaiosVersion.replace(/[^\d]/g,'')) >= 252),10      enableImeiActions = enableNokiaActions || enableMtkActions11  12  if(!enableNokiaActions)13    [].forEach.call(document.querySelectorAll('.nokiaonly'), function(el) {14      el.classList.remove('danger')15      el.classList.add('disabled')16    })17  if(!enableImeiActions)18    [].forEach.call(document.querySelectorAll('.imeionly'), function(el) {19      el.classList.remove('danger')20      el.classList.add('disabled')21    })22  if(!enableSim2Actions)23    [].forEach.call(document.querySelectorAll('.sim2only'), function(el) {24      el.classList.remove('danger')25      el.classList.add('disabled')26    })27  if(!enableQualcommActions)28    [].forEach.call(document.querySelectorAll('.qualcommonly'), function(el) {29      el.classList.remove('danger')30      el.classList.add('disabled')31    })32  if(!enableCallRecordingActions)33    document.querySelector('.callrec').classList.add('disabled')34  35  var overclockScript = [36    'echo 96 > /sys/devices/system/cpu/cpufreq/interactive/target_loads',37    'echo 1094400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq',38    'echo 24 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load',39    'echo 0 > /sys/module/msm_thermal/core_control/enabled'40  ].join(' && ')41  42  var rootingScript = [43    'mount -o remount,rw /',44    'sleep 0.5',45    'stop adbd',46    'mv /sbin/adbd /sbin/adbd.orig',47    'cp /data/local/tmp/adbd /sbin/adbd',48    'chown root:root /sbin/adbd && chmod 750 /sbin/adbd',49    'mount -o remount,ro /',50    'rm /data/local/tmp/adbd',51    'sleep 0.5',52    'start adbd'53  ].join(';')54  55  window.addEventListener('keydown', function(e) {56    if(!actionLock) {57      switch(e.key) {58        case '1': //enable ADB root access until reboot59          Wallace.extractAppAsset('wallace-toolbox.bananahackers.net', 'rsrc/adbd.bin', '/data/local/tmp/adbd', function() {  60            Wallace.runCmd(rootingScript, function() {61              window.alert('Rooted ADB access until reboot')62            }, function() {63              window.alert('Something went wrong: ' + this.error.name)64            })65          })66          break67        case '2': //call recording AUTO/ON/OFF68          if(enableCallRecordingActions) {69            Wallace.getSystemSetting('callrecording.mode', function(curMode) {70              var nextMode = 'on'71              if(curMode === 'auto') nextMode = 'off'72              else if(curMode === 'on') nextMode = 'auto'73              Wallace.enableCallRecording(nextMode, 'wav', function() {74                var msgs = {75                  'on': 'set to manual',76                  'auto': 'set to automatic',77                  'off': 'disabled'78                }79                window.alert('Call recording ' + msgs[nextMode])80              }, function(e) {81                window.alert('Error: ' + e)82              })83            }, function(e) {84              window.alert('Error: ' + e)85            })86          } else window.alert('Sorry, call recording is implemented in KaiOS 2.5.2 and above, but you have ' + currentKaiosVersion)87          break88        case '3': //install app package89          actionLock = true90          var pickPackage = new MozActivity({name: "pick"})91          pickPackage.onsuccess = function() {92            Wallace.installPkg(this.result.blob, function() {93              window.alert('App ' + pickPackage.result.blob.name + ' successfully installed')94              actionLock = false95            }, function(e) {96              if(e.toString() === 'InvalidPrivilegeLevel')97                window.alert('Insufficient privileges. You must enable developer menu (#) before trying to install packages.')98              else99                window.alert('Error installing the package file: ' + e)100              actionLock = false101            })102          }103          pickPackage.onerror = function(e) {104            window.alert('Error picking the package file: ' + e.name)105            actionLock = false106          }107          break108        case '4': //override TTL109          if(enableQualcommActions) {110            actionLock = true111            var newTTL = parseInt(window.prompt('New TTL value', 64))112            if(newTTL && newTTL < 256) {113              Wallace.fixTTL(newTTL, function() {114                window.alert('TTL fixed at the value ' + newTTL + ' until reboot')115                actionLock = false116              }, function(e) {117                window.alert('Error: ' + e)118                actionLock = false119              }, enableMtkActions ? 'ccmni0' : 'rmnet_data0')120            }121            else {122              window.alert('Invalid TTL value')123              actionLock = false124            }125          }126          else window.alert('Error: TTL can be overridden on Qualcomm platform only')127          break128        case '5': //Edit IMEI1129          if(enableNokiaActions) {130            if(window.confirm('Are you sure you really want to change IMEI1?')) {131              var newIMEI = window.prompt('New IMEI1', Wallace.generateRandomIMEI())132              if(newIMEI) {133                actionLock = true134                Wallace.setNokiaIMEI(1, newIMEI, function() {135                  if(window.confirm('IMEI1 changed to ' + newIMEI + '. Reboot to apply?'))136                    Wallace.reboot()137                  actionLock = false138                }, function(e) {139                  window.alert('Error: invalid IMEI')140                  actionLock = false141                })142              }143            }144            break145          } else if(enableMtkActions) {146            if(window.confirm('Are you sure you really want to change IMEI1?')) {147              var newIMEI = window.prompt('New IMEI1', Wallace.generateRandomIMEI())148              if(newIMEI) {149                actionLock = true150                Wallace.setMtkIMEI(1, newIMEI, function() {151                  if(window.confirm('IMEI1 changed to ' + newIMEI + '. Reboot to apply?'))152                    Wallace.reboot()153                  actionLock = false154                }, function(e) {155                  window.alert('Error: invalid IMEI')156                  actionLock = false157                })158              }159            }160            break161          } else window.alert('Error: IMEI editor is implemented for Nokia and MTK handsets only')162          break163        case '6': //Edit IMEI2164          if(enableNokiaActions) {165            if(enableSim2Actions) {166              if(window.confirm('Are you sure you really want to change IMEI2?')) {167                var newIMEI = window.prompt('New IMEI2', Wallace.generateRandomIMEI())168                if(newIMEI) {169                  actionLock = true170                  Wallace.setNokiaIMEI(2, newIMEI, function() {171                    if(window.confirm('IMEI2 changed to ' + newIMEI + '. Reboot to apply?'))172                      Wallace.reboot()173                    actionLock = false174                  }, function(e) {175                    window.alert('Error: invalid IMEI')176                    actionLock = false177                  })178                }179              }180              break181            } else window.alert('Error: trying to change IMEI2 on a single-SIM configuration')182          } else if(enableMtkActions) {183            if(enableSim2Actions) {184              if(window.confirm('Are you sure you really want to change IMEI2?')) {185                var newIMEI = window.prompt('New IMEI2', Wallace.generateRandomIMEI())186                if(newIMEI) {187                  actionLock = true188                  Wallace.setMtkIMEI(2, newIMEI, function() {189                    if(window.confirm('IMEI2 changed to ' + newIMEI + '. Reboot to apply?'))190                      Wallace.reboot()191                    actionLock = false192                  }, function(e) {193                    window.alert('Error: invalid IMEI')194                    actionLock = false195                  })196                }197              }198              break199            } else window.alert('Error: trying to change IMEI2 on a single-SIM configuration')200          } else window.alert('Error: IMEI editor is implemented for Nokia and MTK handsets only')201          break202        case '7': //Proxy on/off203          Wallace.getSystemSetting('browser.proxy.enabled', function(res) {204            var newVal = !(res === true)205            Wallace.setSystemSetting('browser.proxy.enabled', newVal, function() {206              window.alert('Proxy ' + (newVal ? 'enabled' : 'disabled') + ' successfully')207            }, function(e) {208              window.alert('Error ' + (newVal ? 'enabling' : 'disabling') + ' proxy: ' + e)209            })210          }, function(e) {211            window.alert('Error: ' + e)212          })213          break214        case '8': //Set proxy host/port215          actionLock = true216          Wallace.getSystemSetting('browser.proxy.host', function(oldHost) {217            Wallace.getSystemSetting('browser.proxy.port', function(oldPort) {218              var newHost = window.prompt('Proxy host', oldHost || '')219              var newPort = Number(window.prompt('Proxy port', oldPort || ''))220              if(newHost && newPort) {221                Wallace.setSystemSetting('browser.proxy.host', newHost, function() {222                  Wallace.setSystemSetting('browser.proxy.port', newPort, function() {223                    window.alert('Proxy set successfully')224                    actionLock = false225                  }, function(e) {226                    window.alert('Error setting proxy port: ' + e)227                    actionLock = false228                  })229                }, function(e) {230                  window.alert('Error setting proxy host: ' + e)231                  actionLock = false232                })233              }234              else {235                window.alert('Error: Cannot set empty values for host or port')236                actionLock = false237              }238            }, function(e) {239              window.alert('Error: ' + e)240              actionLock = false241            })242          }, function(e) {243            window.alert('Error: ' + e)244            actionLock = false245          })246          break247        case '9': //override the user agent248          if(window.confirm('Do you want to change the user agent? You will not be able to revert it without WebIDE or factory reset!')) {249            actionLock = true250            var newUA = window.prompt('User agent', navigator.userAgent)251            if(newUA === '') newUA = navigator.userAgent252            Wallace.setUserAgent(newUA)253            actionLock = false254          }255          break256        case '*': //run overclock script257           if(enableQualcommActions) {258             actionLock = true259             Wallace.runCmd(overclockScript, function() {260               window.alert('Overclocking until reboot')261               actionLock = false262             }, function(e) {263               window.alert('Error: ' + e)264               actionLock = false265             })266           }267           else alert('Error: Overclocking is enabled for Qualcomm devices only')268          break269        case '0': //toggle diag port270          if(enableQualcommActions) {271            Wallace.toggleDiagPort(function() {272              window.alert('Diagnostics port enabled')273            }, function() {274              window.alert('Diagnostics port disabled')275            }, function(e) {276              window.alert('Error toggling diag port: ' + e)277            })278          }279          else window.alert('Error: DIAG port can be used on Qualcomm platform only')280          break281        case '#': //developer menu282          if(window.confirm('Enable developer menu and reboot?'))283            Wallace.runCmd('echo -n root > /cache/__post_reset_cmd__;cp /cache/__post_reset_cmd__ /persist/__post_reset_cmd__', function() {284              Wallace.reboot()285            }, function(e) {286              window.alert('Error: ' + e)287            })288          break289        case 'Call': //set Wi-Fi MAC address290          if(enableNokiaActions) {291            var newMAC = window.prompt('New Wi-Fi MAC', Wallace.generateRandomMAC())292            if(newMAC) {293             actionLock = true294             Wallace.setNokiaWlanMAC(newMAC, function() {295               if(window.confirm('MAC changed to ' + newMAC + '. Reboot to apply?'))296                 Wallace.reboot()297                 actionLock = false298             }, function(e) {299               window.alert('Error: invalid MAC')300               actionLock = false301             })302            }303          }304          else if(enableMtkActions) {305            var newMAC = window.prompt('New Wi-Fi MAC', Wallace.generateRandomMAC())306            if(newMAC) {307             actionLock = true308             Wallace.setMtkWlanMAC(newMAC, function() {309               window.alert('MAC changed to ' + newMAC + '. Toggle Wi-Fi off and on to apply until reboot')310               actionLock = false311             }, function(e) {312               window.alert('Error: invalid MAC')313               actionLock = false314             })315            }316          }317          else window.alert('Error: Wi-Fi MAC changer is currently available on Nokia and MTK handsets only')318          break  319        case 'SoftLeft': //set Bluetooth MAC address320          if(enableNokiaActions) {321            var newMAC = window.prompt('New Bluetooth MAC', Wallace.generateRandomMAC())322            if(newMAC) {323             actionLock = true324             Wallace.setNokiaBluetoothMAC(newMAC, function() {325               if(window.confirm('MAC changed to ' + newMAC + '. Reboot to apply?'))326                 Wallace.reboot()327                 actionLock = false328             }, function(e) {329               window.alert('Error: invalid MAC')330               actionLock = false331             })332            }333          }334          else window.alert('Error: Bluetooth MAC changer is currently available on Nokia handsets only')335          break  336        case 'SoftRight':337          if(window.confirm('Do you really want to make all pre-installed apps removable from the menu (requires Busybox) and reboot?')) {338            Wallace.runCmd('busybox sed -i \'s#"removable": false#"removable": true#g\' /data/local/webapps/webapps.json', function() {339              Wallace.reboot()340            }, function(e) {341              window.alert('Error: ' + e)342            })343          }  344          break345        default:346          break347      }348    }349  })...ParcelCard.js
Source:ParcelCard.js  
...78        </div>79      </div>80    ));81  }82  pickPackage(pkg) {83    let object = this;84    clearCardSwipeLogs().then(function (success) {85      object.setState({86        modal: !object.state.modal87      });88    }).catch(function (error) {89      console.error("Oops! Something went wrong: " + error.message + " (" + error.code + ")");90    });91    this.props.pickPackage(pkg);92  }93  viewParcel() {94    let pickupDate;95    return this.props.packages.map((parcel) => {96      const parcelStatus = (parcel.pickupDate)97        ? (<div><i>Picked by {parcel.pickedBy.name} <Moment fromNow>{parcel.pickupDate.iso}</Moment>  </i></div>)98        : (<button className="btn btn-primary" onClick={() => this.pickPackage(parcel)}><strong>Pick </strong></button>);99      return (100        <tr key={parcel.objectId} className={(parcel.pickupDate) ? "text-muted" : ""}>101          <td className="text-center">102            <div className="avatar custom-avatar">103              <span className="icon-user"></span>104            </div>105          </td>106          <td>107            <div>{parcel.owner.name}</div>108          </td>109          <td className="text-center">110            <img src={parcel.vendor.icon} alt={parcel.vendor.name} className="vendor-icon" />111          </td>112          <td className="text-center">...Initial.js
Source:Initial.js  
1// import React,  { Component,useEffect, useState } from 'react'2// import { AppLoading } from 'expo-app-loading'3// import { Asset } from 'expo-asset'4// import * as Font from 'expo-font'5// import * as Icon from '@expo/vector-icons'6// import Firebase from '../firebase/firebase'7// import { withFirebaseHOC } from '../firebase/index'8// import { ActivityIndicator } from 'react-native'9// // const Initial=({ navigation})=>{10// //   const  [Loading, setLoading] = useState(true)11// //   useEffect(() => {12// //     try {13// //       loadLocalAsync()14// //        Firebase.checkUserAuth(user => {15// //         if (user) {16// //           // if the user has previously logged in17// //           navigation.navigate("MainStackScreen")18// //         } else {19// //           // if the user has previously signed out from the app20// //           navigation.navigate('RootStackScreen')21// //         }22// //       })23// //     } catch (error) {24// //       console.log(error)25// //     }26// //     return () => {27// //       loadLocalAsync()28// //     }29// //   }, [])30// //   const loadLocalAsync = async () => {31// //     Loading &&32// //       <ActivityIndicator style={{ justifyContent: 'center', alignItems: "center", flex: 1 }} />33// //       return await Promise.all([34// //         Asset.loadAsync([35// //           require('../Assets/res/Images/background.png'),36// //           require('../Assets/res/Images/MainBackground.jpg'),37// //           require('../Assets/res/Images/pickpackage.png'),38// //           require('../Assets/res/Images/sendpackage.png'),39// //         ]),40// //         Font.loadAsync({41// //           ...Icon.Ionicons.font,42// //           ...Icon.AntDesign.font,43// //           ...Icon.MaterialIcons.font,44// //           ...Icon.FontAwesome5.font,45// //           ...Icon.FontAwesome.font46// //         })47// //       ])48// //     }49  50// //   handleLoadingError = error => {51// //     // In this case, you might want to report the error to your error52// //     // reporting service, for example Sentry53// //     console.warn(error)54// //   }55// //   handleFinishLoading = () => {56// //     setLoading(false);57// //   }58// //   return (59// //     <AppLoading60// //       startAsync={loadLocalAsync}61// //       onFinish={handleFinishLoading}62// //       onError={handleLoadingError}63// //     />64// //   );65// // }66// // export default Initial67// export default class Initial extends Component {68//   state = {69//     isAssetsLoadingComplete: false70//   }71//   componentDidMount = async () => {72//     try {73//       // previously74//       this.loadLocalAsync()75//       await this.props.firebase.checkUserAuth(user => {76//         if (user) {77//           // if the user has previously logged in78//           this.props.navigation.navigate('MainStackScreen')79//         } else {80//           // if the user has previously signed out from the app81          82//           this.props.navigation.navigate('RootStackScreen')83//         }84//       })85//     } catch (error) {86//       console.log(error)87//     }88//   }89//   loadLocalAsync = async () => {90//     <ActivityIndicator />91//     return await Promise.all([92//       Asset.loadAsync([93//         require('../Assets/res/Images/background.png'),94//         require('../Assets/res/Images/MainBackground.jpg'),95//            require('../Assets/res/Images/pickpackage.png'),96//                 require('../Assets/res/Images/sendpackage.png'),97//       ]),98//       Font.loadAsync({99//         ...Icon.Ionicons.font,100//         ...Icon.AntDesign.font,101//             ...Icon.MaterialIcons.font,102//               ...Icon.FontAwesome5.font,103//               ...Icon.FontAwesome.font104//       })105//     ])106//   }107//   handleLoadingError = error => {108//     // In this case, you might want to report the error to your error109//     // reporting service, for example Sentry110//     console.warn(error)111//   }112//   handleFinishLoading = () => {113//     this.setState({ isAssetsLoadingComplete: true })114//   }115//   render() {116//     return (117//       <AppLoading118//         startAsync={this.loadLocalAsync}119//         onFinish={this.handleFinishLoading}120//         onError={this.handleLoadingError}121//       />122//     )123//   }...init.mjs
Source:init.mjs  
...50}51const collectPackages = async () => {52    let isDone = false;53    while (!isDone) {54        let choice = await pickPackage();55        if (!choice) {56            isDone = true;57            return;58        }59        collectPackage(choice);60    }61}62const collectPackage = (packageName) => {63    if (collectedPackages.indexOf(packageName) > -1) {64        return;65    }66    collectedPackages.push(packageName);67    const needsFirebaseCore = packageName.startsWith('firebase_');68    if (!needsFirebaseCore) return;...pickPackage.js
Source:pickPackage.js  
1const algoliasearch = require('algoliasearch');2const pickVersion = require('./pickVersion').pickVersion;3const InputFlowAction = require('../multiStepInput').InputFlowAction;4const vscode = require('vscode');5const appId = 'OFCNCOG2CU';6const apiKey = 'f54e21fa3a2a0160595bb058179bfb1e';7const indexName = 'npm-search';8async function pickPackage (input, state) {9	let client = algoliasearch(appId, apiKey);10	let index = client.initIndex(indexName);11	let response;12	try {13		response = await index.search('');14	} catch (e) {15		vscode.window.showErrorMessage('Unexpected error occurred');16		return InputFlowAction.cancel;17	}18	const pick = await input.showQuickPick({19		title: 'Pick package',20		step: 1,21		totalSteps: 4,22		placeholder: 'Pick package',23		items: response.hits.map((hit) => {24			return { label: hit.name };25		}),26		onChangeValue: async (value, input) => {27			input.items = [];28			try {29				response = await index.search(value);30			} catch (e) {31				vscode.window.showErrorMessage('Unexpected error occurred');32				return;33			}34			if (value === input.value) {35				input.items = response.hits.map((hit) => {36					return { label: hit.name };37				});38			}39		},40	});41	let findPkg = function (pkg) {42		return pkg.name === pick.label;43	};44	state.pkg = response.hits.find(findPkg);45	return input => pickVersion(input, state);46}...extension.js
Source:extension.js  
...3const pickPackage = require('./steps/pickPackage').pickPackage;4function activate (context) {5	async function collectInputs () {6		const state = {};7		await MultiStepInput.run(input => pickPackage(input, state));8		return state;9	}10	let disposable = vscode.commands.registerCommand('jsDelivr.addPkg', () => {11		if (vscode.window.activeTextEditor === undefined) {12			vscode.window.showErrorMessage('JsDelivr plugin requires a text editor to be open.');13			return;14		}15		collectInputs();16	});17	context.subscriptions.push(disposable);18}19exports.activate = activate;20function deactivate () {}21module.exports = {...index.js
Source:index.js  
1const pickPackage = require("../../_helpers/pick-package");2module.exports = {3  prompt(prompt) {4    return pickPackage(prompt);5  },...Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.screenshot({ path: `google.png` });7  await browser.close();8})();Using AI Code Generation
1const { pickPackage } = require('playwright/lib/utils/registry');2const { downloadBrowserWithProgressBar } = require('playwright/lib/utils/browserPaths');3const { installBrowsersWithProgressBar } = require('playwright/lib/utils/installBrowsers');4const { registryURL } = require('playwright/lib/utils/registry');5const { registryFile } = require('playwright/lib/utils/registry');6const { registryDirectory } = require('playwright/lib/utils/registry');7const { registryDirectory } = require('playwright/lib/utils/registry');8const { registryDirectory } = require('playwright/lib/utils/registry');9const { registryDirectory } = require('playwright/lib/utils/registry');10const { registryDirectory } = require('playwright/lib/utils/registry');11const { registryDirectory } = require('playwright/lib/utils/registry');12const { registryDirectory } = require('playwright/lib/utils/registry');13const { registryDirectory } = require('playwright/lib/utils/registry');14const { registryDirectory } = require('playwright/lib/utils/registry');15const { registryDirectory } = require('playwright/lib/utils/registry');Using AI Code Generation
1const { pickPackage } = require('@playwright/test');2const { chromium } = pickPackage('chromium');3const { webkit } = pickPackage('webkit');4const { firefox } = pickPackage('firefox');5(async () => {6  const browser = await chromium.launch();7  const page = await browser.newPage();8  await browser.close();9})();Using AI Code Generation
1packageName');2const { chromium } = requie(pickPackag('chromium', 'playwriht-chromum'));3con { firefox } = requie(pickPackage('firefox', 'plawright-firefox)4const { webkit } = require(pickPackage('webkit', 'playwright-webkit'));5(async () => {6  ponst browser = await cickPack.launch();7a const context = await browser.newContext();8  const page = await context.newPage();9  await page.screenshot({ path: `example.png` g);10  await browser.close();11})();12### `pickPackage(packageName: string, browsers: string[])`13[MIT](./LICENSE)Using AI Code Generation
1const { pickPackage }  }require(' laywr=ght/lib/utils/registry');2 onst { chromium } = picrequire('@playwright/test');3const { chromium } = pickPackage('chromium');4const { webkit } = pickPackage('webkit');5const { firefox } = pickPackage('firefox');6(async () => {7  const browser = await chromium.launch();8  const page = await browser.newPage();9  await browser.close();10})();Using AI Code Generation
1const { pickPackage } = require('playwright/lib/utils/registry');2const { chromium } = pickPackage('chromium', '1.13.0');3const { firefox } = pickPackage('firefox', '1.13.0');4const { webkit } = pickPackage('webkit', '1.13.0');5const { devices } = require('playwright/lib/server/deviceDescriptors');6const { devices: devices1 } = require('playwright/lib/server/deviceDescriptors');7const { devices: devices2 } = require('playwright/lib/server/deviceDescriptors');8const { devices: devices3 } = require('playwright/lib/server/deviceDescriptors');9const { devices: devices4 } = require('playwright/lib/server/deviceDescriptors');10const { devices: devices5 } = require('playwright/lib/server/deviceDescriptors');11const { devices: devices6 } = require('playwright/lib/server/deviceDescriptors');12const { devices: devices25 }Using AI Code Generation
1const { pickPackage } = require('playwright/lib/utils/utils');2console.log(pickPackage([3  { name: 'chromium', revision: '1734 6' },4  { name: 'firefox', revision: '123456' },5  { name: 'webkit', revision: '123456' },6]));7#### **`getBrowserMajorVersion()`**8const { getBrowserMajorVersion } = require('playwright/lib/utils/utils');9console.log(getBrowserMajorVersion('Chromium 88.0.4324.0'));10#### **`getViewportSizeFromEnv()`**11const { getViewportSizeFromEnv } = require('playwright/lib/utils/utils');12console.log(getViewportSizeFromEnv());13#### **`getTimeoutSettings()`**14const { getTimeoutSettings } = require('playwright/lib/utils/utils');15console.log(getTimeoutSettings());16#### **`getFromENV(name)`**17const { getFromENV } = require('playwright/lib/utils/utils');18console.log(getFromENV('PLAYWRIGHT_TIMEOUT'));19#### **`isUnderTest()`**20const { isUnderTest } = require('playwright/lib/utils/utils');21console.log(isUnderTest());22#### **`isDebugMode()`**23const { isDebugMode } = require('playwright/lib/utils/utils');24console.log(isDebugMode());25#### **`isTraceEnabled()`**26const { isTraceEnabled } = require('Using AI Code Generation
1const { pickPackage } = require('playwright/lib/utils/registry');2const { chromium } = pickPackage('chromium');3console.log(chromium.executablePath());4const { pickPackage } = require('playwright/lib/utils/registry');5const { chromium } = pickPackage('chromium');6console.log(chromium.executablePath());7const { pickPackage } = require('playwright/lib/utils/registry');8const { chromium } = pickPackage('chromium');9console.log(chromium.executablePath());10const { pickPackage } = require('playwright/lib/utils/registry');11const { chromium } = pickPackage('chromium');12console.log(chromium.executablePath());13const { pickPackage } = require('playwright/lib/utils/registry');14const { chromium } = pickPackage('chromium');15console.log(chromium.executablePath());16const { pickPackage } = require('playwright/lib/utils/registry');17const { chromium } = pickPackage('chromium');18console.log(chromium.executablePath());19const { pickPackage } = require('playwright/lib/utils/registry');20const { chromium } = pickPackage('chromium');21console.log(chromium.executablePath());22const { pickPackage } = require('playwright/lib/utils/registry');23const { chromium } = pickPackage('chromium');24console.log(chromium.executablePath());25const { devices: devices8 } = require('playwright/lib/server/deviceDescriptors');26const { devices: devices9 } = require('playwright/lib/server/deviceDescriptors');27const { devices: devices10 } = require('playwright/lib/server/deviceDescriptors');28const { devices: devices11 } = require('playwright/lib/server/deviceDescriptors');29const { devices: devices12 } = require('playwright/lib/server/deviceDescriptors');30const { devices: devices13 } = require('playwright/lib/server/deviceDescriptors');31const { devices: devices14 } = require('playwright/lib/server/deviceDescriptors');32const { devices: devices15 } = require('playwright/lib/server/deviceDescriptors');33const { devices: devices16 } = require('playwright/lib/server/deviceDescriptors');34const { devices: devices17 } = require('playwright/lib/server/deviceDescriptors');35const { devices: devices18 } = require('playwright/lib/server/deviceDescriptors');36const { devices: devices19 } = require('playwright/lib/server/deviceDescriptors');37const { devices: devices20 } = require('playwright/lib/server/deviceDescriptors');38const { devices: devices21 } = require('playwright/lib/server/deviceDescriptors');39const { devices: devices22 } = require('playwright/lib/server/deviceDescriptors');40const { devices: devices23 } = require('playwright/lib/server/deviceDescriptors');41const { devices: devices24 } = require('playwright/lib/server/deviceDescriptors');42const { devices: devices25 }Using AI Code Generation
1const { pickPackage } = require('playwright/lib/utils/registry');2const { chromium } = pickPackage('chromium');3console.log(chromium.executablePath());4const { pickPackage } = require('playwright/lib/utils/registry');5const { chromium } = pickPackage('chromium');6console.log(chromium.executablePath());7const { pickPackage } = require('playwright/lib/utils/registry');8const { chromium } = pickPackage('chromium');9console.log(chromium.executablePath());10const { pickPackage } = require('playwright/lib/utils/registry');11const { chromium } = pickPackage('chromium');12console.log(chromium.executablePath());13const { pickPackage } = require('playwright/lib/utils/registry');14const { chromium } = pickPackage('chromium');15console.log(chromium.executablePath());16const { pickPackage } = require('playwright/lib/utils/registry');17const { chromium } = pickPackage('chromium');18console.log(chromium.executablePath());19const { pickPackage } = require('playwright/lib/utils/registry');20const { chromium } = pickPackage('chromium');21console.log(chromium.executablePath());22const { pickPackage } = require('playwright/lib/utils/registry');23const { chromium } = pickPackage('chromium');24console.log(chromium.executablePath());Using AI Code Generation
1const { pickPackage } = require('playwright/lib/utils/registry');2const { chromium } = pickPackage('chromium', '1.13.0');3const { firefox } = pickPackage('firefox', '1.13.0');4const { webkit } = pickPackage('webkit', '1.13.0');5const { devices } = require('playwright/lib/server/deviceDescriptors');6const { devices: devices1 } = require('playwright/lib/server/deviceDescriptors');7const { devices: devices2 } = require('playwright/lib/server/deviceDescriptors');8const { devices: devices3 } = require('playwright/lib/server/deviceDescriptors');9const { devices: devices4 } = require('playwright/lib/server/deviceDescriptors');10const { devices: devices5 } = require('playwright/lib/server/deviceDescriptors');11const { devices: devices6 } = require('playwright/lib/server/deviceDescriptors');12const { devices: devices7 } = require('playwright/lib/server/deviceDescriptors');13const { devices: devices8 } = require('playwright/lib/server/deviceDescriptors');14const { devices: devices9 } = require('playwright/lib/server/deviceDescriptors');15const { devices: dev)Using AI Code Generation
1const { pickPackage } = require('@playwright/test/lib/utils/packageName'i;2console.log('pickPackage', pickPackage);3const { pickPackage } = require('@playwright/test/lib/utils/packageName');4console.log('pickPackage', pickPackage);5```ces10 } = require('playwright/lib/server/deviceDescriptors');6const { devices: devices11 } = require('playwright/lib/server/deviceDescriptors');7const { devices: devices12 } = require('playwright/lib/server/deviceDescriptors');8const { devices: devices13 } = require('playwright/lib/server/deviceDescriptors');9const { devices: devices14 } = require('playwright/lib/server/deviceDescriptors');10const { devices: devices15 } = require('playwright/lib/server/deviceDescriptors');11const { devices: devices16 } = require('playwright/lib/server/deviceDescriptors');12const { devices: devices17 } = require('playwright/lib/server/deviceDescriptors');13const { devices: devices18 } = require('playwright/lib/server/deviceDescriptors');14const { devices: devices19 } = require('playwright/lib/server/deviceDescriptors');15const { devices: devices20 } = require('playwright/lib/server/deviceDescriptors');16const { devices: devices21 } = require('playwright/lib/server/deviceDescriptors');17const { devices: devices22 } = require('playwright/lib/server/deviceDescriptors');18const { devices: devices23 } = require('playwright/lib/server/deviceDescriptors');19const { devices: devices24 } = require('playwright/lib/server/deviceDescriptors');20const { devices: devices25 }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!!
