Best JavaScript code snippet using wpt
RizeBlockly.js
Source:RizeBlockly.js
1// *************** Functions used to manage Google Blockly and programming environment ************************2// Main project variables ----------- Do not change3var rize_robot = "Pepper"4var current_type = ""5var block_name = ""6var list_robots = [] // List of robots from RIZE Robots7var items_robots = [] // List of robots from RIZE Robots8var avaliable_primitives = [] // It have all the info and options of primitives for form generation9var module_name = "" // Very important variable for code generation10var current_project_defined = false; // Used to see if some project is defined11// Robot configuration12var json_robot = {}13var robot_ip = ""14var robot_port = "9559"15// BT Global variables 16var runModuleTimer = "";17var btRun = {};18var input_behaviors = { "options": [["option", "OPTIONNAME"]] }19var reactions_list_paths = []20var goals_list_paths = []21var reactions_bt_list = []22var goals_bt_list = []23var reactions_bt_json = {}24var goals_bt_json = {}25var active_reactions = []26var active_goals = []27var cancel_goals = []28var return_bt = {}29var idle_behavior = {}30var current_reaction = {}31var current_goal = {}32// Save list and name of avaliable goals and reactions33var list_goals = [];34var names_goals = [];35var list_reactions = [];36var names_reactions = [];37// Where Javascript functions will be saved to build the program38var main_program = ""39// Variables used for Google Blockly40var module_name = ""41var project_type = ""42var current_primitive = ""43// Images 44var configuration_image = "images/edit.png"45var play_edit = "images/edit.png"46var play_image = "images/play.png"47// Robots 48// Not used49var input_robots = { "options": [["pepper", "pepper"]] }50// -- Blockly variables -- 51var blocklyArea = document.getElementById('blocklyArea');52var blocklyDiv = document.getElementById('blocklyDiv');53var WORKSPACE = Blockly.inject('blocklyDiv', options);54WORKSPACE.addChangeListener(blockEvent);55// -- Project --56var current_project_defined = false57var project_name = ""58var temp_project_name = ""59var current_module = "blocks"60var list_projects = []61var json_list = {}62// Enable to adapt blockly space to the screen and windows size63var onResizeBlockly = function (e) {64 // Get absolute coordinates and dimensions of blocklyArea.65 var element = blocklyArea;66 var x = 0;67 var y = 0;68 do {69 x += element.offsetLeft;70 y += element.offsetTop;71 element = element.offsetParent;72 } while (element);73 // Position blocklyDiv over blocklyArea.74 blocklyDiv.style.left = x + 'px';75 blocklyDiv.style.top = 120 + 'px';76 blocklyDiv.style.width = blocklyArea.offsetWidth + 'px';77 let scream_h = window.innerHeight - 20078 if (scream_h < 200) {79 scream_h = 20080 }81 blocklyDiv.style.height = scream_h + 'px';82 console.log()83};84// ================================= Events ========================================85// Resize blockly area in base the initial windows size and if this changes86document.getElementById("blocklyArea").style.marginRight = "0px"87onResizeBlockly();88Blockly.svgResize(WORKSPACE);89window.addEventListener("resize", function () {90 onResizeBlockly();91 Blockly.svgResize(WORKSPACE);92});93function blockEvent(masterEvent) {94 AppVue.blockEvent(masterEvent)95}96// Enable user to select a moudule using a form interface97var edit_module = function () {98 let words = JSON.parse(JSON.stringify(AppVue.rizeModules))99 let list_modules = [];100 words.forEach(function (element) {101 if (element["name"] === AppVue.block_name) {102 console.log(element["name"] + " not added")103 }104 else {105 console.log()106 list_modules.push(element["name"])107 }108 });109 AppVue.items_modules = list_modules;110 console.log(AppVue.items_modules)111 AppVue.dialog_modules = true;112}113// Enable user to select a pattern using a form interface114var edit_pattern = function () {115 let words = JSON.parse(JSON.stringify(AppVue.rizePatterns))116 let list_patterns = [];117 words.forEach(function (element) {118 if (element["name"] === AppVue.block_name) {119 console.log(element["name"] + " not added")120 }121 else {122 console.log()123 list_patterns.push(element["name"])124 }125 });126 AppVue.items_patterns = list_patterns;127 console.log(AppVue.items_patterns)128 AppVue.dialog_patterns = true;129}130// Used for debbug/execute an action131var play_event = function () {132 // Delete all dont needed code133 let next_blocks = block_selected.getNextBlock();134 let full_code_block = Blockly.Python.blockToCode(block_selected);135 let code = "";136 try {137 code_to_delete = Blockly.Python.blockToCode(next_blocks);138 code = full_code_block.replace(code_to_delete, '')139 }140 catch (err) {141 console.log("block is alone")142 }143 // See the code in the console (for example the Chorme console)144 json_list = code.split("#..#");145 var action = json_list[0]146 console.log("Play event")147 let json_val = JSON.parse(action)148 console.log(json_val)149 onRunAction(json_val)150}151// Used to set parameters of primitives152var edit_primitive = function () {153 try {154 AppVue.model_options = {} // Reset options155 AppVue.model_mainInput = block_selected.getFieldValue("inp_1") // Get input one156 var options = block_selected.getFieldValue("inp_2"); // Get input two157 var options2fill = JSON.parse(options) // Convert option 2 two JSON158 AppVue.model_options = options2fill // Fill form159 }160 catch161 {162 var primitive_default_values = JSON.parse(JSON.stringify(AppVue.current_primitive.options))163 console.log(primitive_default_values)164 for (var key_e in primitive_default_values) {165 if (primitive_default_values[key_e] === "bool") { primitive_default_values[key_e] = false }166 if (primitive_default_values[key_e] === "number") { primitive_default_values[key_e] = 0 }167 if (primitive_default_values[key_e] === "int") { primitive_default_values[key_e] = 0 }168 if (primitive_default_values[key_e] === "percentage") { primitive_default_values[key_e] = 50 }169 if (primitive_default_values[key_e] === "volume") { primitive_default_values[key_e] = 50 }170 if (primitive_default_values[key_e] === "degrees") { primitive_default_values[key_e] = 1 }171 if (primitive_default_values[key_e] === "meters") { primitive_default_values[key_e] = 0.1 }172 if (primitive_default_values[key_e] === "hours") { primitive_default_values[key_e] = 12 }173 if (primitive_default_values[key_e] === "seconds") { primitive_default_values[key_e] = 5 }174 AppVue.model_options = primitive_default_values175 }176 AppVue.model_options177 console.log(block_selected.getFieldValue("inp_1"))178 console.log(block_selected.getFieldValue("inp_2"))179 }180 // Open dialog181 AppVue.dialog_primitives = true;182}183// of functions used for manage Google Blockly184var rizeBlockly = {185 // ----------- Set current block_name when created in WOKKSPACE -------------------186 onCreate: function (json) {187 block_selected = WORKSPACE.getBlockById(json["blockId"]) // Select block json from id188 let type_selected = block_selected.type189 if (type_selected == "reaction" || type_selected == "goal" || type_selected == "goal_advanced" || type_selected == "module" || type_selected == "behavior") {190 block_selected.setFieldValue(AppVue.block_name, "module_name")191 }192 },193 // ---------------------- Set default options --------------------------194 formatOptions: function (options_dic) {195 if (options_dic == "edit") { options_dic = "{}" }196 if (options_dic == "") { options_dic = "{}" }197 return options_dic198 },199 // ------------------------onXML2Workspace --------------------------200 // Description: Clear the workspace and add the blocks from an XML file201 onXML2Workspace: function (path) {202 $.ajax({203 'url': path,204 'dataType': 'text',205 'cache': false,206 'success': function (xml) {207 xml = Blockly.Xml.textToDom(xml);208 WORKSPACE.clear();209 Blockly.Xml.domToWorkspace(xml, WORKSPACE);210 WORKSPACE.clearUndo();211 WORKSPACE.undo(false);212 WORKSPACE.undo(true);213 },214 'error': function (XMLHttpRequest, textStatus, errorThrown) {215 if (project_type == "reaction") {216 Blockly.Xml.domToWorkspace(xml_reaction, WORKSPACE);217 }218 }219 });220 },221 // ------------------------onBuildGoals --------------------------222 // Build BTs of Goals223 onBuildGoals: function () {224 let source_code = ""225 var source = Blockly.Python.workspaceToCode(WORKSPACE);226 var json_list = source.split("#...#")227 json_list.forEach(function (element) {228 try {229 json_element = JSON.parse(element)230 string_data = JSON.stringify(json_element["data"], null, 4)231 source_code = source_code + json_element["name"] + " : " + "function() { return " + string_data + "}, \n";232 w_modules.forEach(function (values) {233 let string_val = '"' + values + '"';234 let string_val_ident = '" ' + values + '"';235 source_code = source_code.replace(string_val_ident, values);236 source_code = source_code.replace(string_val, values);237 });238 }239 catch (err) {240 console.log("error building goal")241 }242 });243 source_code = "var " + project_name + " = " + "{" + source_code + "}"244 source_goals = source_code;245 return source_code;246 },247 // ------------------------onBuildReactions --------------------------248 // Build BTs of Reactions249 onBuildReactions: function () {250 let source_code = ""251 var source = Blockly.Python.workspaceToCode(WORKSPACE_reactions);252 var json_list = source.split("#...#")253 json_list.forEach(function (element) {254 try {255 json_element = JSON.parse(element)256 string_data = JSON.stringify(json_element["data"], null, 4)257 source_code = source_code + json_element["name"] + " : " + "function() { return " + string_data + "}, \n"258 }259 catch (err) {260 console.log("error building reaction")261 }262 });263 source_code = "var " + project_name + " = " + "{" + source_code + "}";264 source_reactions = source_code;265 return source_code;266 },267 // ------------------------ onwWorkspacToJavascriptFunctions --------------------------268 // Build JS files269 onwWorkspacToJavascriptFunctions: function (workspace) {270 // Save goals271 let source_code = "";272 let source = Blockly.Python.workspaceToCode(workspace);273 var json_list = source.split("#...#");274 json_list.forEach(function (element) {275 if (element == "") {276 console.log("No elements")277 }278 else {279 json_element = JSON.parse(element)280 string_data = JSON.stringify(json_element["data"], null, 4)281 source_code = source_code + json_element["name"] + " : " + "function() { return " + string_data + "}, \n"282 }283 });284 return source_code285 },286 // --------------------- Replace all ocurrences of a string ------------------------287 escapeRegExp: function (str) {288 return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string289 },290 replaceAll: function (str, find, replace) {291 return str.replace(new RegExp(rizeBlockly.escapeRegExp(find), 'g'), replace);292 },293 realoadCache: function (str) {294 location.reload(true)295 },296 // ----------------- Interface commands -------------------------297 onStopBehaviorsRobot: function () {298 let robot_type = document.getElementById("type_robot").value;299 let robot_name = document.getElementById("name_robot").value;300 primitives = JSON.stringify({301 "primitive": "stop_behavior",302 "input": "none",303 "options": {}304 })305 let action = nepki.action(primitives, robot_name)306 console.log(action)307 rizeBlockly.onRunActionCode(JSON.stringify(action))308 },309 onStopAutonomusRobot: function () {310 let robot_type = document.getElementById("type_robot").value;311 let robot_name = document.getElementById("name_robot").value;312 primitives = JSON.stringify({313 "primitive": "stop_autonomus",314 "input": "none",315 "options": {}316 })317 let action = nepki.action(primitives, robot_name)318 rizeBlockly.onRunActionCode(JSON.stringify(action))319 },320 onWakeUpRobot: function () {321 let robot_type = document.getElementById("type_robot").value;322 let robot_name = document.getElementById("name_robot").value;323 primitives = JSON.stringify({324 "primitive": "wake_up",325 "input": "none",326 "options": {}327 })328 let action = nepki.action(primitives, robot_name)329 rizeBlockly.onRunActionCode(JSON.stringify(action))330 },331 onRestRobot: function () {332 let robot_type = document.getElementById("type_robot").value;333 let robot_name = document.getElementById("name_robot").value;334 primitives = JSON.stringify({335 "primitive": "rest",336 "input": "none",337 "options": {}338 })339 let action = nepki.action(primitives, robot_name)340 rizeBlockly.onRunActionCode(JSON.stringify(action))341 },...
firestore_functions.js
Source:firestore_functions.js
1import "../firebase_initialization.js"2import { getAuth, onAuthStateChanged } from "https://www.gstatic.com/firebasejs/9.6.10/firebase-auth.js";3import { getFirestore, collection, doc, getDoc, getDocs, query, orderBy, limit } from "https://www.gstatic.com/firebasejs/9.6.10/firebase-firestore.js"4const auth = getAuth();5const db = getFirestore();6let roomId = null;7let opId = null;8let opName = null;9let chatList = {};10let keywordList = {};11let speechList = {};12let emotionRateList = {};13async function init_ff(rid = null) {14 // rid = '40BpClNoboXdj8WnhJso'; //15 console.log("roomId : " + rid);16 if (rid == null) {17 rid = '40BpClNoboXdj8WnhJso';18 }19 onAuthStateChanged(auth, (user) => {20 console.log("auth");21 setTimeout(() => {22 roomId = rid;23 //const user = auth.currentUser;24 const uid = user.uid;25 const chatCol = collection(db, "chats");26 const chatRef = doc(chatCol, roomId);27 getDoc(chatRef).then(async (snapshot) => {28 if (snapshot.exists()) {29 const val = snapshot.data();30 const caller = val.caller;31 const callee = val.callee;32 if (uid == caller) {33 opId = callee;34 } else {35 opId = caller;36 }37 opId = 'HFzzpL21GSReUX7Zuy08EkpHR4Z2';38 // get name of opponent39 console.log(opId);40 const userCol = collection(db, "users");41 const opRef = doc(userCol, opId);42 console.log("opId : " + opId);43 getDoc(opRef).then((snapshot_userInfo) => {44 if (snapshot_userInfo.exists()) {45 const val_userInfo = snapshot_userInfo.data();46 opName = val_userInfo.name;47 }48 });49 // get chat_logs list of opponent50 const opChatLogsCol = collection(opRef, "chat_logs")51 const opChatLogsRefs = await getDocs(opChatLogsCol);52 var size = opChatLogsRefs.size;53 for (var r = size - 4; r < size - 1; r++) {54 var d = opChatLogsRefs.docs[r];55 const val_chatLogs = d.data();56 chatList[d.id] = val_chatLogs.roomID;57 let t_list = {};58 // var k = await getKeyword(doc(opChatLogsCol, d.id), "Normal");59 // console.log(k);60 t_list["Bad"] = await getKeyword(doc(opChatLogsCol, d.id), "Bad");61 t_list["Sad"] = await getKeyword(doc(opChatLogsCol, d.id), "Sad");62 t_list["Good"] = await getKeyword(doc(opChatLogsCol, d.id), "Good");63 t_list["Normal"] = await getKeyword(doc(opChatLogsCol, d.id), "Normal");64 keywordList[d.id] = t_list;65 }66 var t = getKeywordHistory();67 console.log(t);68 //console.log(keywordList);69 async function getKeyword(d, emt) {70 let col = null;71 if (emt == "Bad") {72 col = collection(d, "Bad");73 }74 else if (emt == "Sad") {75 col = collection(d, "Sad");76 }77 else if (emt == "Good") {78 col = collection(d, "Good");79 }80 else {81 col = collection(d, "Normal");82 }83 const q = query(col, orderBy("count", "desc"), limit(1));84 const querySnapshot = await getDocs(q);85 if (querySnapshot.size == 0) {86 return null;87 }88 var dt = querySnapshot.docs[0].data();89 return dt;90 }91 }92 });93 }, 4000);94 });95}96// íì¬ ë£¸ ID97function getCurrentRoomId() {98 return roomId;99}100// ìëë°© UID101function getOpponentId() {102 return opId;103}104// ìëë°© ì´ë¦105function getOpponentName() {106 return opName;107}108// ìëë°© ì±í
ê¸°ë¡ ê°ì ¸ì¤ê¸°109function getChatLogs() {110 let logs = []111 opChatLogsRefs.forEach((doc) => {112 logs.push(doc.id);113 });114 return logs;115}116function getKeywordHistory() {117 return keywordList;118}119function getFrequentKeyword() {120 var t_list = {};121 var max = 0;122 for (var key in keywordList) {123 if (keywordList[key] != null) {124 for (var key_e in keywordList[key]) {125 if (keywordList[key][key_e] != null) {126 var txt = keywordList[key][key_e].text;127 if (t_list[txt] == null) {128 t_list[txt] = Number(keywordList[key][key_e].count);129 if (t_list[txt] > max) {130 max = t_list[txt];131 }132 }133 else {134 t_list[txt] += Number(keywordList[key][key_e].count);135 if (t_list[txt] > max) {136 max = t_list[txt];137 }138 }139 }140 }141 }142 }143 var max_list = {};144 for (var key in t_list) {145 if (t_list[key] >= 2) {146 max_list[key] = t_list[key];147 }148 }149 var t = Object.keys(max_list)[Math.floor(Math.random() * Object.keys(max_list).length)];150 return t;151}152function getFrequentType() {153 var keyType = keywordList;154 // sports, food, location, animal155 var t_list = [0, 0, 0, 0];156 for (var key in keyType) {157 if (keywordList[key] != null) {158 for (var key_e in keywordList[key]) {159 if (keywordList[key][key_e] != null) {160 var type = keywordList[key][key_e].type;161 var count = keywordList[key][key_e].count;162 if (type == 'CV_SPORTS') {163 t_list[0] += count;164 }165 else if (type == 'CV_FOOD') {166 t_list[1] += count;167 }168 else if (type.substr(0, 2) == 'LC') {169 t_list[2] += count;170 }171 else {172 t_list[3] += count;173 }174 }175 }176 }177 }178 var m = t_list.indexOf(Math.max(t_list));179 if (m == 0) {180 return "ì¤í¬ì¸ ";181 }182 else if (m == 1) {183 return "ìì";184 }185 else if (m == 2) {186 return "ì¬í";187 }188 else {189 return "ë물";190 }191}192function getGoodKeyword() {193 var t_list = []194 for (var key in keywordList) {195 if (keywordList[key] != null) {196 if (keywordList[key]['Good'] != null) {197 t_list.push(keywordList[key]['Good'].text);198 }199 }200 }201 var ret = t_list[Math.floor(Math.random() * t_list.length)];202 return ret;203}204function getBadKeyword() {205 var t_list = []206 for (var key in keywordList) {207 if (keywordList[key] != null) {208 if (keywordList[key]['Bad'] != null) {209 t_list.push(keywordList[key]['Bad'].text);210 }211 }212 }213 var ret = t_list[Math.floor(Math.random() * t_list.length)];214 return ret;215}216function getSadKeyword() {217 var t_list = []218 for (var key in keywordList) {219 if (keywordList[key] != null) {220 if (keywordList[key]['Sad'] != null) {221 t_list.push(keywordList[key]['Sad'].text);222 }223 }224 }225 var ret = t_list[Math.floor(Math.random() * t_list.length)];226 return ret;227}228export {229 init_ff, getKeywordHistory, getFrequentKeyword, getFrequentType, getGoodKeyword, getBadKeyword, getSadKeyword...
local-storage-initial-empty-document.tentative.https.window.js
Source:local-storage-initial-empty-document.tentative.https.window.js
1// META: script=/common/get-host-info.sub.js2// META: script=/common/utils.js3// META: script=/common/dispatcher/dispatcher.js4// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js5// META: script=./resources/common.js6// This test verifies the behavior of the initial empty document nested inside7// anonymous iframes.8//9// The following tree of frames and documents is used:10// A11// âââB (anonymous)12// â âââD (initial empty document)13// âââC (control)14// âââE (initial empty document)15//16// Storage used for D and E must be different.17promise_test(async test => {18 const iframe_B = newAnonymousIframe(origin);19 const iframe_C = newIframe(origin);20 // Create iframe_D and store a value in localStorage.21 const key_D = token();22 const value_D = "value_D";23 const queue_B = token();24 send(iframe_B, `25 const iframe_D = document.createElement("iframe");26 document.body.appendChild(iframe_D);27 iframe_D.contentWindow.localStorage.setItem("${key_D}","${value_D}");28 send("${queue_B}", "Done");29 `);30 // Create iframe_E and store a value in localStorage.31 const key_E = token();32 const value_E = "value_E";33 const queue_C = token();34 send(iframe_C, `35 const iframe_E = document.createElement("iframe");36 document.body.appendChild(iframe_E);37 iframe_E.contentWindow.localStorage.setItem("${key_E}","${value_E}");38 send("${queue_C}", "Done");39 `);40 assert_equals(await receive(queue_B), "Done");41 assert_equals(await receive(queue_C), "Done");42 // Try to load both values from both contexts:43 send(iframe_B, `44 const iframe_D = document.querySelector("iframe");45 const value_D = iframe_D.contentWindow.localStorage.getItem("${key_D}");46 const value_E = iframe_D.contentWindow.localStorage.getItem("${key_E}");47 send("${queue_B}", value_D);48 send("${queue_B}", value_E);49 `);50 send(iframe_C, `51 const iframe_E = document.querySelector("iframe");52 const value_D = iframe_E.contentWindow.localStorage.getItem("${key_D}");53 const value_E = iframe_E.contentWindow.localStorage.getItem("${key_E}");54 send("${queue_C}", value_D);55 send("${queue_C}", value_E);56 `);57 // Verify the anonymous iframe and the normal one do not have access to each58 // other.59 assert_equals(await receive(queue_B), value_D); // key_D60 assert_equals(await receive(queue_B), ""); // key_E61 assert_equals(await receive(queue_C), ""); // key_D62 assert_equals(await receive(queue_C), value_E); // key_E63}, "Local storage is correctly partitioned with regards to anonymous iframe " +...
Using AI Code Generation
1wpt.key_E();2wpt.key_F();3wpt.key_G();4wpt.key_H();5wpt.key_I();6wpt.key_J();7wpt.key_K();8wpt.key_L();9wpt.key_M();10wpt.key_N();11wpt.key_O();12wpt.key_P();13wpt.key_Q();14wpt.key_R();15wpt.key_S();16wpt.key_T();17wpt.key_U();18wpt.key_V();19wpt.key_W();20wpt.key_X();21wpt.key_Y();22wpt.key_Z();
Using AI Code Generation
1var wpt = require('wpt');2var wpt = new wpt('API_KEY');3 console.log(data);4});5var wpt = require('wpt');6var wpt = new wpt('API_KEY');7 console.log(data);8});9var wpt = require('wpt');10var wpt = new wpt('API_KEY');11 console.log(data);12});13var wpt = require('wpt');14var wpt = new wpt('API_KEY');15 console.log(data);16});17var wpt = require('wpt');18var wpt = new wpt('API_KEY');19 console.log(data);20});21var wpt = require('wpt');22var wpt = new wpt('API_KEY');23 console.log(data);24});25var wpt = require('wpt');26var wpt = new wpt('API_KEY');27 console.log(data);28});29var wpt = require('wpt');30var wpt = new wpt('API_KEY');31 console.log(data);32});
Using AI Code Generation
1var wptoolkit = require('wptoolkit');2var wpt = new wptoolkit();3wpt.key_E(function(err, res) {4 if (!err) {5 console.log(res);6 }7 else {8 console.log(err);9 }10});11### key_F()12var wptoolkit = require('wptoolkit');13var wpt = new wptoolkit();14wpt.key_F(function(err, res) {15 if (!err) {16 console.log(res);17 }18 else {19 console.log(err);20 }21});22### key_G()23var wptoolkit = require('wptoolkit');24var wpt = new wptoolkit();25wpt.key_G(function(err, res) {26 if (!err) {27 console.log(res);28 }29 else {30 console.log(err);31 }32});33### key_H()34var wptoolkit = require('wptoolkit');35var wpt = new wptoolkit();36wpt.key_H(function(err, res) {37 if (!err) {38 console.log(res);39 }40 else {41 console.log(err);42 }43});44### key_I()45var wptoolkit = require('wptoolkit');46var wpt = new wptoolkit();47wpt.key_I(function(err, res) {48 if (!err) {49 console.log(res);50 }51 else {52 console.log(err);53 }54});55### key_J()
Using AI Code Generation
1wpt.key_E();2WPT.prototype.key_E = function() {3};4WPT.prototype.key_E = function() {5};6wpt.key_E();7WPT.prototype.key_E = function() {8};9WPT.prototype.key_E = function() {10};11wpt.key_E();12WPT.prototype.key_E = function() {13};14WPT.prototype.key_E = function() {15};16wpt.key_E();17WPT.prototype.key_E = function() {18};19WPT.prototype.key_E = function() {20};21wpt.key_E();22WPT.prototype.key_E = function() {23};24WPT.prototype.key_E = function() {25};26wpt.key_E();
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!!