Best JavaScript code snippet using playwright-internal
offspring-1.0.js
Source:offspring-1.0.js  
...117	},118	// Executed once the page has loaded119	start: function() {120		var startTime = new Date();121		this.traverseChildren(document.getElementsByTagName("body")[0]);122		var endTime = new Date();123		// alert("Offspring Exec time: " + (endTime.getTime() - startTime.getTime()) + "ms");124		// window.status += "Offspring Exec time: " + (endTime.getTime() - startTime.getTime()) + "ms";125	},126	/* Maintenance note for defineTraverseChildrenFunction:127	128		There are several blocks of code that are marked off as "traverseChildren.A"129		or "traverseChildren.B" -- each of these are identical, respectively. (That is,130		all "traverseChildren.A" blocks are the same and all "traverseChildren.B" are 131		the same.) 132		133		So, why not just create a function where the code can be kept in one place? 134		While normally a sensible idea, I decided against that approach only so 135		that the speed hits associated with the creation of the function stack136		could be averted. At the same time, I didn't want to compromise137		the code's maintainability; so, if any block needs to be updated, they138		can all be kept in sync with some basic copy-n-pasting from one 139		block to the next.140	*/141	/* This defines the internal iterator function on-the-fly,142		depending on the configuration options */143	defineTraverseChildrenFunction: function() {144		switch (this.configuration.shouldRemoveOldOffspringClassesFirst)145		{146			case true: // shouldRemoveOldOffspringClassesFirst is true147				switch (this.configuration.runningMode)148				{149					case 'full': // 'full' running mode and shouldRemoveOldOffspringClassesFirst is true150						this.traverseChildren = function(parent)151						{152							/* ============= Begin Code Block "traverseChildren.A" ================ */153								// If the node has no children, exit154								if (!parent.childNodes.length) return;155								/* First, gather up all the element nodes */156								var childElementNodes = [];157								var testNode = parent.childNodes[0]; // initialize158								while (testNode)159								{160									if (testNode.nodeType == 1)161									{162										childElementNodes.push(testNode);163									}164									testNode = testNode.nextSibling;165								}166								/*167									empty this variable to ensure that the JavaScript168									interpreter doesn't have to update the variable's169									nodelist as DOM changes are made170								*/171								testNode = null;172								var childElementNodesLength = childElementNodes.length;173								// If no element nodes were found, exit174								if (!childElementNodesLength) return;175								// Make sure that the CSS-classnames cache has enough entries to cover176								// the number of child nodes177								if (childElementNodesLength > this.cacheLevel)178								{179									this.fillCacheTo(childElementNodesLength);180								}181								var lastIndex = childElementNodesLength - 1; // index of the last element node182							/* ============= /End Code Block "traverseChildren.A" ================ */183							// First, take care of all but the last element184							for (var i = 0; i < lastIndex; i++)185							{186								var currentElement = childElementNodes[i];187								this.removeMultipleClassNames(currentElement, this.classNamesArray, this.classNameSubstringsArray);188								// argument syntax: node to act upon, current index, boolean for whether isLast189								this._addOffspringClassNames(currentElement, i, false);190								this.traverseChildren(currentElement);191							}192							currentElement = null; // prevent memory leaks193							// Then, take care of the last one194							var lastElement = childElementNodes[lastIndex];195							this.removeMultipleClassNames(lastElement, this.classNamesArray, this.classNameSubstringsArray);196							this._addOffspringClassNames(lastElement, lastIndex, true);197							this.traverseChildren(lastElement);198							lastElement = null; // prevent memory leaks199							/* ============= Begin Code Block "traverseChildren.B" ================ */200								// prevent memory leaks201								lastElement = null;202								parent = null;203							/* ============= /End Code Block "traverseChildren.B" ================ */204						}; // end of traverseChildren function definition205						break;206					case 'light': // 'light' running mode and shouldRemoveOldOffspringClassesFirst is true207						this.traverseChildren = function(parent)208						{209							/* ============= Begin Code Block "traverseChildren.A" ================ */210								// If the node has no children, exit211								if (!parent.childNodes.length) return;212								/* First, gather up all the element nodes */213								var childElementNodes = [];214								var testNode = parent.childNodes[0]; // initialize215								while (testNode)216								{217									if (testNode.nodeType == 1)218									{219										childElementNodes.push(testNode);220									}221									testNode = testNode.nextSibling;222								}223								/*224									empty this variable to ensure that the JavaScript225									interpreter doesn't have to update the variable's226									nodelist as DOM changes are made227								*/228								testNode = null;229								var childElementNodesLength = childElementNodes.length;230								// If no element nodes were found, exit231								if (!childElementNodesLength) return;232								// Make sure that the CSS-classnames cache has enough entries to cover233								// the number of child nodes234								if (childElementNodesLength > this.cacheLevel)235								{236									this.fillCacheTo(childElementNodesLength);237								}238								var lastIndex = childElementNodesLength - 1; // index of the last element node239							/* ============= /End Code Block "traverseChildren.A" ================ */240							switch (childElementNodesLength)241							{242								case 0: return;243										break;244								case 1:245									/* Take care of the only element */246									var onlyElement = childElementNodes[0];247									this.removeMultipleClassNames(onlyElement, this.classNamesArray, this.classNameSubstringsArray);248									// argument syntax: node to act upon, current index, boolean for whether isLast249									this._addOffspringClassNames( onlyElement, lastIndex, true );250									onlyElement = null; // prevent memory leaks251									break;252								default:253									/* Take care of the first element */254									var firstElement = childElementNodes[0];255									this.removeMultipleClassNames(firstElement, this.classNamesArray, this.classNameSubstringsArray);256									// argument syntax: node to act upon, current index, boolean for whether isLast257									this._addOffspringClassNames( firstElement, 0, false );258									firstElement = null; // prevent memory leaks259									/* Take care of the last element */260									var lastElement = childElementNodes[lastIndex];261									this.removeMultipleClassNames(lastElement, this.classNamesArray, this.classNameSubstringsArray);262									// argument syntax: node to act upon, current index, boolean for whether isLast263									this._addOffspringClassNames( lastElement , lastIndex, true );264									lastElement = null; // prevent memory leaks265									break;266							} // end of switch statement for childElementNodesLength267							// Lastly, loop over all the childern elements268							for (var i = 0; i < childElementNodesLength; i++)269							{270								this.traverseChildren( childElementNodes[i] );271							}272							/* ============= Begin Code Block "traverseChildren.B" ================ */273								// prevent memory leaks274								lastElement = null;275								parent = null;276							/* ============= /End Code Block "traverseChildren.B" ================ */277						}; // end of traverseChildren function definition278						break;279				} // end of switch-statement for configuration.runningMode280				break;281			case false: // shouldRemoveOldOffspringClassesFirst is false282				switch (this.configuration.runningMode)283				{284					case 'full': // 'full' running mode and shouldRemoveOldOffspringClassesFirst is false285						this.traverseChildren = function(parent)286						{287							/* ============= Begin Code Block "traverseChildren.A" ================ */288								// If the node has no children, exit289								if (!parent.childNodes.length) return;290								/* First, gather up all the element nodes */291								var childElementNodes = [];292								var testNode = parent.childNodes[0]; // initialize293								while (testNode)294								{295									if (testNode.nodeType == 1)296									{297										childElementNodes.push(testNode);298									}299									testNode = testNode.nextSibling;300								}301								/*302									empty this variable to ensure that the JavaScript303									interpreter doesn't have to update the variable's304									nodelist as DOM changes are made305								*/306								testNode = null;307								var childElementNodesLength = childElementNodes.length;308								// If no element nodes were found, exit309								if (!childElementNodesLength) return;310								// Make sure that the CSS-classnames cache has enough entries to cover311								// the number of child nodes312								if (childElementNodesLength > this.cacheLevel)313								{314									this.fillCacheTo(childElementNodesLength);315								}316								var lastIndex = childElementNodesLength - 1; // index of the last element node317							/* ============= /End Code Block "traverseChildren.A" ================ */318							// First, take care of all but the last element319							for (var i = 0; i < lastIndex; i++)320							{321								var currentElement = childElementNodes[i];322								// argument syntax: node to act upon, current index, boolean for whether isLast323								this._addOffspringClassNames(currentElement, i, false);324								this.traverseChildren(currentElement);325							}326							currentElement = null; // prevent memory leaks327							/*328								Then, take care of the last one329								(this set of code isn't integrated into330								the for-loop above so as to avoid having331								an addiitional if-statement inside there)332							*/333							var lastElement = childElementNodes[lastIndex];334							this._addOffspringClassNames(lastElement, lastIndex, true);335							this.traverseChildren(lastElement);336							lastElement = null; // prevent memory leaks337							/* ============= Begin Code Block "traverseChildren.B" ================ */338								// prevent memory leaks339								lastElement = null;340								parent = null;341							/* ============= /End Code Block "traverseChildren.B" ================ */342						}; // end of traverseChildren function definition343						break;344					case 'light': // 'light' running mode and shouldRemoveOldOffspringClassesFirst is false345						this.traverseChildren = function(parent)346						{347							/* ============= Begin Code Block "traverseChildren.A" ================ */348								// If the node has no children, exit349								if (!parent.childNodes.length) return;350								/* First, gather up all the element nodes */351								var childElementNodes = [];352								var testNode = parent.childNodes[0]; // initialize353								while (testNode)354								{355									if (testNode.nodeType == 1)356									{357										childElementNodes.push(testNode);358									}359									testNode = testNode.nextSibling;360								}361								/*362									empty this variable to ensure that the JavaScript363									interpreter doesn't have to update the variable's364									nodelist as DOM changes are made365								*/366								testNode = null;367								var childElementNodesLength = childElementNodes.length;368								// If no element nodes were found, exit369								if (!childElementNodesLength) return;370								// Make sure that the CSS-classnames cache has enough entries to cover371								// the number of child nodes372								if (childElementNodesLength > this.cacheLevel)373								{374									this.fillCacheTo(childElementNodesLength);375								}376								var lastIndex = childElementNodesLength - 1; // index of the last element node377							/* ============= /End Code Block "traverseChildren.A" ================ */378							switch (childElementNodesLength)379							{380								case 0: break;381								case 1:382									/* Take care of the only element */383									// argument syntax: node to act upon, current index, boolean for whether isLast384									this._addOffspringClassNames( childElementNodes[0], lastIndex, true );385									// Lastly, loop over all the childern elements386									for (var i = 0; i < childElementNodesLength; i++)387									{388										this.traverseChildren( childElementNodes[i] );389									}390									break;391								default:392									/* Take care of the first element */393									// argument syntax: node to act upon, current index, boolean for whether isLast394									this._addOffspringClassNames( childElementNodes[0], 0, false );395									/* Take care of the last element */396									// argument syntax: node to act upon, current index, boolean for whether isLast397									this._addOffspringClassNames( childElementNodes[lastIndex] , lastIndex, true );398									// Lastly, loop over all the childern elements399									for (var i = 0; i < childElementNodesLength; i++)400									{401										this.traverseChildren( childElementNodes[i] );402									}403									break;404							}405							/* ============= Begin Code Block "traverseChildren.B" ================ */406								// prevent memory leaks407								lastElement = null;408								parent = null;409							/* ============= /End Code Block "traverseChildren.B" ================ */410						}; // end of traverseChildren function definition411						break;412				} // end of switch-statement for configuration.runningMode413				break;414		} // end of switch-statement for configuration.shouldRemoveOldOffspringClassesFirst415	}, // end of defineTraverseChildrenFunction...offspring.js
Source:offspring.js  
...117	},118	// Executed once the page has loaded119	start: function() {120		var startTime = new Date();121		this.traverseChildren(document.getElementsByTagName("body")[0]);122		var endTime = new Date();123		// alert("Offspring Exec time: " + (endTime.getTime() - startTime.getTime()) + "ms");124		// window.status += "Offspring Exec time: " + (endTime.getTime() - startTime.getTime()) + "ms";125	},126	/* Maintenance note for defineTraverseChildrenFunction:127	128		There are several blocks of code that are marked off as "traverseChildren.A"129		or "traverseChildren.B" -- each of these are identical, respectively. (That is,130		all "traverseChildren.A" blocks are the same and all "traverseChildren.B" are 131		the same.) 132		133		So, why not just create a function where the code can be kept in one place? 134		While normally a sensible idea, I decided against that approach only so 135		that the speed hits associated with the creation of the function stack136		could be averted. At the same time, I didn't want to compromise137		the code's maintainability; so, if any block needs to be updated, they138		can all be kept in sync with some basic copy-n-pasting from one 139		block to the next.140	*/141	/* This defines the internal iterator function on-the-fly,142		depending on the configuration options */143	defineTraverseChildrenFunction: function() {144		switch (this.configuration.shouldRemoveOldOffspringClassesFirst)145		{146			case true: // shouldRemoveOldOffspringClassesFirst is true147				switch (this.configuration.runningMode)148				{149					case 'full': // 'full' running mode and shouldRemoveOldOffspringClassesFirst is true150						this.traverseChildren = function(parent)151						{152							/* ============= Begin Code Block "traverseChildren.A" ================ */153								// If the node has no children, exit154								if (!parent.childNodes.length) return;155								/* First, gather up all the element nodes */156								var childElementNodes = [];157								var testNode = parent.childNodes[0]; // initialize158								while (testNode)159								{160									if (testNode.nodeType == 1)161									{162										childElementNodes.push(testNode);163									}164									testNode = testNode.nextSibling;165								}166								/*167									empty this variable to ensure that the JavaScript168									interpreter doesn't have to update the variable's169									nodelist as DOM changes are made170								*/171								testNode = null;172								var childElementNodesLength = childElementNodes.length;173								// If no element nodes were found, exit174								if (!childElementNodesLength) return;175								// Make sure that the CSS-classnames cache has enough entries to cover176								// the number of child nodes177								if (childElementNodesLength > this.cacheLevel)178								{179									this.fillCacheTo(childElementNodesLength);180								}181								var lastIndex = childElementNodesLength - 1; // index of the last element node182							/* ============= /End Code Block "traverseChildren.A" ================ */183							// First, take care of all but the last element184							for (var i = 0; i < lastIndex; i++)185							{186								var currentElement = childElementNodes[i];187								this.removeMultipleClassNames(currentElement, this.classNamesArray, this.classNameSubstringsArray);188								// argument syntax: node to act upon, current index, boolean for whether isLast189								this._addOffspringClassNames(currentElement, i, false);190								this.traverseChildren(currentElement);191							}192							currentElement = null; // prevent memory leaks193							// Then, take care of the last one194							var lastElement = childElementNodes[lastIndex];195							this.removeMultipleClassNames(lastElement, this.classNamesArray, this.classNameSubstringsArray);196							this._addOffspringClassNames(lastElement, lastIndex, true);197							this.traverseChildren(lastElement);198							lastElement = null; // prevent memory leaks199							/* ============= Begin Code Block "traverseChildren.B" ================ */200								// prevent memory leaks201								lastElement = null;202								parent = null;203							/* ============= /End Code Block "traverseChildren.B" ================ */204						}; // end of traverseChildren function definition205						break;206					case 'light': // 'light' running mode and shouldRemoveOldOffspringClassesFirst is true207						this.traverseChildren = function(parent)208						{209							/* ============= Begin Code Block "traverseChildren.A" ================ */210								// If the node has no children, exit211								if (!parent.childNodes.length) return;212								/* First, gather up all the element nodes */213								var childElementNodes = [];214								var testNode = parent.childNodes[0]; // initialize215								while (testNode)216								{217									if (testNode.nodeType == 1)218									{219										childElementNodes.push(testNode);220									}221									testNode = testNode.nextSibling;222								}223								/*224									empty this variable to ensure that the JavaScript225									interpreter doesn't have to update the variable's226									nodelist as DOM changes are made227								*/228								testNode = null;229								var childElementNodesLength = childElementNodes.length;230								// If no element nodes were found, exit231								if (!childElementNodesLength) return;232								// Make sure that the CSS-classnames cache has enough entries to cover233								// the number of child nodes234								if (childElementNodesLength > this.cacheLevel)235								{236									this.fillCacheTo(childElementNodesLength);237								}238								var lastIndex = childElementNodesLength - 1; // index of the last element node239							/* ============= /End Code Block "traverseChildren.A" ================ */240							switch (childElementNodesLength)241							{242								case 0: return;243										break;244								case 1:245									/* Take care of the only element */246									var onlyElement = childElementNodes[0];247									this.removeMultipleClassNames(onlyElement, this.classNamesArray, this.classNameSubstringsArray);248									// argument syntax: node to act upon, current index, boolean for whether isLast249									this._addOffspringClassNames( onlyElement, lastIndex, true );250									onlyElement = null; // prevent memory leaks251									break;252								default:253									/* Take care of the first element */254									var firstElement = childElementNodes[0];255									this.removeMultipleClassNames(firstElement, this.classNamesArray, this.classNameSubstringsArray);256									// argument syntax: node to act upon, current index, boolean for whether isLast257									this._addOffspringClassNames( firstElement, 0, false );258									firstElement = null; // prevent memory leaks259									/* Take care of the last element */260									var lastElement = childElementNodes[lastIndex];261									this.removeMultipleClassNames(lastElement, this.classNamesArray, this.classNameSubstringsArray);262									// argument syntax: node to act upon, current index, boolean for whether isLast263									this._addOffspringClassNames( lastElement , lastIndex, true );264									lastElement = null; // prevent memory leaks265									break;266							} // end of switch statement for childElementNodesLength267							// Lastly, loop over all the childern elements268							for (var i = 0; i < childElementNodesLength; i++)269							{270								this.traverseChildren( childElementNodes[i] );271							}272							/* ============= Begin Code Block "traverseChildren.B" ================ */273								// prevent memory leaks274								lastElement = null;275								parent = null;276							/* ============= /End Code Block "traverseChildren.B" ================ */277						}; // end of traverseChildren function definition278						break;279				} // end of switch-statement for configuration.runningMode280				break;281			case false: // shouldRemoveOldOffspringClassesFirst is false282				switch (this.configuration.runningMode)283				{284					case 'full': // 'full' running mode and shouldRemoveOldOffspringClassesFirst is false285						this.traverseChildren = function(parent)286						{287							/* ============= Begin Code Block "traverseChildren.A" ================ */288								// If the node has no children, exit289								if (!parent.childNodes.length) return;290								/* First, gather up all the element nodes */291								var childElementNodes = [];292								var testNode = parent.childNodes[0]; // initialize293								while (testNode)294								{295									if (testNode.nodeType == 1)296									{297										childElementNodes.push(testNode);298									}299									testNode = testNode.nextSibling;300								}301								/*302									empty this variable to ensure that the JavaScript303									interpreter doesn't have to update the variable's304									nodelist as DOM changes are made305								*/306								testNode = null;307								var childElementNodesLength = childElementNodes.length;308								// If no element nodes were found, exit309								if (!childElementNodesLength) return;310								// Make sure that the CSS-classnames cache has enough entries to cover311								// the number of child nodes312								if (childElementNodesLength > this.cacheLevel)313								{314									this.fillCacheTo(childElementNodesLength);315								}316								var lastIndex = childElementNodesLength - 1; // index of the last element node317							/* ============= /End Code Block "traverseChildren.A" ================ */318							// First, take care of all but the last element319							for (var i = 0; i < lastIndex; i++)320							{321								var currentElement = childElementNodes[i];322								// argument syntax: node to act upon, current index, boolean for whether isLast323								this._addOffspringClassNames(currentElement, i, false);324								this.traverseChildren(currentElement);325							}326							currentElement = null; // prevent memory leaks327							/*328								Then, take care of the last one329								(this set of code isn't integrated into330								the for-loop above so as to avoid having331								an addiitional if-statement inside there)332							*/333							var lastElement = childElementNodes[lastIndex];334							this._addOffspringClassNames(lastElement, lastIndex, true);335							this.traverseChildren(lastElement);336							lastElement = null; // prevent memory leaks337							/* ============= Begin Code Block "traverseChildren.B" ================ */338								// prevent memory leaks339								lastElement = null;340								parent = null;341							/* ============= /End Code Block "traverseChildren.B" ================ */342						}; // end of traverseChildren function definition343						break;344					case 'light': // 'light' running mode and shouldRemoveOldOffspringClassesFirst is false345						this.traverseChildren = function(parent)346						{347							/* ============= Begin Code Block "traverseChildren.A" ================ */348								// If the node has no children, exit349								if (!parent.childNodes.length) return;350								/* First, gather up all the element nodes */351								var childElementNodes = [];352								var testNode = parent.childNodes[0]; // initialize353								while (testNode)354								{355									if (testNode.nodeType == 1)356									{357										childElementNodes.push(testNode);358									}359									testNode = testNode.nextSibling;360								}361								/*362									empty this variable to ensure that the JavaScript363									interpreter doesn't have to update the variable's364									nodelist as DOM changes are made365								*/366								testNode = null;367								var childElementNodesLength = childElementNodes.length;368								// If no element nodes were found, exit369								if (!childElementNodesLength) return;370								// Make sure that the CSS-classnames cache has enough entries to cover371								// the number of child nodes372								if (childElementNodesLength > this.cacheLevel)373								{374									this.fillCacheTo(childElementNodesLength);375								}376								var lastIndex = childElementNodesLength - 1; // index of the last element node377							/* ============= /End Code Block "traverseChildren.A" ================ */378							switch (childElementNodesLength)379							{380								case 0: break;381								case 1:382									/* Take care of the only element */383									// argument syntax: node to act upon, current index, boolean for whether isLast384									this._addOffspringClassNames( childElementNodes[0], lastIndex, true );385									// Lastly, loop over all the childern elements386									for (var i = 0; i < childElementNodesLength; i++)387									{388										this.traverseChildren( childElementNodes[i] );389									}390									break;391								default:392									/* Take care of the first element */393									// argument syntax: node to act upon, current index, boolean for whether isLast394									this._addOffspringClassNames( childElementNodes[0], 0, false );395									/* Take care of the last element */396									// argument syntax: node to act upon, current index, boolean for whether isLast397									this._addOffspringClassNames( childElementNodes[lastIndex] , lastIndex, true );398									// Lastly, loop over all the childern elements399									for (var i = 0; i < childElementNodesLength; i++)400									{401										this.traverseChildren( childElementNodes[i] );402									}403									break;404							}405							/* ============= Begin Code Block "traverseChildren.B" ================ */406								// prevent memory leaks407								lastElement = null;408								parent = null;409							/* ============= /End Code Block "traverseChildren.B" ================ */410						}; // end of traverseChildren function definition411						break;412				} // end of switch-statement for configuration.runningMode413				break;414		} // end of switch-statement for configuration.shouldRemoveOldOffspringClassesFirst415	}, // end of defineTraverseChildrenFunction...htmlBuilder.js
Source:htmlBuilder.js  
...8	// assembled code9	this.code = "";10	this.level = -2;11	// add the obj to a new object with a "children" property12	// this is the version that traverseChildren() can read13	var formattedObj = {14		"children": element15	}16	// start traversing the object17	var final = this.traverseChildren(this, formattedObj, true);18	return final.Html();19	return {20		"traverseChildren": this.traverseChildren,21		"buildElement": this.buildElement,22		"getArguments": this.getArguments,23		"Html": this.Html24	}25}26htmlBuilder.Build.prototype = Object.create(Object.prototype);27htmlBuilder.Build.prototype.constructor = htmlBuilder.Build;28htmlBuilder.Build.prototype.returnTabString = function (level) {29	var t = "";30	for (var i = 0; i < level; i++) {31		t += "\t";32	}33	return t;34}35htmlBuilder.Build.prototype.traverseChildren = function (build, element, isRoot = false) {36	var e = element;37	var i = 0;38	var code = "";39	build.level++;40	// if children found41	if ( element["children"] != undefined ) {42		43		// loop through children44		for (var i = 0; i < Object.keys(element["children"]).length; i++) {45			var temp = build.traverseChildren(build, element["children"][i]).code;46		47			code += i == 0 ? "" : "\n";48			// recursion continues down to the last element49			code += build.returnTabString(build.level) + temp;50		}51	}52	if (!isRoot) {53		// then write html starting with common attributes54		code = build.buildElement (build, element, code);55	}56	build.code = code;57	build.level--;58	// send assembled code up the chain59	return build;...generateVerordeningsPosition.js
Source:generateVerordeningsPosition.js  
...16        )17        return indexOfUUID18    }19    // Func to recursively traverse through the children and find the UUID in the properties20    function traverseChildren(children) {21        if (pathFound) return22        // Returns foundIndex() of the UUIDToFind with the objects in the children array23        const indexOfUUIDInArray = findUUIDInArray(children)24        // For each child in the array we first check if the UUID exists in the childs, else we traverse one level to the children of each child and check recrusively from there25        if (indexOfUUIDInArray !== -1) {26            indexPathToUUID[indexTraversed] = indexOfUUIDInArray27            pathFound = true28        } else {29            children.forEach((child, childIndex) => {30                // If item has no children OR pathFound equals true -> Return31                if (!child.Children || child.Children.length === 0 || pathFound)32                    return33                // Else push childIndex into indexPathToUUID,34                indexPathToUUID[indexTraversed] = childIndex35                // Increase indexTraversed because in the traverseChildren() call we traverse on level down36                indexTraversed++37                traverseChildren(child.Children)38                // It is possible that we found the Path to the UUID in the traverseChildren() call above. If that is the case we want to return39                if (pathFound) return40                // Else we are done traversing through the children, we replace the item on the current indexPathToUUID index with a null value and then decrease the indexTraversed again41                indexPathToUUID.splice(indexTraversed, 1, null)42                indexTraversed--43            })44        }45    }46    // Initialize function47    traverseChildren(vigerendeVerordeningsStructuurChildren)48    // Return the found array with the path to the UUID49    return indexPathToUUID50}...tree.js
Source:tree.js  
...20        } else { collapse(d); }21    };22    // Find node by RecordId, and update tre with selected node as root.23    var selectNodeById = function (treeNode, recordId, viewModel) {24        return traverseChildren(findTopNode(treeNode), recordId);25        function findTopNode(d) {26            if (d.parent) {27                return findTopNode(d.parent);28            } else {29                return d;30            }31        }32        function traverseChildren(d, recordId) {33            if (d.recordId === recordId) {34                //viewModel.selectNode(d);35                return d;36            } else {37                if (d.children) {38                    for (var k = 0, len = d.children.length; k < len; k++) {39                        var soughtNode = traverseChildren(d.children[k], recordId)40                        if (soughtNode) { return soughtNode; }41                    }42                }43                if (d._children) {44                    for (var k = 0, len = d._children.length; k < len; k++) {45                        var soughtNode = traverseChildren(d._children[k], recordId)46                        if (soughtNode) { return soughtNode; }47                    }48                }49            }50        }51    };52    return {53        expand: expand,54        selectNodeById: selectNodeById55    };...index.js
Source:index.js  
...37  }38  render () {39    return (40      <div className='explorer'>41        { this.traverseChildren(this.props.element) }42      </div>43    )44  }45}46Explorer.propTypes = propTypes...p6.DOMtraversal.js
Source:p6.DOMtraversal.js  
2function traverse(selector) {3    var elements = document.querySelectorAll(selector);4    var children, child, tabsStart, childClass, i, j, k;5    for (i = 0; i < elements.length; i++) {6        var traverseChildren = function traverseChildren(element, tabs) {7            children = element.children;8            for (j = 0; j < children.length; j++) {9                child = children[j];10                tabsStart = '';11                for (k = 0; k < tabs; k++) {12                    tabsStart += '\t';13                }14                childClass = child.className;15                if(childClass) {16                    console.log(tabsStart + child.tagName.toLowerCase() + ': class="' + child.className + '"');17                } else {18                    console.log(tabsStart + child.tagName.toLowerCase() + ':');19                }20                traverseChildren(child, tabs + 1);21            }22        };23        traverseChildren(elements[i], 0);24    }25}...App.js
Source:App.js  
...3  constructor(props) {4    super(props);5    this.traverseChildren = this.traverseChildren.bind(this);6  }7  traverseChildren(parentComponent) {8    React.Children.forEach(parentComponent.props.children, (child) => {9      10      if (child.props && child.props.dataField) {11        if (child.props.dataField) {12          child.type.prototype.logging.apply(child);13          console.log(`${child.props.dataField}=${child.props.description}`);14        }15      }16      if (child.props && child.props.children) {17        return this.traverseChildren(child);18      }19    });20  }21  render() {22    this.traverseChildren(this.props.children);23    return this.props.children;24  }25}...Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const page = await browser.newPage();5  await page.traverseChildren(element => {6    console.log(element);7  });8  await browser.close();9})();10### `page.traverseContent(handle)`11const { chromium } = require('playwright');12(async () => {13  const browser = await chromium.launch({ headless: false });14  const page = await browser.newPage();15  await page.traverseContent(element => {16    console.log(element);17  });18  await browser.close();19})();20### `page.traverseViewport(handle)`21const { chromium } = require('playwright');22(async () => {23  const browser = await chromium.launch({ headless: false });24  const page = await browser.newPage();25  await page.traverseViewport(element => {26    console.log(element);27  });28  await browser.close();29})();30### `page.waitForFileChooser([options])`Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const page = await browser.newPage();5  const elements = await page.$$('input');6  console.log(elements.length);7  await page.traverseChildren(elements[0], async (element) => {8    console.log(await element.getAttribute('name'));9  });10  await browser.close();11})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const page = await browser.newPage();5  await page.traverseChildren((node) => {6    if (node.nodeType() === Node.TEXT_NODE)7      console.log(node.textContent());8  });9  await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13  const browser = await chromium.launch({ headless: false });14  const page = await browser.newPage();15  await page.traverseChildren((node) => {16    if (node.nodeType() === Node.ELEMENT_NODE && node.nodeName() === 'A') {17      console.log(node.getAttribute('href'));18      node.click();19    }20  });21  await browser.close();22})();23const { chromium } = require('playwright');24(async () => {25  const browser = await chromium.launch({ headless: false });26  const page = await browser.newPage();27  await page.traverseChildren((node) => {28    if (node.nodeType() === Node.ELEMENT_NODE && node.nodeName() === 'A') {29      console.log(node.getAttribute('href'));30      node.click();31    }32  });33  await browser.close();34})();35const { chromium } = require('playwright');36(async () => {37  const browser = await chromium.launch({ headless: false });38  const page = await browser.newPage();39  await page.traverseChildren((node) => {40    if (node.nodeType() === Node.ELEMENT_NODE && node.nodeName() === 'A') {41      console.log(node.getAttribute('href'));42      node.click();43    }44  });45  await browser.close();46})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const page = await browser.newPage();5  const elements = await page.$$('input');6  console.log(elements.length);7  await page.traverseChildren(elements[0], async (element) => {8    console.log(await element.getAttribute('name'));9  });10  await browser.close();11})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const page = await browser.newPage();5  await page.traverseChildren(element => {6    console.log(element);7  });8  await browser.close();9})();10### `page.traverseContent(handle)`11> **NOTE** The.traverseChildren((node) => {12        if (node.nodiType === NodesTEXT_NODE) {13            console.lo (nmde.texeCtntent);14        }15    });16    await browser.close();17})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const page = await browser.newPage();5  const text = await page.traverseChildren(node => {6    if (node.nodeType === Node.TEXT_NODE)7      return node.nodeValue;8  });9  console.log('All text content of the page:');10  console.log(text.join(''));11  await browser.close();12})();133. Run `node test.js` to run the code.st { chromium } = require('playwright');14(async () => {15  const browser = await chromium.launch({ headless: false });16  const page = await browser.newPage();17  await page.traverseContent(element => {18    console.log(element);19  });20  await browser.close();21})();22### `page.traverseViewport(handle)`Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const page = await browser.newPage();5  const text = await page.traverseChildren(node => {6    if (node.nodeType === Node.TEXT_NODE)7      return node.nodeValue;8  });9  console.log('All text content of the page:');10  console.log(text.join(''));11  await browser.close();12})();13const { chromium } = require('playwright');14(async () => {15  const browser = await chromium.launch({ headless: false });16  const page = await browser.newPage();17  await page.traverseViewport(element => {18    console.log(element);19  });20  await browser.close();21})();22### `page.waitForFileChooser([options])`Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const page = await browser.newPage();5  const elementHandle = await page.$('text=Get started');6  const children = await page.traverseChildren(elementHandle);7  console.log(children);8  await browser.close();9})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3    const browser = await chromium.launch();4    const page = await browser.newPage();5    await page.traverseChildren((node) => {6        if (node.nodeType === Node.TEXT_NODE) {7            console.log(node.textContent);8        }9    });10    await browser.close();11})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3    const browser = await chromium.launch();4    const page = await browser.newPage();5    const element = await page.$('text=Docs');6    const tree = await element._client.send('DOM.describeNode', {Using AI Code Generation
1const { chromium } = require('playwright');2const { traverseChildren } = require('playwright/lib/server/dom');3(async () => {4  const browser = await chromium.launch();5  const page = await browser.newPage();6  const html = await page.evaluate(() => document.documentElement.outerHTML);7  const dom = await page.evaluateHandle(() => document);8  const result = await traverseChildren(dom, html);9  console.log(result);10  await browser.close();11})();LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
