How to use pathToConfigFile method in Cypress

Best JavaScript code snippet using cypress

test.js

Source:test.js Github

copy

Full Screen

1/**2 * This will load in a spreadsheet and replace the collection with the data in the3 * spreadsheet.4 * It knows what the colection is because it uses the path before the "spreadSheet"5 * command to lookup the config file in that path, and pull out the collection name, which6 * should always contain the characters, "master"7 * Written by Larry Madocks8 **/9var express = require('express');10var router = express.Router();11var restrict = require('../auth/restrict');12var multer = require("multer");13var xlsxj = require("xlsx-to-json");14var mapService = require('../services/map-service');15//var mongoXlsx = require("mongo-xlsx");16var dbVersion = require('../services/dbVersion'); //to update row in map dbVersion database17//var hbs = require('hbs');18//hbs.handlebars === require('handlebars');19const fs = require('fs');20var path = require('path');212223var unauthStatic = express.static(path.join(__dirname, '../public'));24var authStatic = path.join(__dirname, '../authorized');25262728/* GET home page. */29router.get('/', restrict, function(req, res, next) {30    /**31     * Was getting this error when using a folder in the url as a parameter:   "Refused to apply style from" "because its 32     * MIME type ('text/html') is not a supported stylesheet MIME type"33     * Found someone talking about this on stackoverflow, but it was in Spanish, plus the fix is too complicated 34     * for using a folder as a parameter in the url. So I will have user insert folder in a form field.35     **/36    //router.get('/:collection', function(req, res, next) {37    // var collection = req.params.collection;38    //  if (!(/master/.test(collection))) {39    //         let err = "Invalid Collection: "+ collection;40    //         console.error();41    //         let vm = {42    //             messageTitle: 'Error',43    //             layout: 'simpleLayout',44    //             serverMessage: err45    //         };46    //         console.error("Incorrect collection.");47    //         res.redirect('/error');4849    //     }50    return res.render('admin/test', {51        title: 'Import Data or SVG',52        layout: 'simpleLayout',53        baseUrl: JSON.stringify(req.baseUrl)54        //,collection:'master_test3'55    });56});5758//for some reason we are getting undefined fields from the excel file. This deletes them59function removeJunk(obj) {60    for (var prop in obj) {61        if (prop.length == 0) {62            delete obj[prop];63        }64    }65}66/**67 * Looks in list to see if key is in there. If so returns true68 **/69function inList(list, key) {70    return list.split(',').indexOf(key) > -171}727374////var upload = multer({ dest: './import' });75// Set The Storage Engine76var storage = multer.diskStorage({77    destination: function(req, file, cb) {78        if (req.dynamicDestination) {79            cb(null, req.dynamicDestination);80        }81        else cb("Error determining destination of file");8283    },84    filename: function(req, file, cb) {85        var fn = file.originalname + '-' + Date.now() + path.extname(file.originalname);86        req.myFileName = fn;87        cb(null, fn);88    }89});9091// Init Upload92const upload = multer({93    limits: { fileSize: 10000000 },94    fileFilter: function(req, file, cb) {95        checkFileTypeAndPermissions(req, file, cb);96    },97    storage: storage98}).single('myFile'); //This tag, "myFile" MUST match the form input name attribute in the importFile.hbs file99100//Get destination folder of where spreadsheet file is sent to101function destination(req, file) {102    var pathToConfigFile = req.params.path;103    //Now get the config.json data to get the collection name104    pathToConfigFile !== undefined ? pathToConfigFile = pathToConfigFile.replace(/slshslash/g, "\/") : pathToConfigFile = null; //instead of a "/" I replaced it with "slshslash" so it doesn't count as another parameter. This line changes it back to the slash ("/")105    if (pathToConfigFile) {106        var dynamicDestination = authStatic + "/" + pathToConfigFile;107        req.pathToConfigFile = pathToConfigFile; //insert this value in req so I can use it later on in checkFileTypeAndPermissions()108        req.dynamicDestination = dynamicDestination; //insert this in req so I can access it later on109        return pathToConfigFile; // successfully found destination. Code was this: cb(null, dynamicDestination);110    }111    else return null; //cb("Error determining destination of file");112}113// Check File Type and permissions114function checkFileTypeAndPermissions(req, file, cb) {115    // Allowed ext116    const filetypes = /svg|txt|js|css|html|md|json|xlsx|ai|jpeg|jpg|png|gif|sheet/;117    // Check ext118    const extname = filetypes.test(path.extname(file.originalname).toLowerCase());119    if (!extname) {120        return cb('Error: Incorrect file extension!');121    }122    // Check mime123    const mimetype = filetypes.test(file.mimetype);124    if (!mimetype) {125        return cb('Error: Incorrect file mimetype!');126    }127    var pathToConfigFile = destination(req, file); //set destination128    var permissions = req.user._doc.doc.permissions;129    if (!(inList(permissions, 'admin') || inList(permissions, 'editor') || inList(permissions, 'designer'))) {130        //  return res.redirect('/'); // not found131        return cb('Invalid permission.');132133    }134    else if (inList(permissions, 'designer')) {135        var authorizedFolders = req.user._doc.doc.hasOwnProperty("folders") ? req.user._doc.doc.folders : "";136        137        if (pathToConfigFile) {138            var mainUrlFolder = req.pathToConfigFile; // req.originalUrl;139            var firstFolder = mainUrlFolder.split("/").slice(0,1).toString(); //get first folder (or directory) in the url string140            if (!(authorizedFolders.split(',').indexOf(firstFolder) > -1)) {141                //only compare the first folder, which would be > -1 if it were a match.142                return cb('Folder Not Available. Please check with your administrator for access to folder: ' + firstFolder);143144            }145            return cb(null, true);146        } else {147            cb("Error determining destination of file");148        }149150    }151152     return cb(null, true); //the user is either an admin or editor so have permissions in all folders. TODO: editor has all permissions?153}154155156157//router.use(express.static(path.join(__dirname, '../authorized')));158//var upload = multer({ storage : storage}).single('xlsx');159//after posting a spreadsheet file to upload, which will be saved in this folder160//and then inserted into the database.  DO NOT CHANGE THIS FROM import!!161router.post('/:path', restrict,162    function(req, res, next) {163164        //now look to see if user permissions contain admin165166167        upload(req, res, function(err) {168                if (err) {169                    res.json({170                        status: "error",171                        msg: err172                    });173                }174                else {175176177                    var pathToConfigFile = req.params.path;178                    //Now get the config.json data to get the collection name179                    pathToConfigFile !== undefined ? pathToConfigFile = pathToConfigFile.replace(/slshslash/g, "\/") : pathToConfigFile = null; //instead of a "/" I replaced it with "slshslash" so it doesn't count as another parameter. This line changes it back to the slash ("/")180                    if (pathToConfigFile) {181                        //'utf8', means return a string . If I take that out, then I get binary data back instead of a json structure.182                        fs.readFile(authStatic + "/" + pathToConfigFile + "/config.json", 'utf8', (err, data) => {183                            if (err) return res.json({184                                status: "error",185                                msg: 'Invalid path for config.json.'186                            });187                            var data2json = JSON.parse(data);188                            if (data2json == undefined) {189                                console.error("Bad json in config.file: " + pathToConfigFile + "/config.json");190                                return res.json({191                                    status: "error",192                                    msg: "Bad json in config.file: " + pathToConfigFile + "/config.json"193                                });194                            }195                            var collection = data2json.masterDB; //user see just a folder name. This adds _master to user the folder_master collection196197                            //User can have multiple permissions, I suppose. If he has admin permissions and or editor permissions here 198                            //then he can upload a spreadsheet. But if he only has designer, then he needs to have the collection199                            //in the list of collections he can upload to.200                            // var permissions = req.user._doc.doc.permissions;201                            // if (!inList(permissions, 'admin') && !inList(permissions, 'editor') && inList(permissions, 'designer')) {202                            //     var authorizedCollections = req.user._doc.doc.collections;203204                            //     if (!inList(authorizedCollections, collection)) {205                            //         //only compare the first folder, which would be > -1 if it were a match.206                            //         return res.json({207                            //             status: "error",208                            //             msg: 'Missing permission for this collection.'209                            //         });210                            //     }211                            // }212                            var filePath = req.dynamicDestination + '/' + req.myFileName; //req.files[0].path; //do not add this because then it cannot find the file path + ".xlsx" 213214                            if (!(/master/.test(collection))) {215                                let err = "Invalid Collection";216                                console.error();217                                let vm = {218                                    messageTitle: 'Error',219                                    layout: 'simpleLayout',220                                    serverMessage: err221                                };222                                console.error("Incorrect collection.");223                                res.redirect('/error');224225                            }226227                            // console.log(data); //masterDB228                            if (filePath && collection) {229                                //console.log("file path here: " + filePath);230                                // mongoXlsx.xlsx2MongoData(filePath, null, function(err, mongoData) {231                                //     if (err) {232                                //         console.error(err);233                                //         res.redirect('/error');234                                //     }235                                //     else {236                                //         console.log('Mongo data:', mongoData);237                                //     }238                                // });239                                xlsxj({240                                    input: filePath, //__dirname + '/sample.xlsx',241                                    sheet: "Structure",242                                    output: null // set this to null if you are not using it!!! __dirname + '/output.json'243                                }, function(err, result) {244                                    if (err) {245                                        console.error(err);246                                        res.redirect('/error');247                                    }248                                    else {249                                        mapService.removeAll(collection, (err) => {250                                            if (err) {251                                                console.error(err);252                                                res.redirect('/error');253                                            }254                                            for (var i = 0; i < result.length; i++) {255                                                var row = result[i];256                                                if (!row.hasOwnProperty('rowNumber')) {257                                                    row.rowNumber = i.toString();258                                                }259                                                if (row.hasOwnProperty('id') && row.id.length == 0) {260                                                    row.id = i.toString();261                                                }262                                                else if (!row.hasOwnProperty('id')) {263                                                    row.id = i.toString();264                                                }265                                                removeJunk(row); //for some reason we are getting undefined fields from the excel file. This deletes them266                                                if (row.hasOwnProperty('id') && row.id.length > 0) {267                                                    var id = row.id;268                                                    var rowNumber = Number(row.rowNumber);269                                                    let doc = {270                                                        id: id,271                                                        rowNumber: rowNumber,272                                                        doc: row273                                                    };274                                                    mapService.addmap(doc, collection, function(err) {275                                                        if (err) {276                                                            console.error(err);277                                                            res.redirect('/error');278                                                        }279                                                    });280                                                }281282                                            }283                                            dbVersion.updateRow(collection, (err, doc) => {284                                                if (err) {285                                                    //Need to update the version number of this db286                                                    console.log("Error updating dbVersion. Will create a new row for this collection slash db. Err: " + err);287                                                    dbVersion.addRow({288                                                        dbName: collection,289                                                        dbVersion: 1290                                                    }, () => {291                                                        // var vm = {292                                                        //     status: 'success',293                                                        //     msg: 'success in updateRow for map. id: ' + data.id,294                                                        //     dbVersion: 1295                                                        // };296297                                                        // res.status(status).json(vm);298                                                        //next(null);299300                                                        res.status(204).end();301                                                        //res.status(200).end();302                                                        //res.render('import', vm);303                                                    });304305                                                }306                                                else {307                                                    /* update dbVersion of this collection */308309310                                                    //doc contains the version number that we are sending back311                                                    // var vm = {312                                                    //     dbVersion: doc,313                                                    //     status: 'success',314                                                    //     msg: 'success in updateRow for dbVersion. collection: ' + collection315                                                    // };316317                                                    //res.status(status).json(vm);318                                                    //next(null);319                                                    res.status(204).end();320                                                    //res.status(200).end();321                                                    //res.render('import', vm);322                                                }323                                            });324                                        });325326                                        //console.log(result);327                                    }328                                });329330331332                            } //if (filePath && collection) 333                        });334                    }335                    else {336                        return res.json({337                            status: "error",338                            msg: 'Invalid path for config.json.'339                        });340                    }341342343344                    res.json({345                        status: "Success"346                    });347                }348349350351352            } //upload(req, res, function(err) {353        );354355356    } //function(req, res, next) {357);358
...

