Best JavaScript code snippet using chromeless
Test.AnotherWay.xml_eq.js
Source:Test.AnotherWay.xml_eq.js  
1/**2 * File: Test.AnotherWay.xml_eq.js 3 * Adds a xml_eq method to AnotherWay test objects.4 *5 */6(function() {7    /**8     * Function: createNode9     * Given a string, try to create an XML DOM node.  Throws string messages10     *     on failure.11     * 12     * Parameters:13     * text - {String} An XML string.14     *15     * Returns:16     * {DOMElement} An element node.17     */18    function createNode(text) {19        20        var index = text.indexOf('<');21        if(index > 0) {22            text = text.substring(index);23        }24        25        var doc;26        if(window.ActiveXObject && !this.xmldom) {27            doc = new ActiveXObject("Microsoft.XMLDOM");28            try {29                doc.loadXML(text);30            } catch(err) {31                throw "ActiveXObject loadXML failed: " + err;32            }33        } else if(window.DOMParser) {34            try {35                doc = new DOMParser().parseFromString(text, 'text/xml');36            } catch(err) {37                throw "DOMParser.parseFromString failed";38            }39            if(doc.documentElement && doc.documentElement.nodeName == "parsererror") {40                throw "DOMParser.parseFromString returned parsererror";41            }42        } else {43            var req = new XMLHttpRequest();44            req.open("GET", "data:text/xml;charset=utf-8," +45                     encodeURIComponent(text), false);46            if(req.overrideMimeType) {47                req.overrideMimeType("text/xml");48            }49            req.send(null);50            doc = req.responseXML;51        }52        53        var root = doc.documentElement;54        if(!root) {55            throw "no documentElement";56        }57        return root;58    }59    60    /**61     * Function assertEqual62     * Test two objects for equivalence (based on ==).  Throw an exception63     *     if not equivalent.64     * 65     * Parameters:66     * got - {Object}67     * expected - {Object}68     * msg - {String} The message to be thrown.  This message will be appended69     *     with ": got {got} but expected {expected}" where got and expected are70     *     replaced with string representations of the above arguments.71     */72    function assertEqual(got, expected, msg) {73        if(got === undefined) {74            got = "undefined";75        } else if (got === null) {76            got = "null";77        }78        if(expected === undefined) {79            expected = "undefined";80        } else if (expected === null) {81            expected = "null";82        }83        if(got != expected) {84            throw msg + ": got '" + got + "' but expected '" + expected + "'";85        }86    }87    88    /**89     * Function assertElementNodesEqual90     * Test two element nodes for equivalence.  Nodes are considered equivalent91     *     if they are of the same type, have the same name, have the same92     *     namespace prefix and uri, and if all child nodes are equivalent.93     *     Throws a message as exception if not equivalent.94     * 95     * Parameters:96     * got - {DOMElement}97     * expected - {DOMElement}98     * options - {Object} Optional object for configuring test options.99     *100     * Valid options:101     * prefix - {Boolean} Compare element and attribute102     *     prefixes (namespace uri always tested).  Default is false.103     * includeWhiteSpace - {Boolean} Include whitespace only nodes when104     *     comparing child nodes.  Default is false.105     */106    function assertElementNodesEqual(got, expected, options) {107        var testPrefix = (options && options.prefix === true);108        109        // compare types110        assertEqual(got.nodeType, expected.nodeType, "Node type mismatch");111        112        // compare names113        var gotName = testPrefix ?114            got.nodeName : got.nodeName.split(":").pop();115        var expName = testPrefix ?116            expected.nodeName : expected.nodeName.split(":").pop();117        assertEqual(gotName, expName, "Node name mismatch");118        119        // for text nodes compare value120        if(got.nodeType == 3) {121            assertEqual(122                got.nodeValue, expected.nodeValue, "Node value mismatch"123            );124        }125        // for element type nodes compare namespace, attributes, and children126        else if(got.nodeType == 1) {127            128            // test namespace alias and uri129            if(got.prefix || expected.prefix) {130                if(testPrefix) {131                    assertEqual(132                        got.prefix, expected.prefix,133                        "Bad prefix for " + got.nodeName134                    );135                }136            }137            if(got.namespaceURI || expected.namespaceURI) {138                assertEqual(139                    got.namespaceURI, expected.namespaceURI,140                    "Bad namespaceURI for " + got.nodeName141                );142            }143            144            // compare attributes - disregard xmlns given namespace handling above145            var gotAttrLen = 0;146            var gotAttr = {};147            var expAttrLen = 0;148            var expAttr = {};149            var ga, ea, gn, en;150            for(var i=0; i<got.attributes.length; ++i) {151                ga = got.attributes[i];152                if(ga.specified === undefined || ga.specified === true) {153                    if(ga.name.split(":").shift() != "xmlns") {154                        gn = testPrefix ? ga.name : ga.name.split(":").pop();155                        gotAttr[gn] = ga;156                        ++gotAttrLen;157                    }158                }159            }160            for(var i=0; i<expected.attributes.length; ++i) {161                ea = expected.attributes[i];162                if(ea.specified === undefined || ea.specified === true) {163                    if(ea.name.split(":").shift() != "xmlns") {164                        en = testPrefix ? ea.name : ea.name.split(":").pop();165                        expAttr[en] = ea;166                        ++expAttrLen;167                    }168                }169            }170            assertEqual(171                gotAttrLen, expAttrLen,172                "Attributes length mismatch for " + got.nodeName173            );174            var gv, ev;175            for(var name in gotAttr) {176                if(expAttr[name] == undefined) {177                    throw "Attribute name " + gotAttr[name].name + " expected for element " + got.nodeName;178                }179                // test attribute namespace180                assertEqual(181                    gotAttr[name].namespaceURI, expAttr[name].namespaceURI,182                    "Attribute namespace mismatch for element " +183                    got.nodeName + " attribute name " + gotAttr[name].name184                );185                // test attribute value186                assertEqual(187                    gotAttr[name].value, expAttr[name].value,188                    "Attribute value mismatch for element " + got.nodeName +189                    " attribute name " + gotAttr[name].name190                );191            }192            193            // compare children194            var gotChildNodes = getChildNodes(got, options);195            var expChildNodes = getChildNodes(expected, options);196            assertEqual(197                gotChildNodes.length, expChildNodes.length,198                "Children length mismatch for " + got.nodeName199            );200            for(var j=0; j<gotChildNodes.length; ++j) {201                try {202                    assertElementNodesEqual(203                        gotChildNodes[j], expChildNodes[j], options204                    );205                } catch(err) {206                    throw "Bad child " + j + " for element " + got.nodeName + ": " + err;207                }208            }209        }210        return true;211    }212    /**213     * Function getChildNodes214     * Returns the child nodes of the specified nodes. By default this method215     *     will ignore child text nodes which are made up of whitespace content.216     *     The 'includeWhiteSpace' option is used to control this behaviour.217     * 218     * Parameters:219     * node - {DOMElement}220     * options - {Object} Optional object for test configuration.221     * 222     * Valid options:223     * includeWhiteSpace - {Boolean} Include whitespace only nodes when224     *     comparing child nodes.  Default is false.225     * 226     * Returns:227     * {Array} of {DOMElement}228     */229    function getChildNodes(node, options) {230        //check whitespace231        if (options && options.includeWhiteSpace) {232            return node.childNodes;233        }234        else {235           nodes = [];236           for (var i = 0; i < node.childNodes.length; i++ ) {237              var child = node.childNodes[i];238              if (child.nodeType == 1) {239                 //element node, add it 240                 nodes.push(child);241              }242              else if (child.nodeType == 3) {243                 //text node, add if non empty244                 if (child.nodeValue && 245                       child.nodeValue.replace(/^\s*(.*?)\s*$/, "$1") != "" ) { 246                    nodes.push(child);247                 }248              }249           }250  251           return nodes;252        }253    } 254    255    /**256     * Function: Test.AnotherWay._test_object_t.xml_eq257     * Test if two XML nodes are equivalent.  Tests for same node types, same258     *     node names, same namespace URI, same attributes, and recursively259     *     tests child nodes for same criteria.260     *261     * (code)262     * t.xml_eq(got, expected, message);263     * (end)264     * 265     * Parameters:266     * got - {DOMElement | String} A DOM node or XML string to test.267     * expected - {DOMElement | String} The expected DOM node or XML string.268     * msg - {String} A message to print with test output.269     * options - {Object} Optional object for configuring test.270     *271     * Valid options:272     * prefix - {Boolean} Compare element and attribute273     *     prefixes (namespace uri always tested).  Default is false.274     * includeWhiteSpace - {Boolean} Include whitespace only nodes when275     *     comparing child nodes.  Default is false.276     */277    var proto = Test.AnotherWay._test_object_t.prototype;278    proto.xml_eq = function(got, expected, msg, options) {279        // convert arguments to nodes if string280        if(typeof got == "string") {281            try {282                got = createNode(got);283            } catch(err) {284                this.fail(msg + ": got argument could not be converted to an XML node: " + err);285                return;286            }287        }288        if(typeof expected == "string") {289            try {290                expected = createNode(expected);291            } catch(err) {292                this.fail(msg + ": expected argument could not be converted to an XML node: " + err);293                return;294            }295        }296        297        // test nodes for equivalence298        try {299            assertElementNodesEqual(got, expected, options);300            this.ok(true, msg);301        } catch(err) {302            this.fail(msg + ": " + err);303        }304    }305    ...Test.AnotherWay.geom_eq.js
Source:Test.AnotherWay.geom_eq.js  
1/**2 * File: Test.AnotherWay.geom_eq.js3 * Adds a geom_eq method to AnotherWay test objects.4 *5 */6(function() {7    8    /**9     * Function assertEqual10     * Test two objects for equivalence (based on ==).  Throw an exception11     *     if not equivalent.12     * 13     * Parameters:14     * got - {Object}15     * expected - {Object}16     * msg - {String} The message to be thrown.  This message will be appended17     *     with ": got {got} but expected {expected}" where got and expected are18     *     replaced with string representations of the above arguments.19     */20    function assertEqual(got, expected, msg) {21        if(got === undefined) {22            got = "undefined";23        } else if (got === null) {24            got = "null";25        }26        if(expected === undefined) {27            expected = "undefined";28        } else if (expected === null) {29            expected = "null";30        }31        if(got != expected) {32            throw msg + ": got '" + got + "' but expected '" + expected + "'";33        }34    }35    36    /**37     * Function assertFloatEqual38     * Test two objects for floating point equivalence.  Throw an exception39     *     if not equivalent.40     * 41     * Parameters:42     * got - {Object}43     * expected - {Object}44     * msg - {String} The message to be thrown.  This message will be appended45     *     with ": got {got} but expected {expected}" where got and expected are46     *     replaced with string representations of the above arguments.47     */48    function assertFloatEqual(got, expected, msg) {49        var OpenLayers = Test.AnotherWay._g_test_iframe.OpenLayers;50        if(got === undefined) {51            got = "undefined";52        } else if (got === null) {53            got = "null";54        }55        if(expected === undefined) {56            expected = "undefined";57        } else if (expected === null) {58            expected = "null";59        }60        if(Math.abs(got - expected) > Math.pow(10, -OpenLayers.Util.DEFAULT_PRECISION)) {61            throw msg + ": got '" + got + "' but expected '" + expected + "'";62        }63    }64    65    /**66     * Function assertGeometryEqual67     * Test two geometries for equivalence.  Geometries are considered68     *     equivalent if they are of the same class, and given component69     *     geometries, if all components are equivalent. Throws a message as70     *     exception if not equivalent.71     * 72     * Parameters:73     * got - {OpenLayers.Geometry}74     * expected - {OpenLayers.Geometry}75     * options - {Object} Optional object for configuring test options.76     */77    function assertGeometryEqual(got, expected, options) {78        79        var OpenLayers = Test.AnotherWay._g_test_iframe.OpenLayers;80        // compare types81        assertEqual(typeof got, typeof expected, "Object types mismatch");82        83        // compare classes84        assertEqual(got.CLASS_NAME, expected.CLASS_NAME, "Object class mismatch");85        86        if(got instanceof OpenLayers.Geometry.Point) {87            // compare points88            assertFloatEqual(got.x, expected.x, "x mismatch");89            assertFloatEqual(got.y, expected.y, "y mismatch");90            assertFloatEqual(got.z, expected.z, "z mismatch");91        } else {92            // compare components93            assertEqual(94                got.components.length, expected.components.length,95                "Component length mismatch for " + got.CLASS_NAME96            );97            for(var i=0; i<got.components.length; ++i) {98                try {99                    assertGeometryEqual(100                        got.components[i], expected.components[i], options101                    );102                } catch(err) {103                    throw "Bad component " + i + " for " + got.CLASS_NAME + ": " + err;104                }105            }106        }107        return true;108    }109    110    /**111     * Function: Test.AnotherWay._test_object_t.geom_eq112     * Test if two geometry objects are equivalent.  Tests for same geometry113     *     class, same number of components (if any), equivalent component114     *     geometries, and same coordinates.115     *116     * (code)117     * t.geom_eq(got, expected, message);118     * (end)119     * 120     * Parameters:121     * got - {OpenLayers.Geometry} Any geometry instance.122     * expected - {OpenLayers.Geometry} The expected geometry.123     * msg - {String} A message to print with test output.124     * options - {Object} Optional object for configuring test options.125     */126    var proto = Test.AnotherWay._test_object_t.prototype;127    proto.geom_eq = function(got, expected, msg, options) {        128        // test geometries for equivalence129        try {130            assertGeometryEqual(got, expected, options);131            this.ok(true, msg);132        } catch(err) {133            this.fail(msg + ": " + err);134        }135    }136    ...Using AI Code Generation
1const Chromeless = require('chromeless').Chromeless2async function run() {3  const chromeless = new Chromeless()4    .type('chromeless', 'input[name="q"]')5    .press(13)6    .wait('#resultStats')7    .screenshot()8  await chromeless.end()9}10run().catch(console.error.bind(console))11{12}13{14  "headers": {15  },16}17const got = require('got')18async function run() {19    body: {20    }21  })22}23run().catch(console.error.bind(console))Using AI Code Generation
1const chromeless = new Chromeless()2  .type('chromeless', 'input[name="q"]')3  .press(13)4  .wait('#resultStats')5  .screenshot()6await chromeless.end()7{8  "dependencies": {9  },10  "devDependencies": {11  },12  "scripts": {13  }14}15### new Chromeless(options)16- `launchConfig`: The [puppeteer launch config](Using AI Code Generation
1const Chromeless = require('chromeless').Chromeless2async function run() {3  const chromeless = new Chromeless()4    .type('chromeless', 'input[name="q"]')5    .press(13)6    .wait('#resultStats')7    .screenshot()8  await chromeless.end()9}10run().catch(console.error.bind(console))11{12  "scripts": {13  },14  "dependencies": {15  }16}17The .screenshot() method takes an optional options object with the following properties:18The .screenshot() method takes an optional options object with the following properties:19const Chromeless = require('chromeless').Chromeless20async function run() {21  const chromeless = new Chromeless()Using AI Code Generation
1const chromeless = new Chromeless();2  .type('chromeless', 'input[name="q"]')3  .press(13)4  .wait('#resultStats')5  .screenshot();6await chromeless.end();7const chromeless = new Chromeless();8  .type('chromeless', 'input[name="q"]')9  .press(13)10  .wait('#resultStats')11  .screenshot();12await chromeless.end();13const chromeless = new Chromeless();14  .type('chromeless', 'input[name="q"]')15  .press(13)16  .wait('#resultStats')17  .screenshot();18await chromeless.end();Using AI Code Generation
1const chromeless = new Chromeless();2    .type('chromeless', 'input[name="q"]')3    .press(13)4    .wait('#resultStats')5    .screenshot();6await chromeless.end();7{ [Error: ENOENT: no such file or directory, open '/tmp/chromeless/0.7.0/chrome-linux/chrome']8  path: '/tmp/chromeless/0.7.0/chrome-linux/chrome' }9{ [Error: ENOENT: no such file or directory, open '/tmp/chromeless/0.7.0/chrome-linux/chrome']10  path: '/tmp/chromeless/0.7.0/chrome-linux/chrome' }11const chromeless = new Chromeless();12    .type('chromeless', 'input[name="q"]')13    .press(13)14    .wait('#resultStats')15    .screenshot();16await chromeless.end();17{ [Error: ENOENT: no such file or directory, open '/Using AI Code Generation
1var chromeless = new Chromeless();2  .evaluate(() => {3    return document.body.innerHTML;4  })5  .then(html => console.log(html))6  .catch(console.error.bind(console));7var chromeless = new Chromeless();8  .evaluate(() => {9    return document.body.innerHTML;10  })11  .then(html => console.log(html))12  .catch(console.error.bind(console));13var chromeless = new Chromeless();14  .evaluate(() => {15    return document.body.innerHTML;16  })17  .then(html => console.log(html))18  .catch(console.error.bind(console));19var chromeless = new Chromeless();20  .evaluate(() => {21    return document.body.innerHTML;22  })23  .then(html => console.log(html))24  .catch(console.error.bind(console));25var chromeless = new Chromeless();26  .evaluate(() => {27    return document.body.innerHTML;28  })29  .then(html => console.log(html))30  .catch(console.error.bind(console));Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
