Best JavaScript code snippet using cypress
FileUtils.js
Source:FileUtils.js
...8 path = require('path');9const { BaseConfig, ServerConfig } = require('./config');10const { gen_plist } = require('./plist');11const { printLog } = require('./utils');12async function generatePlist(filePath,fileName,ipa_download_url){13 let packageName,version,appName='';14 return new Promise((resolve,reject) =>{15 let temp_fileName = fileName;16 if(temp_fileName.includes('.ipa')){17 temp_fileName = temp_fileName.replace('.ipa','')+'.plist';//å»æ.ipa åç¼å,å ä¸.pliståç¼å18 }else{19 temp_fileName = temp_fileName+'.plist';20 }21 if(checkFile(filePath,temp_fileName)){22 resolve({23 fileName:temp_fileName 24 });25 }26 const parser = new AppInfoParser(path.join(filePath,fileName)) // or xxx.ipa27 parser.parse().then(result => {28 // console.log('app info ----> ', result)29 packageName = result.CFBundleIdentifier||'';30 version = result.CFBundleShortVersionString||'';31 appName = result.CFBundleName||'';32 if(fileName.includes('.ipa')){33 fileName = fileName.replace('.ipa','')+'.plist';//å»æ.ipa åç¼å,å ä¸.pliståç¼å34 }else{35 fileName = fileName+'.plist';36 }37 if(checkFile(filePath,fileName)){38 resolve({39 fileName:fileName 40 });41 }else{42 if(packageName==''||version==""||appName==''){43 console.log(`${fileName} gen plist is err ----> ,packageName || version || appName is null `);44 resolve(-1);45 }46 let opt = {47 url:ipa_download_url,48 packageName : packageName,49 version:version,50 appName:appName51 }52 fs.writeFile(path.join(filePath,fileName),gen_plist(opt),'utf8',async function(error){53 if(error){54 console.log(`çæ${fileName}æ件失败, err:${error}`);55 resolve(-1);56 }57 resolve( {58 fileName:fileName59 });60 })61 }62 }).catch(err => {63 console.log(`${fileName} gen plist is err ----> ,${err} `);64 resolve(-1);65 })66 // console.log(fileName);67 // resolve({68 // fileName:fileName69 // });70 });71}72async function generateFileTree(){73 let filePath = getFilesListPath();74 if(!filePath){75 console.log('è·åæ件ç®å½å¤±è´¥,请æ£æ¥BaseConfigé
ç½®');76 return -1;77 }78 let basePath = path.dirname(filePath);79 let fileName = path.basename(filePath);80 let obj = await fileTree(basePath,fileName,fileName);81 // console.log(JSON.stringify(obj));82 return obj;83}84async function fileTree(basepath,fileName,relativePath){85 let filePath = path.join(basepath,fileName);86 let files;87 try{88 files = fs.readdirSync(filePath);89 }catch(e){90 console.log(`读åç®å½è·¯å¾: ${filePath} 失败`);91 return -1;92 }93 let children_nodes = [];94 if(files.length){95 files.sort(function(a, b) {96 let stats_a = fs.statSync(path.join(filePath,a));97 let stats_b = fs.statSync(path.join(filePath,b))98 if(stats_a.isFile() && !stats_b.isFile()){99 return -1;100 }else if(stats_b.isFile() && !stats_a.isFile()){101 return 0;102 }else if(stats_b.isFile() && stats_a.isFile()){103 return stats_b.ctime.getTime() - stats_a.ctime.getTime();104 }else{105 return stats_a.ctime.getTime() - stats_b.ctime.getTime();106 }107 });108 for(let file of files){109 let child_file_path = path.join(filePath,file);110 let stats = fs.statSync(child_file_path);111 let p = path.join(relativePath,file);112 if(stats.isDirectory()){113 let obj = await fileTree(filePath,file,p);114 children_nodes.push(obj);115 }else{116 let file_download_path ='';117 let origin_file_download_path = BaseConfig.isUseNginx? getBaseUrl() + '/' +url.format(path.join(relativePath,file)) :getBaseUrl() + '/list/download?filename='+ url.format(path.join(relativePath,file));118 if(file.includes('.ipa')){119 let ipa_base_url = getBaseUrl();120 if(!ipa_base_url.includes('https')){121 file_download_path='';122 }else{123 let ipa_download_url = BaseConfig.isUseNginx?ipa_base_url+'/'+url.format(path.join(relativePath,file)) : ipa_base_url+'/list/download?filename='+url.format(path.join(relativePath,file));124 let plist_obj = await generatePlist(filePath,file,ipa_download_url);125 if(plist_obj==-1){126 file_download_path='';127 }else{128 file_download_path = BaseConfig.isUseNginx? 129 'itms-services://?action=download-manifest&url='+ipa_base_url+'/'+url.format(path.join(relativePath,plist_obj.fileName)) :130 'itms-services://?action=download-manifest&url='+ipa_base_url+'/list/download?filename='+url.format(path.join(relativePath,plist_obj.fileName));131 }132 }133 }else{134 let apk_base_url ='';135 apk_base_url = getBaseUrl();136 file_download_path = BaseConfig.isUseNginx? apk_base_url + '/' +url.format(path.join(relativePath,file)) :apk_base_url + '/list/download?filename='+ url.format(path.join(relativePath,file));137 }138 children_nodes.push(139 {140 name:file,141 toggled:false,142 download_path:origin_file_download_path,143 urlPath:file_download_path,144 relativePath:path.join(relativePath,file),145 createTime:dateFormat(stats.mtimeMs),146 size:getfilesize(stats.size),147 }148 );149 }150 }151 // files.map(async file =>{152 // });153 return {154 name:fileName,155 toggled:false,156 urlPath:relativePath==fileName?'':relativePath,157 relativePath:relativePath==fileName?'':relativePath,158 children:children_nodes,159 }160 }else{161 return {162 name:fileName,163 toggled:false,164 relativePath:relativePath==fileName?'':relativePath,165 urlPath:relativePath==fileName?'':relativePath,166 children:children_nodes,167 }168 }169}170function getBaseUrl(){171 if(BaseConfig.protocol && BaseConfig.domain && BaseConfig.port){172 return BaseConfig.protocol+'://'+BaseConfig.domain+':'+BaseConfig.port173 }else{174 return 'http://'+getIP()+':'+ServerConfig.server_port;175 }176}177function getFilesListPath(){178 return BaseConfig.filePath!='' && BaseConfig.filePath!=void 0 ? BaseConfig.filePath : path.join(__dirname,'..','testFile');179}180function getIP(){181 return ip.address();182}183function checkFile(filePath,target_fileName){184 let files = fs.readdirSync(filePath);185 for(file of files){186 let stat = fs.statSync(path.join(filePath,file));187 if(file==target_fileName && stat.isFile){188 return true;189 }190 }191 return false;192}193function i_wait(time){194 return new Promise((resolve,reject) =>{195 setTimeout(()=>{196 resolve('1');197 },time);198 });199}200function dateFormat(timeMs){201 moment.locale('zh-cn');202 var formDate = moment(timeMs).format('YYYY-MM-DD HH:mm:ss');203 return formDate;204}205function getfilesize(size) {206 if (!size)207 return "";208 var num = 1024.00; //byte209 if (size < num)210 return size + "B";211 if (size < Math.pow(num, 2))212 return (size / num).toFixed(2) + "K"; //kb213 if (size < Math.pow(num, 3))214 return (size / Math.pow(num, 2)).toFixed(2) + "M"; //M215 if (size < Math.pow(num, 4))216 return (size / Math.pow(num, 3)).toFixed(2) + "G"; //G217 return (size / Math.pow(num, 4)).toFixed(2) + "T"; //T218}219// (async() =>{220// // let f_path = path.join(__dirname,'..','files');221// // let arr =[1];222// // arr.map(async item =>{223// // let obj = await generatePlist(f_path,'usedcar4s.ipa','itms-services://?action=download-manifest&url=');224// // console.log(obj);225// // console.log('------');226// // });227// let obj = await generateFileTree();228// console.log(obj);229// })();230// obj.then(data =>{231// console.log(data);232// });233// generateFileTree();234// console.log(getBaseUrl());235// console.log(getIP());236module.exports ={237 generateFileTree,...
exportMcToCocosCreator.jsfl
Source:exportMcToCocosCreator.jsfl
...102 bitDepth: 32,103 backgroundColor: "#00000000"104 };105 c.exportSpriteSheet(a, d, true);106 funcs.generatePlist(a, e, e, c.sheetWidth, c.sheetHeight, true, true);107 return true108};109funcs.exportEveryFrame = function (g, e, n) {110 var o = funcs.mulPngAnimXml_beginExport();111 var b = g.libraryItem.timeline.frameCount;112 for (var h = 0; h < b; h++) {113 var a = new SpriteSheetExporter();114 a.addSymbol(g, "", h, h + 1);115 funcs.setSpriteSheetExporter(a);116 if (a.overflowed) {117 var k = "Error: frame " + (h + 1) + " of '" + n + "' exceeds the texture size limit of " + a.maxSheetWidth + "x" + a.maxSheetHeight + " cancelled";118 fl.trace(k);119 alert(k);120 return false121 }122 }123 for (var h = 0; h < b; h++) {124 var l = h + "";125 if (l.length < 4) {126 const m = 4 - l.length;127 for (var d = 0; d < m; d++) {128 l = "0" + l129 }130 }131 const c = e + "/" + n + l;132 funcs.deleteOldFile(c);133 var a = new SpriteSheetExporter();134 a.addSymbol(g, "", h, h + 1);135 funcs.setSpriteSheetExporter(a);136 var f = {137 format: "png",138 bitDepth: 32,139 backgroundColor: "#00000000"140 };141 a.exportSpriteSheet(c, f, true);142 funcs.generatePlist(c, n + l, n, a.sheetWidth, a.sheetHeight, true, false);143 o += funcs.mulPngAnimXml_frameExport(n + l)144 }145 o += funcs.mulPngAnimXml_EndExport();146 FLfile.write(e + "/" + n + ".multipleImageAnim", o);147 return true148};149funcs.mulPngAnimXml_beginExport = function () {150 var a = '<?xml version="1.0" encoding="utf-8"?>\n';151 a += "<root>\n";152 return a153};154funcs.mulPngAnimXml_frameExport = function (a) {155 var b = "\t<name>" + a + "</name>\n";156 return b...
webServer.js
Source:webServer.js
...134 let stats = fs.statSync(path.join(filesDir,file));135 if(file.includes('ipa')){136 if(getBaseUrl().includes('https')){137 if(BaseConfig.isUseNginx){138 let obj = await generatePlist(filesDir,file,getBaseUrl()+'/'+url.format(path.join(nginx_download_relative_path,file)));139 if(obj==-1){140 return {fileName:''};141 }142 return {143 fileName:file,144 qrCodeUrl:'itms-services://?action=download-manifest&url='+getBaseUrl()+'/'+url.format(path.join(nginx_download_relative_path,obj.fileName)),145 createTime:dateFormat(stats.mtimeMs)146 }147 }else{148 let obj = await generatePlist(filesDir,file,getBaseUrl()+'/download?filename='+file);149 if(obj==-1){150 return {fileName:''};151 }152 console.log(obj);153 return {154 fileName:file,155 qrCodeUrl:'itms-services://?action=download-manifest&url='+getBaseUrl()+'/download?filename='+obj.fileName,156 createTime:dateFormat(stats.mtimeMs)157 }158 }159 }160 return {161 fileName:'æªé
ç½®https,æ æ³æä¾ipaæ件ä¸è½½',162 qrCodeUrl:'https://www.baidu.com',...
pack.ios.js
Source:pack.ios.js
...46 title: task.project.name,47 },48 }],49 };50 await generatePlist(manifestJson);51 logger.log('info', 'Generate manifest.plist success');52 const uploadPlistData = await upload(config.server.upload, 'manifest.plist', 'text/xml');53 logger.log('info', 'Upload manifest.plist success');54 task.targetUrl = uploadPlistData.url;55 await task.save();56 logger.log('info', 'Save manifest.plist to database success');57 process.chdir('..');58 task.status.code = 'success';59 await task.save();60 logger.log('info', 'Save task.status.code = "success" to database success');61 if (task.release) {62 // TODO æ¤å¤æ²¡æèèandroidæè
å
¶ä»æ´æ¹63 const lastReleaseIos = {64 taskId: task.id,...
build.js
Source:build.js
1const FS = require('fs')2const XMLBUILDER = require('xmlbuilder')3const PLIST = require('plist')4const GLYPHNAMES = require('smufl/metadata/glyphnames.json')5const RANGES = require('smufl/metadata/ranges.json')6const GLYPH2RANGEMAP = Object.values(RANGES).reduce((map, range) => {7 range.glyphs.forEach(glyph => { map[glyph] = range.description })8 return map9}, {})10const ATTLIST = [11 { att: 'unicode' },12 { att: 'unicodeLegecy' },13 { att: 'name', req: true },14 { att: 'sortName' },15 { att: 'sortNameKeep' },16 { att: 'category', req: true },17 { att: 'subCategory' },18 { att: 'script' },19 { att: 'description' },20 { att: 'production' },21 { att: 'altNames' },22 { att: 'decompose' },23 { att: 'anchors' },24 { att: 'accents' }25]26/**27 * Main function generating GlyphData.xml28 * @return {String} An XML string29 */30function generateGlyphData () {31 let xml = XMLBUILDER.create(32 'glyphData',33 { version: '1.0', encoding: 'UTF-8' }34 )35 let dtd = xml.dtd()36 .ele('glyphData', '(glyph)+')37 .ele('glyph', 'EMPTY')38 ATTLIST.forEach(item => {39 dtd.att('glyph', item.att, 'CDATA', item.req ? '#REQUIRED' : '#IMPLIED')40 })41 for (let name in GLYPHNAMES) {42 let glyph = GLYPHNAMES[name]43 let codepoint = glyph.codepoint.replace('U+', '')44 xml.ele('glyph', {45 name: name,46 sortName: `SMuFL.${name}`,47 description: glyph.description.toUpperCase(),48 category: 'SMuFL',49 subCategory: GLYPH2RANGEMAP[name],50 unicode: codepoint,51 production: `uni${codepoint}`,52 script: 'musical'53 })54 }55 return xml.end({ pretty: true })56}57/**58 * Main function generating Groups.plist59 * @return {String} An XML string following the PropertyList DTD60 */61function generatePList () {62 let subGroups = Object.keys(RANGES).map(key => {63 let range = RANGES[key]64 return {65 name: range.description,66 coverage: range.glyphs67 }68 })69 let plist = {70 categories: [71 {72 name: 'SMuFL',73 icon: 'MusicTemplate',74 subGroup: subGroups75 }76 ]77 }78 return PLIST.build(plist)79}80FS.writeFile('dist/GlyphData.xml', generateGlyphData(), err => {81 if (err) {82 console.error(err)83 } else {84 console.log('Saved GlyphData.xml to disk')85 }86})87FS.writeFile('dist/Groups.plist', generatePList(), err => {88 if (err) {89 console.error(err)90 } else {91 console.log('Saved Groups.plist to disk')92 }...
plist.js
Source:plist.js
1const pre = `<?xml version="1.0" encoding="UTF-8"?>2<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">3<!-- Generated by: Themeweaver -->4<!-- ============================================ -->5<!-- app: http://themeweaver.dev -->6<!-- code: https://github.com/dbanksdesign/themeweaver -->7<plist version="1.0">\n`;8const post = `\n</plist>`;9const generatePlistRecursive = (obj, indent = `\t`) => {10 const newIndent = indent + `\t`;11 12 switch (Object.prototype.toString.call(obj)) {13 case '[object Array]':14 return `${indent}<array>\n` +15 obj.map(val => generatePlistRecursive(val, newIndent))16 .join('\n') +17 `${indent}</array>`;18 case '[object Object]':19 return `${indent}<dict>\n` +20 Object.keys(obj).map(key => {21 const val = obj[key];22 return `${newIndent}<key>${key}</key>\n${generatePlistRecursive(val, newIndent)}`;23 }).join('\n') +24 `\n${indent}</dict>`;25 default:26 return `${indent}<string>${obj}</string>`;27 }28}29const generatePlist = (obj) => {30 return pre + generatePlistRecursive(obj) + post;31}...
createTmPlist.js
Source:createTmPlist.js
...14 lineHighlight: allTokens[`application.editor.lineHighlightBackground`].computedValue,15 selection: allTokens[`application.editor.selectionBackground`].computedValue,16 }17 18 return generatePlist({19 name: name,20 settings: [settings].concat(tmTokens),21 // uuid: ``,22 colorSpaceName: `sRGB`,23 // semanticClass: ``24 });25}...
index.js
Source:index.js
1import archive from './archive/index';2import ipa from './ipa/index';3import svn from './svn/index';4import changeInfoPlist from './changeInfoPlist/index';5import upload from './upload/index';6import imp from './installMobileProvision/index';7import generatePlist from './generatePlist/index';8import Logger from './logger/index';9import updateProject from './updateProject/index';10import fileExist from './fileExist/index';11import getPlistValue from './getPlistValue/index';12export {13 svn,14 archive,15 ipa,16 changeInfoPlist,17 upload,18 imp,19 generatePlist,20 Logger,21 updateProject,22 fileExist,23 getPlistValue,...
Cypress is a renowned Javascript-based open-source, easy-to-use end-to-end testing framework primarily used for testing web applications. Cypress is a relatively new player in the automation testing space and has been gaining much traction lately, as evidenced by the number of Forks (2.7K) and Stars (42.1K) for the project. LambdaTest’s Cypress Tutorial covers step-by-step guides that will help you learn from the basics till you run automation tests on LambdaTest.
You can elevate your expertise with end-to-end testing using the Cypress automation framework and stay one step ahead in your career by earning a Cypress certification. Check out our Cypress 101 Certification.
Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.
Get 100 minutes of automation test minutes FREE!!