Full Screen

Full Screen

importSpread.js

Source:importSpread.js Github

copy

Full Screen

1/**2 * This will load in a spreadsheet and replace the collection with the data in the3 * spreadsheet.4 * It knows what the colection is because it uses the path before the "spreadSheet"5 * command to lookup the config file in that path, and pull out the collection name, which6 * should always contain the characters, "master"7 * Written by Larry Madocks8 **/9var express = require('express');10var router = express.Router();11var restrict = require('../auth/restrict');12var multer = require("multer");13var xlsxj = require("xlsx-to-json");14var mapService = require('../services/map-service');15//var mongoXlsx = require("mongo-xlsx");16var dbVersion = require('../services/dbVersion'); //to update row in map dbVersion database17//var hbs = require('hbs');18//hbs.handlebars === require('handlebars');19const fs = require('fs');20var path = require('path');212223var unauthStatic = express.static(path.join(__dirname, '../public'));24var authStatic = path.join(__dirname, '../authorized');25262728/* GET home page. */29router.get('/', restrict, function(req, res, next) {30    /**31     * Was getting this error when using a folder in the url as a parameter:   "Refused to apply style from" "because its32     * MIME type ('text/html') is not a supported stylesheet MIME type"33     * Found someone talking about this on stackoverflow, but it was in Spanish, plus the fix is too complicated34     * for using a folder as a parameter in the url. So I will have user insert folder in a form field.35     **/36    //router.get('/:collection', function(req, res, next) {37    // var collection = req.params.collection;38    //  if (!(/master/.test(collection))) {39    //         let err = "Invalid Collection: "+ collection;40    //         console.error();41    //         let vm = {42    //             messageTitle: 'Error',43    //             layout: 'simpleLayout',44    //             serverMessage: err45    //         };46    //         console.error("Incorrect collection.");47    //         res.redirect('/error');4849    //     }50    return res.render('admin/importSpread', {51        title: 'Import Data or SVG',52        layout: 'simpleLayout',53        baseUrl: JSON.stringify(req.baseUrl)54        //,collection:'master_test3'55    });56});5758//for some reason we are getting undefined fields from the excel file. This deletes them59function removeJunk(obj) {60    for (var prop in obj) {61        if (prop.length == 0) {62            delete obj[prop];63        }64    }65}66/**67 * Looks in list to see if key is in there. If so returns true68 **/69function inList(list, key) {70    return list.split(',').indexOf(key) > -171}727374////var upload = multer({ dest: './import' });75// Set The Storage Engine76var storage = multer.diskStorage({77    destination: function(req, file, cb) {78        if (req.dynamicDestination) {79            cb(null, req.dynamicDestination);80        }81        else cb("Error determining destination of file");8283    },84    filename: function(req, file, cb) {85        var fn = file.originalname + '-' + Date.now() + path.extname(file.originalname);86        req.myFileName = fn;87        cb(null, fn);88    }89});9091// Init Upload92const upload = multer({93    limits: { fileSize: 10000000 },94    fileFilter: function(req, file, cb) {95        checkFileTypeAndPermissions(req, file, cb);96    },97    storage: storage98}).single('myFile'); //This tag, "myFile" MUST match the form input name attribute in the importFile.hbs file99100//Get destination folder of where spreadsheet file is sent to101function destination(req, file) {102    var pathToConfigFile = req.params.path;103    //Now get the config.json data to get the collection name104    pathToConfigFile !== undefined ? pathToConfigFile = pathToConfigFile.replace(/slshslash/g, "\/") : pathToConfigFile = null; //instead of a "/" I replaced it with "slshslash" so it doesn't count as another parameter. This line changes it back to the slash ("/")105    if (pathToConfigFile) {106        var dynamicDestination = authStatic + "/" + pathToConfigFile;107        req.pathToConfigFile = pathToConfigFile; //insert this value in req so I can use it later on in checkFileTypeAndPermissions()108        req.dynamicDestination = dynamicDestination; //insert this in req so I can access it later on109        return pathToConfigFile; // successfully found destination. Code was this: cb(null, dynamicDestination);110    }111    else return null; //cb("Error determining destination of file");112}113// Check File Type and permissions114function checkFileTypeAndPermissions(req, file, cb) {115    // Allowed ext116    const filetypes = /svg|txt|js|css|html|md|json|xlsx|ai|jpeg|jpg|png|gif|sheet/;117    // Check ext118    const extname = filetypes.test(path.extname(file.originalname).toLowerCase());119    if (!extname) {120        return cb('Error: Incorrect file extension!');121    }122    // Check mime123    const mimetype = filetypes.test(file.mimetype);124    if (!mimetype) {125        return cb('Error: Incorrect file mimetype!');126    }127    var pathToConfigFile = destination(req, file); //set destination128    var permissions = req.user._doc.doc.permissions;129    if (!(inList(permissions, 'admin') || inList(permissions, 'editor') || inList(permissions, 'designer'))) {130        //  return res.redirect('/'); // not found131        return cb('Invalid permission.');132133    }134    else if (inList(permissions, 'designer')) {135        var authorizedFolders = req.user._doc.doc.hasOwnProperty("folders") ? req.user._doc.doc.folders : "";136137        if (pathToConfigFile) {138            var mainUrlFolder = req.pathToConfigFile; // req.originalUrl;139            var firstFolder = mainUrlFolder.split("/").slice(0,1).toString(); //get first folder (or directory) in the url string140            if (!(authorizedFolders.split(',').indexOf(firstFolder) > -1)) {141                //only compare the first folder, which would be > -1 if it were a match.142                return cb('Folder Not Available. Please check with your administrator for access to folder: ' + firstFolder);143144            }145            return cb(null, true);146        } else {147            cb("Error determining destination of file");148        }149150    }151152    return cb(null, true); //the user is either an admin or editor so have permissions in all folders. TODO: editor has all permissions?153}154155156157//router.use(express.static(path.join(__dirname, '../authorized')));158//var upload = multer({ storage : storage}).single('xlsx');159//after posting a spreadsheet file to upload, which will be saved in this folder160//and then inserted into the database.  DO NOT CHANGE THIS FROM import!!161router.post('/:path', restrict,162    function(req, res, next) {163164        //now look to see if user permissions contain admin165166167        upload(req, res, function(err) {168                if (err) {169                    res.json({170                        status: "error",171                        msg: err172                    });173                }174                else {175176177                    var pathToConfigFile = req.params.path;178                    //Now get the config.json data to get the collection name179                    pathToConfigFile !== undefined ? pathToConfigFile = pathToConfigFile.replace(/slshslash/g, "\/") : pathToConfigFile = null; //instead of a "/" I replaced it with "slshslash" so it doesn't count as another parameter. This line changes it back to the slash ("/")180                    if (pathToConfigFile) {181                        //'utf8', means return a string . If I take that out, then I get binary data back instead of a json structure.182                        fs.readFile(authStatic + "/" + pathToConfigFile + "/config.json", 'utf8', (err, data) => {183                            if (err) return res.json({184                                status: "error",185                                msg: 'Invalid path for config.json.'186                            });187                            var data2json = JSON.parse(data);188                            if (data2json == undefined) {189                                console.error("Bad json in config.file: " + pathToConfigFile + "/config.json");190                                return res.json({191                                    status: "error",192                                    msg: "Bad json in config.file: " + pathToConfigFile + "/config.json"193                                });194                            }195                            var collection = data2json.masterDB; //user see just a folder name. This adds _master to user the folder_master collection196197                            //User can have multiple permissions, I suppose. If he has admin permissions and or editor permissions here 198                            //then he can upload a spreadsheet. But if he only has designer, then he needs to have the collection199                            //in the list of collections he can upload to.200                            // var permissions = req.user._doc.doc.permissions;201                            // if (!inList(permissions, 'admin') && !inList(permissions, 'editor') && inList(permissions, 'designer')) {202                            //     var authorizedCollections = req.user._doc.doc.collections;203204                            //     if (!inList(authorizedCollections, collection)) {205                            //         //only compare the first folder, which would be > -1 if it were a match.206                            //         return res.json({207                            //             status: "error",208                            //             msg: 'Missing permission for this collection.'209                            //         });210                            //     }211                            // }212                            var filePath = req.dynamicDestination + '/' + req.myFileName; //req.files[0].path; //do not add this because then it cannot find the file path + ".xlsx" 213214                            if (!(/master/.test(collection))) {215                                let err = "Invalid Collection";216                                console.error();217                                let vm = {218                                    messageTitle: 'Error',219                                    layout: 'simpleLayout',220                                    serverMessage: err221                                };222                                console.error("Incorrect collection.");223                                res.redirect('/error');224225                            }226227                            // console.log(data); //masterDB228                            if (filePath && collection) {229                                //console.log("file path here: " + filePath);230                                // mongoXlsx.xlsx2MongoData(filePath, null, function(err, mongoData) {231                                //     if (err) {232                                //         console.error(err);233                                //         res.redirect('/error');234                                //     }235                                //     else {236                                //         console.log('Mongo data:', mongoData);237                                //     }238                                // });239                                xlsxj({240                                    input: filePath, //__dirname + '/sample.xlsx',241                                    sheet: "Structure",242                                    output: null // set this to null if you are not using it!!! __dirname + '/output.json'243                                }, function(err, result) {244                                    if (err) {245                                        console.error(err);246                                        res.redirect('/error');247                                    }248                                    else {249                                        mapService.removeAll(collection, (err) => {250                                            if (err) {251                                                console.error(err);252                                                res.redirect('/error');253                                            }254                                            for (var i = 0; i < result.length; i++) {255                                                var row = result[i];256                                                if (!row.hasOwnProperty('rowNumber')) {257                                                    row.rowNumber = i.toString();258                                                }259                                                if (row.hasOwnProperty('id') && row.id.length == 0) {260                                                    row.id = i.toString();261                                                }262                                                else if (!row.hasOwnProperty('id')) {263                                                    row.id = i.toString();264                                                }265                                                removeJunk(row); //for some reason we are getting undefined fields from the excel file. This deletes them266                                                if (row.hasOwnProperty('id') && row.id.length > 0) {267                                                    var id = row.id;268                                                    var rowNumber = Number(row.rowNumber);269                                                    let doc = {270                                                        id: id,271                                                        rowNumber: rowNumber,272                                                        doc: row273                                                    };274                                                    mapService.addmap(doc, collection, function(err) {275                                                        if (err) {276                                                            console.error(err);277                                                            res.redirect('/error');278                                                        }279                                                    });280                                                }281282                                            }283                                            dbVersion.updateRow(collection, (err, doc) => {284                                                if (err) {285                                                    //Need to update the version number of this db286                                                    console.log("Error updating dbVersion. Will create a new row for this collection slash db. Err: " + err);287                                                    dbVersion.addRow({288                                                        dbName: collection,289                                                        dbVersion: 1290                                                    }, () => {291                                                        // var vm = {292                                                        //     status: 'success',293                                                        //     msg: 'success in updateRow for map. id: ' + data.id,294                                                        //     dbVersion: 1295                                                        // };296297                                                        // res.status(status).json(vm);298                                                        //next(null);299300                                                        res.status(204).end();301                                                        //res.status(200).end();302                                                        //res.render('import', vm);303                                                    });304305                                                }306                                                else {307                                                    /* update dbVersion of this collection */308309310                                                    //doc contains the version number that we are sending back311                                                    // var vm = {312                                                    //     dbVersion: doc,313                                                    //     status: 'success',314                                                    //     msg: 'success in updateRow for dbVersion. collection: ' + collection315                                                    // };316317                                                    //res.status(status).json(vm);318                                                    //next(null);319                                                    res.status(204).end();320                                                    //res.status(200).end();321                                                    //res.render('import', vm);322                                                }323                                            });324                                        });325326                                        //console.log(result);327                                    }328                                });329330331332                            } //if (filePath && collection) 333                        });334                    }335                    else {336                        return res.json({337                            status: "error",338                            msg: 'Invalid path for config.json.'339                        });340                    }341342343344                    res.json({345                        status: "Success"346                    });347                }348349350351352            } //upload(req, res, function(err) {353        );354355356    } //function(req, res, next) {357);358
...

Full Screen

Full Screen

settings.js

Source:settings.js Github

copy

Full Screen

...98    return options.configFile === false ? false : (options.configFile || 'cypress.json');99}100exports.configFile = configFile;101function id(projectRoot, options = {}) {102    const file = pathToConfigFile(projectRoot, options);103    return fs_1.fs.readJson(file)104        .then((config) => config.projectId)105        .catch(() => {106        return null;107    });108}109exports.id = id;110function read(projectRoot, options = {}) {111    if (options.configFile === false) {112        return bluebird_1.default.resolve({});113    }114    const file = pathToConfigFile(projectRoot, options);115    const readPromise = /\.json$/.test(file) ? fs_1.fs.readJSON(path_1.default.resolve(projectRoot, file)) : (0, require_async_1.requireAsync)(file, {116        projectRoot,117        loadErrorCode: 'CONFIG_FILE_ERROR',118    });119    return readPromise120        .catch((err) => {121        var _a;122        if (err.type === 'MODULE_NOT_FOUND' || err.code === 'ENOENT') {123            if ((_a = options.args) === null || _a === void 0 ? void 0 : _a.runProject) {124                return bluebird_1.default.reject(errors_1.default.get('CONFIG_FILE_NOT_FOUND', options.configFile, projectRoot));125            }126            return _write(file, {});127        }128        return bluebird_1.default.reject(err);129    })130        .then((configObject = {}) => {131        if (isComponentTesting(options) && 'component' in configObject) {132            configObject = Object.assign(Object.assign({}, configObject), configObject.component);133        }134        if (!isComponentTesting(options) && 'e2e' in configObject) {135            configObject = Object.assign(Object.assign({}, configObject), configObject.e2e);136        }137        debug('resolved configObject', configObject);138        const changed = _applyRewriteRules(configObject);139        // if our object is unchanged140        // then just return it141        if (lodash_1.default.isEqual(configObject, changed)) {142            return configObject;143        }144        // else write the new reduced obj145        return _write(file, changed)146            .then((config) => {147            return config;148        });149    }).catch((err) => {150        debug('an error occurred when reading config', err);151        if (errors_1.default.isCypressErr(err)) {152            throw err;153        }154        return _logReadErr(file, err);155    });156}157exports.read = read;158function readEnv(projectRoot) {159    const file = pathToCypressEnvJson(projectRoot);160    return fs_1.fs.readJson(file)161        .catch((err) => {162        if (err.code === 'ENOENT') {163            return {};164        }165        if (errors_1.default.isCypressErr(err)) {166            throw err;167        }168        return _logReadErr(file, err);169    });170}171exports.readEnv = readEnv;172function write(projectRoot, obj = {}, options = {}) {173    if (options.configFile === false) {174        return bluebird_1.default.resolve({});175    }176    return read(projectRoot, options)177        .then((settings) => {178        lodash_1.default.extend(settings, obj);179        const file = pathToConfigFile(projectRoot, options);180        return _write(file, settings);181    });182}183exports.write = write;184function pathToConfigFile(projectRoot, options = {}) {185    const file = configFile(options);186    return file && _pathToFile(projectRoot, file);187}188exports.pathToConfigFile = pathToConfigFile;189function pathToCypressEnvJson(projectRoot) {190    return _pathToFile(projectRoot, 'cypress.env.json');191}...

Full Screen

Full Screen

import.js

Source:import.js Github

copy

Full Screen

1/**2 * This code was originally copy and pasted from the file, "importSpread.js",3 * which was written by Larry Maddocks4 * This will allow the designer to upload a file to a folder, if she has the correct credientials.5 * The command, "import" must be proceeded by the path of the folder that the file should be inserted6 * into. I.e., http://gsap.com/my/folder/import7 **/8var express = require('express');9var router = express.Router();10var restrict = require('../auth/restrict');11var multer = require("multer");12//var xlsxj = require("xlsx-to-json");13//var mapService = require('../services/map-service');14//var mongoXlsx = require("mongo-xlsx");15//var dbVersion = require('../services/dbVersion'); //to update row in map dbVersion database16//var hbs = require('hbs');17//hbs.handlebars === require('handlebars');18const fs = require('fs');19const path = require('path');202122var unauthStatic = express.static(path.join(__dirname, '../public'));23var authStatic = path.join(__dirname, '../authorized');242526/* GET home page. */27router.get('/', restrict, function(req, res, next) {28    /**29     * Was getting this error when using a folder in the url as a parameter:   "Refused to apply style from" "because its 30     * MIME type ('text/html') is not a supported stylesheet MIME type"31     * Found someone talking about this on stackoverflow, but it was in Spanish, plus the fix is too complicated 32     * for using a folder as a parameter in the url. So I will have user insert folder in a form field.33     **/3435    return res.render('admin/importFile', {36        title: 'Import File',37        layout: 'simpleLayout',38        baseUrl: JSON.stringify(req.baseUrl)39        //,collection:'master_test3'40    });41});424344/**45 * Looks in list to see if key is in there. If so returns true46 **/47function inList(list, key) {48    return list.split(',').indexOf(key) > -149}5051// Set The Storage Engine52var storage = multer.diskStorage({53    destination: function(req, file, cb) {54        if (req.dynamicDestination) {55            cb(null, req.dynamicDestination);56        }57        else cb("Error determining destination of file");5859    },60    filename: function(req, file, cb) {61        cb(null, file.originalname /* + '-' + Date.now() + path.extname(file.originalname) */ );62    }63});6465// Init Upload66const upload = multer({67    limits: { fileSize: 10000000 },68    fileFilter: function(req, file, cb) {69        checkFileTypeAndPermissions(req, file, cb);70    },71    storage: storage72}).single('myFile'); //This tag, "myFile" MUST match the form input name attribute in the importFile.hbs file7374//Get destination folder of where spreadsheet file is sent to75function destination(req, file) {76    var pathToConfigFile = req.params.path;77    //Now get the config.json data to get the collection name78    pathToConfigFile !== undefined ? pathToConfigFile = pathToConfigFile.replace(/slshslash/g, "\/") : pathToConfigFile = null; //instead of a "/" I replaced it with "slshslash" so it doesn't count as another parameter. This line changes it back to the slash ("/")79    if (pathToConfigFile) {80        var dynamicDestination = authStatic + "/" + pathToConfigFile;81        req.pathToConfigFile = pathToConfigFile; //insert this value in req so I can use it later on in checkFileTypeAndPermissions()82        req.dynamicDestination = dynamicDestination; //insert this in req so I can access it later on83        return pathToConfigFile; // successfully found destination. Code was this: cb(null, dynamicDestination);84    }85    else return null; //cb("Error determining destination of file");86}8788// Check File Type and permissions89function checkFileTypeAndPermissions(req, file, cb) {90    // Allowed ext91    const filetypes = /svg|txt|js|css|html|md|json|xlsx|ai|jpeg|jpg|png|gif|scriv/;92    // Check ext93    const extname = filetypes.test(path.extname(file.originalname).toLowerCase());94    if (!extname) {95        return cb('Error: Incorrect file extension!');96    }97    // Check mime98    const mimetype = filetypes.test(file.mimetype);99    if (!mimetype) {100        return cb('Error: Incorrect file mimetype!');101    }102    var pathToConfigFile = destination(req, file); //set destination103104    var permissions = req.user._doc.doc.permissions;105    if (!(inList(permissions, 'admin') || inList(permissions, 'editor') || inList(permissions, 'designer'))) {106        //  return res.redirect('/'); // not found107        return cb('Invalid permission.');108109    }110    //now if user is a designer make sure he has permission to write to this folder.111    else if (inList(permissions, 'designer')) {112        var authorizedFolders = req.user._doc.doc.hasOwnProperty("folders") ? req.user._doc.doc.folders : "";113114        if (pathToConfigFile) {115            var mainUrlFolder = req.pathToConfigFile; // pathToConfigFile is just the path before the command where user wants to send file to.116            var firstFolder = mainUrlFolder.split("/").slice(0, 1).toString(); //get first folder (or directory) in the url string117            if (!(authorizedFolders.split(',').indexOf(firstFolder) > -1)) {118                //only compare the first folder, which would be > -1 if it were a match.119                return cb('Folder Not Available. Please check with your administrator for access to folder: ' + firstFolder);120121            }122            else {123                return cb(null, true); //yea! The user is authorized to write file to this folder!!124            }125        }126        else {127            cb("Error determining destination of file");128        }129130    }131132    return cb(null, true); //this is an admin or editor and can write file to any folder.133}134135136//var upload = multer({ dest: './import' });137//router.use(express.static(path.join(__dirname, '../authorized')));138//var upload = multer({ storage : storage}).single('xlsx');139//after posting a spreadsheet file to upload, which will be saved in this folder140//and then inserted into the database.  DO NOT CHANGE THIS FROM import!!141router.post('/:path', restrict, function(req, res, next) {142143    upload(req, res, function(err) {144            if (err) {145                res.json({146                    status: "error",147                    msg: err148                });149            }150            else151                res.json({152                    status: "Success"153                });154155156157        } //upload(req, res, function(err) {158    );159});
...

Full Screen

Full Screen

init.js

Source:init.js Github

copy

Full Screen

1const chalk = require("chalk");2const fs = require("fs");3const inquirer = require("inquirer");4const { spawn } = require("child_process");5const configPath = ".factorialrc.js";6const packages = [7  "css",8  "e2e",9  "html",10  "images",11  "javascript",12  "svg",13  "twig",14  "vue",15];16const scopeName = "@factorial";17const packagePrefix = "stack";18/**19 * @param {string} name20 * @returns {string}21 */22function getNodeModuleName(name) {23  return `${scopeName}/${packagePrefix}-${name}`;24}25/**26 * Installs all selected packages via yarn by spawning a new child process27 *28 * @param {Array} selectedPackages29 * @returns {Promise}30 */31function installPackages(selectedPackages) {32  if (selectedPackages.length === 0) return Promise.resolve();33  return new Promise((resolve) => {34    const process = spawn("yarn", [35      "add",36      "-D",37      ...selectedPackages.map((p) => getNodeModuleName(p)),38    ]);39    process.stdout.on("data", (data) => {40      console.log(data.toString());41    });42    process.stderr.on("data", (data) => {43      console.log(data.toString());44    });45    process.on("error", (error) => {46      console.log(`${chalk.red("\nERROR:")} ${error.message}`);47    });48    process.on("close", (code) => {49      resolve(code === 0);50    });51  });52}53/**54 * Creates a .factorialrc.js with content based on the selected packages55 *56 * @param {Array} selectedPackages57 * @returns {void}58 */59async function createConfig(selectedPackages) {60  let use = "";61  if (selectedPackages.length > 0) {62    use = `63  use: [${selectedPackages64    .map(65      (p) => `66    require("${getNodeModuleName(p)}")`67    )68    .join(",")}69  ]70`;71  }72  await checkIfFileExists(73    configPath,74    `module.exports = {${use}};75`76  );77}78/**79 * @param {Array} selectedPackages80 */81async function createPackageConfigs(selectedPackages) {82  /* eslint-disable no-restricted-syntax */83  for (const pkg of selectedPackages) {84    const { configFiles } = require(`../../../${packagePrefix}-${pkg}`); // eslint-disable-line global-require, import/no-dynamic-require85    if (Array.isArray(configFiles)) {86      for (const { name, content = "" } of configFiles) {87        await checkIfFileExists(name, content); // eslint-disable-line no-await-in-loop88      }89    }90  }91  /* eslint-enable */92}93/**94 * @param {string} pathToConfigFile95 * @param {string} content96 * @returns {Promise}97 */98async function checkIfFileExists(pathToConfigFile, content) {99  try {100    fs.readFileSync(pathToConfigFile, { encoding: "utf8" });101    const { overwriteConfig } = await inquirer.prompt([102      {103        type: "confirm",104        message: `The file ${pathToConfigFile} already exists. Do you want to overwrite it?`,105        name: "overwriteConfig",106      },107    ]);108    if (overwriteConfig) {109      return writeFile(pathToConfigFile, content);110    }111    return true;112  } catch (e) {113    return writeFile(pathToConfigFile, content);114  }115}116/**117 * @param {*} pathToConfigFile118 * @param {string} content119 * @returns {Promise}120 */121function writeFile(pathToConfigFile, content) {122  return new Promise((resolve, reject) => {123    fs.writeFile(124      pathToConfigFile,125      content,126      "utf-8",127      function writeConfigFileCallback(err) {128        if (err) {129          console.error(err);130          reject();131        }132        resolve();133      }134    );135  });136}137module.exports = function init() {138  inquirer139    .prompt([140      {141        type: "checkbox",142        message: "Select the packages which are required for your project",143        name: "packages",144        choices: packages,145      },146    ])147    .then(async (answers) => {148      await createConfig(answers.packages);149      await installPackages(answers.packages);150      await createPackageConfigs(answers.packages);151      process.exit(0);152    })153    .catch(() => process.exit(1));...

Full Screen

Full Screen

index – koopia.js

Source:index – koopia.js Github

copy

Full Screen

1/**Config functions. @preserve Copyright(c ) 2021 Manuel Lõhmus.*/2'use strict';3var fs = require('fs');4var path = require('path');5var configFileName = 'config-sets.js';6var configPath = path.resolve(process.cwd(), configFileName);7if (!fs.existsSync(configPath)) { init(configPath); }8var config = require(configPath);9function init(pathToConfigFile) {10    pathToConfigFile = path.resolve(pathToConfigFile);11    if (!pathToConfigFile.endsWith('.js')) {12        pathToConfigFile = path.resolve(pathToConfigFile, configFileName);13    }14    if (fs.existsSync(pathToConfigFile)) {15        config = require(pathToConfigFile);16        selectConfig();17    }18    else {19        fs.writeFileSync(pathToConfigFile,20'/** config-sets file */ \n\21module.exports = {       \n\22                         \n\23    // default settings  \n\24    def: {               \n\25        isDebug: false   \n\26    },                   \n\27    // develop settings  \n\28    dev: {               \n\29        // overwriting   \n\30        isDebug: true    \n\31    }                    \n\32};                       ',33            { encoding: 'utf8' }34        );35    }36}37function selectConfig() {38    module.exports = assign(39        module.exports,40        config[process.env.NODE_ENV]41            ? config[process.env.NODE_ENV]42            : config['def']43    );44}45function assign(target, source) {46    if (!target && typeof target !== "object") { target = {}; }47    if (Array.isArray(source) && !Array.isArray(target)) { target = []; }48    if (source && typeof source === "object") {49        Object.keys(source).forEach(function (k) {50            if (!source[k] || typeof source[k] !== "object") {51                if (target[k] === undefined) { target[k] = source[k]; }52            }53            else {54                if (typeof target[k] !== "object") { target[k] = {}; }55                target[k] = assign(target[k], source[k]);56            }57        });58    }59    return target;60}61var def = config.def ? config.def : {};62Object.keys(config).forEach(function (k) { if (k !== 'def') { config[k] = assign(config[k], def); } });63selectConfig();64module.exports.init = init;...

Full Screen

Full Screen

mantraconfig.tests.js

Source:mantraconfig.tests.js Github

copy

Full Screen

1const Path = require("path");2const assert = require("chai").assert;3const fs = require("fs");4require("gimport").initm( process.cwd() );5const MantraConfig = global.gimport("mantraconfig");6describe( 'MantraConfig tests', () => {7    it( '# ExistsConfigFile test', async () => {8        const pathToConfigFile = Path.join(process.cwd(), "test", "testassets", "mantraconfig.json");9        const existsFile = await MantraConfig.ExistsConfigFile(pathToConfigFile);10        assert.isTrue(existsFile);11    });12    it( '# ExistsConfigFile no existing file test', async () => {13        const pathToConfigFile = Path.join(process.cwd(), "test",  "testassets", "mantraconfignoexisting.json");14        const existsFile = await MantraConfig.ExistsConfigFile(pathToConfigFile);15        assert.isFalse(existsFile);16    });17    it( '# IsJsonFileValid test', async () => {18        const pathToConfigFile = Path.join(process.cwd(), "test",  "testassets", "mantraconfig.json");19        const isJsonValid = await MantraConfig.IsJsonFileValid(pathToConfigFile);20        assert.isTrue(isJsonValid);21    });22    it( '# IsJsonFileValid invalid file test', async () => {23        const pathToConfigFile = Path.join(process.cwd(), "test",  "testassets", "mantraconfiginvalid.json");24        const isJsonValid = await MantraConfig.IsJsonFileValid(pathToConfigFile);25        assert.isFalse(isJsonValid);26    });27    it( '# Json expected', () => {28        const pathToConfigFile = Path.join(process.cwd(), "test",  "testassets", "mantraconfig.json");29        let config = MantraConfig.LoadConfig( pathToConfigFile );30        assert.isObject( config );31    });32    it( '# CoreComponents is a directory', () => {33        const pathToConfigFile = Path.join(process.cwd(), "test",  "testassets", "mantraconfig.json");34        let config = MantraConfig.LoadConfig( pathToConfigFile );35        assert.isTrue( fs.lstatSync(config.CoreComponents).isDirectory() );36    });...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1// ***********************************************************2// This example plugins/index.js can be used to load plugins3//4// You can change the location of this file or turn off loading5// the plugins file with the 'pluginsFile' configuration option.6//7// You can read more here:8// https://on.cypress.io/plugins-guide9// ***********************************************************10// This function is called when a project is opened or re-opened (e.g. due to11// the project's config changing)12const fs = require('fs-extra')13const path = require('path')14function getConfigurationByFile (file) {15   //file variable call the qa.json generic name16  const pathToConfigFile = path.resolve('cypress', 'config', `${file}.json`) 17  //directorio en la carpeta cypress, config y el archivo18  if(!fs.existsSync(pathToConfigFile)){19    return {}; //returning empty object if we do not have a file20  }21  return fs.readJson(pathToConfigFile)22}23module.exports = (on, config) => {24 // require('cypress-plugin-retries/lib/plugin')(on)25  const file = config.env.configFile // || 'development' quitamos ya que no tenemos ambiente llamado development dearrollo y solo queremos usar nuestro archivo qa.json26  return getConfigurationByFile(file)...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const path = require('path')2const pathToConfigFile = path.resolve('cypress', 'config', 'cypress.json')3const cypress = require('cypress')4cypress.run({5})6{7}8describe('Sample', function() {9  it('Sample Test', function() {10    cy.visit('/')11  })12})

Full Screen

Using AI Code Generation

copy

Full Screen

1const path = require('path')2const configPath = path.resolve('cypress', 'config', 'test.json')3module.exports = (on, config) => {4  on('file:preprocessor', cucumber())5  return Object.assign({}, config, {6    testFiles: '**/*.{feature,features}',7    env: {8    }9  })10}11import { addMatchImageSnapshotCommand } from 'cypress-image-snapshot/command'12import './commands'13addMatchImageSnapshotCommand({14})15import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps'16import { getConfiguration } from '../../config'17const { configPath } = getConfiguration()18Given('I open the {string} page', (page) => {19  cy.visit(page)20})21When('I click on the {string} button', (button) => {22  cy.get(`[data-cy=${button}]`).click()23})24Then('I should see the {string} page', (page) => {25  cy.get(`[data-cy=${page}]`).should('be.visible')26})27{28}29describe('Feature', () => {30  it('Scenario', () => {31    cy.visit('/login')32    cy.get('[data-cy=login]').click()33    cy.get('[data-cy=home]').should('be.visible')34  })35})36describe('Feature', ()

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('test', () => {2    it('test', () => {3        cy.visit(Cypress.config('baseUrl'));4    });5});6{7  "env": {8  }9}10describe('test', () => {11    it('test', () => {12        cy.visit(Cypress.env('REACT_APP_API_URL'));13    });14});15{16  "env": {17  }18}19describe('test', () => {20    it('test', () => {21        cy.visit(Cypress.config('baseUrl'));22    });23});24{25  "env": {26  }27}28describe('test', () => {29    it('test', () => {30        cy.visit(Cypress.env('REACT_APP_API_URL'));31    });32});33{34  "env": {35  }36}37describe('test', () => {38    it('test', () => {39        cy.visit(Cypress.config('baseUrl'));40    });41});42{43  "env": {44  }45}46describe('test', () =>

Full Screen

Using AI Code Generation

copy

Full Screen

1const path = require('path')2const cypress = require('cypress')3const configPath = path.resolve(__dirname, 'cypress.json')4cypress.run({5})6{7}8describe('My First Test', function() {9  it('Visits the Kitchen Sink', function() {10    cy.visit('/')11  })12})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3        cy.visit(Cypress.config().baseUrl + '/login')4        cy.title().should('include', 'Login')5    })6})7{8    "env": {9    }10}11{12}

Full Screen

Cypress Tutorial

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.

Chapters:

  1. What is Cypress? -
  2. Why Cypress? - Learn why Cypress might be a good choice for testing your web applications.
  3. Features of Cypress Testing - Learn about features that make Cypress a powerful and flexible tool for testing web applications.
  4. Cypress Drawbacks - Although Cypress has many strengths, it has a few limitations that you should be aware of.
  5. Cypress Architecture - Learn more about Cypress architecture and how it is designed to be run directly in the browser, i.e., it does not have any additional servers.
  6. Browsers Supported by Cypress - Cypress is built on top of the Electron browser, supporting all modern web browsers. Learn browsers that support Cypress.
  7. Selenium vs Cypress: A Detailed Comparison - Compare and explore some key differences in terms of their design and features.
  8. Cypress Learning: Best Practices - Take a deep dive into some of the best practices you should use to avoid anti-patterns in your automation tests.
  9. How To Run Cypress Tests on LambdaTest? - Set up a LambdaTest account, and now you are all set to learn how to run Cypress tests.

Certification

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.

YouTube

Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.

Run Cypress automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful