How to use f1 method in Slash

Best Python code snippet using slash

Traktor-Kontrol-F1-scripts.js

Source:Traktor-Kontrol-F1-scripts.js Github

copy

Full Screen

1//2// Native Instruments Traktor Kontrol F1 HID controller script v0.93// Copyright (C) 2012, Ilkka Tuohela4// For Mixxx version 1.11.x5//6// Native Instruments Traktor Kontrol F1 HID interface specification7function KontrolF1Controller() {8 this.controller = new HIDController();9 // Initialized to firmware version by version response packet10 this.version_major = undefined;11 this.version_minor = undefined;12 this.controller.activeDeck = 1;13 // F1 PAD LEDs are special, it has full RGB control with three bytes,14 // we can't use normal LEDColors directly. Define here some basic15 // colors, allow using full RGB values with script16 this.buttonNames = [17 "sync", "quant", "capture", "shift",18 "reverse", "type", "size", "browse",19 "play_1_1", "play_1_2", "play_2_1", "play_2_2",20 "play_3_1", "play_3_2", "play_4_1", "play_4_2"21 ];22 this.registerInputPackets = function() {23 var packet = undefined;24 packet = new HIDPacket("control", [0x1],22);25 packet.addControl("hid", "grid_8", 1,"I", 0x1);26 packet.addControl("hid", "grid_7", 1,"I", 0x2);27 packet.addControl("hid", "grid_6", 1,"I", 0x4);28 packet.addControl("hid", "grid_5", 1,"I", 0x8);29 packet.addControl("hid", "grid_4", 1,"I", 0x10);30 packet.addControl("hid", "grid_3", 1,"I", 0x20);31 packet.addControl("hid", "grid_2", 1,"I", 0x40);32 packet.addControl("hid", "grid_1", 1,"I", 0x80);33 packet.addControl("hid", "grid_16", 1,"I", 0x100);34 packet.addControl("hid", "grid_15", 1,"I", 0x200);35 packet.addControl("hid", "grid_14", 1,"I", 0x400);36 packet.addControl("hid", "grid_13", 1,"I", 0x800);37 packet.addControl("hid", "grid_12", 1,"I", 0x1000);38 packet.addControl("hid", "grid_11", 1,"I", 0x2000);39 packet.addControl("hid", "grid_10", 1,"I", 0x4000);40 packet.addControl("hid", "grid_9", 1,"I", 0x8000);41 packet.addControl("hid", "shift", 1,"I", 0x800000);42 packet.addControl("hid", "reverse", 1,"I", 0x400000);43 packet.addControl("hid", "size", 1,"I", 0x100000);44 packet.addControl("hid", "type", 1,"I", 0x200000);45 packet.addControl("hid", "select_push", 1,"I", 0x40000);46 packet.addControl("hid", "browse", 1,"I", 0x80000);47 packet.addControl("hid", "play_1", 1,"I", 0x80000000);48 packet.addControl("hid", "play_2", 1,"I", 0x40000000);49 packet.addControl("hid", "play_3", 1,"I", 0x20000000);50 packet.addControl("hid", "play_4", 1,"I", 0x10000000);51 packet.addControl("hid", "sync", 1,"I", 0x8000000);52 packet.addControl("hid", "quant", 1,"I", 0x4000000);53 packet.addControl("hid", "capture", 1,"I", 0x2000000);54 packet.addControl("hid", "select_encoder", 5,"B", undefined,true);55 // Knobs have value range 0-4092, so while some controls are56 // -1..0..1 range, hidparser will return same data as with h57 // packing (16 bit range while we only use 12 bits)58 packet.addControl("hid", "knob_1", 6,"H");59 packet.addControl("hid", "knob_2", 8,"H");60 packet.addControl("hid", "knob_3", 10,"H");61 packet.addControl("hid", "knob_4", 12,"H");62 packet.addControl("hid", "fader_1", 14,"H");63 packet.addControl("hid", "fader_2", 16,"H");64 packet.addControl("hid", "fader_3", 18,"H");65 packet.addControl("hid", "fader_4", 20,"H");66 this.controller.registerInputPacket(packet);67 }68 this.registerOutputPackets = function() {69 var packet = undefined;70 packet = new HIDPacket("lights", [0x80],81);71 // Right 7-segment element - 0x0 off, 0x40 on72 packet.addControl("hid", "right_segment_dp", 1,"B");73 packet.addControl("hid", "right_segment_1", 2,"B");74 packet.addControl("hid", "right_segment_2", 3,"B");75 packet.addControl("hid", "right_segment_3", 4,"B");76 packet.addControl("hid", "right_segment_4", 5,"B");77 packet.addControl("hid", "right_segment_5", 6,"B");78 packet.addControl("hid", "right_segment_6", 7,"B");79 packet.addControl("hid", "right_segment_7", 8,"B");80 // Left 7-segment element - 0x0 off, 0x40 on81 packet.addControl("hid", "left_segment_dp", 9,"B");82 packet.addControl("hid", "left_segment_1", 10,"B");83 packet.addControl("hid", "left_segment_2", 11,"B");84 packet.addControl("hid", "left_segment_3", 12,"B");85 packet.addControl("hid", "left_segment_4", 13,"B");86 packet.addControl("hid", "left_segment_5", 14,"B");87 packet.addControl("hid", "left_segment_6", 15,"B");88 packet.addControl("hid", "left_segment_7", 16,"B");89 // Button led brightness, 0-0xff90 packet.addControl("hid", "browse_brightness", 17,"B");91 packet.addControl("hid", "size_brightness", 18,"B");92 packet.addControl("hid", "type_brightness", 19,"B");93 packet.addControl("hid", "reverse_brightness", 20,"B");94 packet.addControl("hid", "shift_brightness", 21,"B");95 packet.addControl("hid", "capture_brightness", 22,"B");96 packet.addControl("hid", "quant_brightness", 23,"B");97 packet.addControl("hid", "sync_brightness", 24,"B");98 // Pad RGB color button controls, 3 bytes per pad99 packet.addControl("hid", "grid_1_blue", 25,"B")100 packet.addControl("hid", "grid_1_red", 26,"B")101 packet.addControl("hid", "grid_1_green", 27,"B")102 packet.addControl("hid", "grid_2_blue", 28,"B")103 packet.addControl("hid", "grid_2_red", 29,"B")104 packet.addControl("hid", "grid_2_green", 30,"B")105 packet.addControl("hid", "grid_3_blue", 31,"B")106 packet.addControl("hid", "grid_3_red", 32,"B")107 packet.addControl("hid", "grid_3_green", 33,"B")108 packet.addControl("hid", "grid_4_blue", 34,"B")109 packet.addControl("hid", "grid_4_red", 35,"B")110 packet.addControl("hid", "grid_4_green", 36,"B")111 packet.addControl("hid", "grid_5_blue", 37,"B")112 packet.addControl("hid", "grid_5_red", 38,"B")113 packet.addControl("hid", "grid_5_green", 39,"B")114 packet.addControl("hid", "grid_6_blue", 40,"B")115 packet.addControl("hid", "grid_6_red", 41,"B")116 packet.addControl("hid", "grid_6_green", 42,"B")117 packet.addControl("hid", "grid_7_blue", 43,"B")118 packet.addControl("hid", "grid_7_red", 44,"B")119 packet.addControl("hid", "grid_7_green", 45,"B")120 packet.addControl("hid", "grid_8_blue", 46,"B")121 packet.addControl("hid", "grid_8_red", 47,"B")122 packet.addControl("hid", "grid_8_green", 48,"B")123 packet.addControl("hid", "grid_9_blue", 49,"B")124 packet.addControl("hid", "grid_9_red", 50,"B")125 packet.addControl("hid", "grid_9_green", 51,"B")126 packet.addControl("hid", "grid_10_blue", 52,"B")127 packet.addControl("hid", "grid_10_red", 53,"B")128 packet.addControl("hid", "grid_10_green", 54,"B")129 packet.addControl("hid", "grid_11_blue", 55,"B")130 packet.addControl("hid", "grid_11_red", 56,"B")131 packet.addControl("hid", "grid_11_green", 57,"B")132 packet.addControl("hid", "grid_12_blue", 58,"B")133 packet.addControl("hid", "grid_12_red", 59,"B")134 packet.addControl("hid", "grid_12_green", 60,"B")135 packet.addControl("hid", "grid_13_blue", 61,"B")136 packet.addControl("hid", "grid_13_red", 62,"B")137 packet.addControl("hid", "grid_13_green", 63,"B")138 packet.addControl("hid", "grid_14_blue", 64,"B")139 packet.addControl("hid", "grid_14_red", 65,"B")140 packet.addControl("hid", "grid_14_green", 66,"B")141 packet.addControl("hid", "grid_15_blue", 67,"B")142 packet.addControl("hid", "grid_15_red", 68,"B")143 packet.addControl("hid", "grid_15_green", 69,"B")144 packet.addControl("hid", "grid_16_blue", 70,"B")145 packet.addControl("hid", "grid_16_red", 71,"B")146 packet.addControl("hid", "grid_16_green", 72,"B")147 // Play key brightness control, 0-0xff148 packet.addControl("hid", "play_4_1_brightness", 73,"B");149 packet.addControl("hid", "play_4_2_brightness", 74,"B");150 packet.addControl("hid", "play_3_1_brightness", 75,"B");151 packet.addControl("hid", "play_3_2_brightness", 76,"B");152 packet.addControl("hid", "play_2_1_brightness", 77,"B");153 packet.addControl("hid", "play_2_2_brightness", 78,"B");154 packet.addControl("hid", "play_1_1_brightness", 79,"B");155 packet.addControl("hid", "play_1_2_brightness", 80,"B");156 this.controller.registerOutputPacket(packet);157 }158 this.initializeHIDController = function() {159 this.scalers = new Object();160 this.scalers["volume"] = function(value) {161 return script.absoluteLin(value, 0, 1, 0, 4096);162 }163 this.scalers["pregain"] = function(value) {164 return script.absoluteNonLin(value,0,1,5,0,4096);165 }166 this.scalers["rate"] = function(value) {167 return script.absoluteLin(value,-1,1,0,4096);168 }169 this.scalers["ratereversed"] = function(value) {170 return -script.absoluteLin(value,-1,1,0,4096);171 }172 this.scalers["plusminus"] = function(value) {173 return script.absoluteLin(value,-1,1,0,4096);174 }175 this.scalers["eq"] = function(value) {176 return script.absoluteNonLin(value, 0, 1, 4, 0, 4096);177 }178 this.registerInputPackets();179 this.registerOutputPackets();180 }181 // Set brightness for single color buttons with brigthness adjustment182 // Valid adjustment range is 0-0x7f183 this.setButtonBrightness = function(name, value) {184 var controller = this.controller;185 var packet = controller.getOutputPacket("lights");186 if (name.match(/grid_/)) {187 HIDDebug("ERROR: set PAD colors with setPADColor");188 return;189 }190 if (!name.match(/.*_brightness$/))191 name = name + "_brightness";192 var field = packet.getField("hid", name);193 if (field==undefined) {194 HIDDebug("button field not found: " + name);195 return;196 }197 if (value<0)198 value = 0;199 if (value>0x7f)200 value = 0x7f;201 field.value = value;202 }203 this.segments = function(number) {204 }205 this.set7SegmentNumber = function(number) {206 var controller = this.controller;207 var packet = controller.getOutputPacket("lights");208 if (number != undefined) {209 left = KontrolF1.segments[Math.floor(number/10)];210 right = KontrolF1.segments[number % 10];211 } else {212 left = KontrolF1.segments['empty'];213 right = KontrolF1.segments['empty'];214 }215 for (var i=0;i<7;i++) {216 field = packet.getField("hid", "left_segment_"+(i+1));217 field.value = left[i];218 field = packet.getField("hid", "right_segment_"+(i+1));219 field.value = right[i];220 }221 HIDDebug("segments left " + left + " right " + right);222 }223 // Set the 8 bytes in left or right 7-segment display. DP is the dot.224 this.set7SegmentValue = function(name, dp, v1, v2, v3, v4, v5, v6, v7) {225 var controller = this.controller;226 var packet = controller.getOutputPacket("lights");227 var field = undefined;228 field = packet.getField("hid", name+"_segment_dp");229 field.value = dp;230 field = packet.getField("hid", name+"_segment_1");231 field.value = v1;232 field = packet.getField("hid", name+"_segment_2");233 field.value = v2;234 field = packet.getField("hid", name+"_segment_3");235 field.value = v3;236 field = packet.getField("hid", name+"_segment_4");237 field.value = v4;238 field = packet.getField("hid", name+"_segment_5");239 field.value = v5;240 field = packet.getField("hid", name+"_segment_6");241 field.value = v6;242 field = packet.getField("hid", name+"_segment_7");243 field.value = v7;244 }245 // Set RGB color for one of the 16 pads.246 // Index is pad number index as 1-16.247 // Valid range for each color is 0-0x7f.248 this.setPADColor = function(index,red,green,blue) {249 var controller = this.controller;250 var packet = controller.getOutputPacket("lights");251 var field = undefined;252 if (index<=0 || index>16) {253 HIDDebug("Invalid grid index" + index);254 return;255 }256 if (red==undefined)257 red=0;258 if (red>0x7f)259 red=0x7f;260 field = packet.getField("hid", "grid_"+index+"_red");261 field.value = red;262 if (green==undefined)263 green=0;264 if (green>0x7f)265 green=0x7f;266 field = packet.getField("hid", "grid_"+index+"_green");267 field.value = green;268 if (blue==undefined)269 blue=0;270 if (blue>0x7f)271 blue=0x7f;272 field = packet.getField("hid", "grid_"+index+"_blue");273 field.value = blue;274 }275 // reset all lights to off state276 this.resetLEDs = function() {277 var controller = this.controller;278 var packet = controller.getOutputPacket("lights");279 for (var group_name in packet.groups) {280 var group = packet.groups[group_name];281 for (var field_name in group) {282 var field = group[field_name];283 field.value = 0;284 }285 }286 packet.send();287 }288 // Send update for LED packets after LED state modifications289 this.updateLEDs = function() {290 var packet = this.controller.getOutputPacket("lights");291 packet.send();292 }293}294KontrolF1 = new KontrolF1Controller();295KontrolF1.init = function (id) {296 KontrolF1.id = id;297 KontrolF1.controlModeButtons = { "decks": "capture", "samplers": "quant" };298 KontrolF1.defaultControlMode = "decks";299 KontrolF1.initializeHIDController();300 var controller = KontrolF1.controller;301 KontrolF1.knobs = new Object();302 KontrolF1.faders = new Object();303 KontrolF1.grids = new Object();304 KontrolF1.playbuttons = new Object();305 KontrolF1.segments = new Object();306 controller.postProcessDelta = KontrolF1.ButtonLEDPressUpdate;307 KontrolF1.registerCallbacks();308 KontrolF1.resetLEDs();309 KontrolF1.setControlMode(KontrolF1.defaultControlMode);310 // Timers can't be defined in prototype with this.311 if (KontrolF1.LEDUpdateInterval!=undefined) {312 KontrolF1.LEDTimer = engine.beginTimer(313 KontrolF1.LEDUpdateInterval,314 "KontrolF1.controller.updateLEDs(true)"315 );316 }317 KontrolF1.segments['empty'] = [0,0,0,0,0,0,0];318 KontrolF1.segments[0] = [0x0,0x40,0x40,0x40,0x40,0x40,0x40];319 KontrolF1.segments[1] = [0x0,0x40,0x40,0x0,0x0,0x0,0x0];320 KontrolF1.segments[2] = [0x40,0x0,0x40,0x40,0,0x40,0x40];321 KontrolF1.segments[3] = [0x40,0x40,0x40,0x40,0,0x0,0x40];322 KontrolF1.segments[4] = [0x40,0x40,0x40,0x0,0x40,0x0,0x0];323 KontrolF1.segments[5] = [0x40,0x40,0x0,0x40,0x40,0x0,0x40];324 KontrolF1.segments[6] = [0x40,0x40,0x0,0x40,0x40,0x40,0x40];325 KontrolF1.segments[7] = [0x0,0x40,0x40,0x40,0x0,0x0,0x0];326 KontrolF1.segments[8] = [0x40,0x40,0x40,0x40,0x40,0x40,0x40];327 KontrolF1.segments[9] = [0x40,0x40,0x40,0x40,0x40,0x0,0x40];328 KontrolF1.testUpdateInterval = 5;329 KontrolF1.testSegment = 0;330 KontrolF1.testTimer = engine.beginTimer(331 KontrolF1.testUpdateInterval,332 "KontrolF1.testSegments()"333 );334 KontrolF1.updateLEDs();335 HIDDebug("NI Traktor F1 "+KontrolF1.id+" initialized");336}337KontrolF1.testSegments = function() {338 if (KontrolF1.testSegment < 100) {339 KontrolF1.set7SegmentNumber(KontrolF1.testSegment);340 KontrolF1.testSegment += 1;341 } else {342 engine.stopTimer(KontrolF1.testTimer);343 KontrolF1.set7SegmentNumber(undefined);344 }345 KontrolF1.updateLEDs();346}347// Device cleanup function348KontrolF1.shutdown = function() {349 if (KontrolF1.LEDTimer!=undefined) {350 engine.stopTimer(KontrolF1.LEDTimer);351 KontrolF1.LEDTimer = undefined;352 }353 KontrolF1.shutdownHardware(2);354 HIDDebug("NI Traktor F1 "+KontrolF1.id+" shut down");355}356// Mandatory default handler for incoming packets357KontrolF1.incomingData = function(data,length) {358 KontrolF1.controller.parsePacket(data,length);359}360// Mandatory LED update callback handler361KontrolF1.activeLEDUpdateWrapper = function() {362 KontrolF1.controller.updateActiveDeckLEDs();363}364// Handle button LED updates after packet receive if required:365// F1 will reset LEDs to a default state without this366// Registered as packet post processing callback in init.367KontrolF1.ButtonLEDPressUpdate = function(packet,changed_data) {368 var send_led_update = false;369 for (var field in changed_data) {370 var delta = changed_data[field];371 var name = field.split(".")[1]372 // Select encoder also resets LEDs for some reason373 if (field=="select_encoder") {374 send_led_update = true;375 break;376 }377 // Check if this is one of permanently lit LEDs378 var controlmode = false;379 for (mode in KontrolF1.controlModeButtons) {380 if (KontrolF1.controlModeButtons[mode]==name) {381 controlmode = true;382 break;383 }384 }385 if (controlmode) {386 send_led_update = true;387 break;388 }389 // Update leds if any of these buttons were modified in packet390 if (KontrolF1.buttonNames.indexOf(name)!=-1) {391 if (delta.value==1)392 KontrolF1.setButtonBrightness(name,0x7f);393 if (delta.value==0)394 KontrolF1.setButtonBrightness(name,0);395 send_led_update = true;396 break;397 }398 // Update leds if any of pads was pressed399 if (/grid_[0-9]/.test(name)) {400 send_led_update = true;401 break;402 }403 }404 if (send_led_update)405 KontrolF1.updateLEDs();406}407KontrolF1.disconnectModeLEDs = function(mode) {408 var grid = KontrolF1.grids[mode];409 var buttons = KontrolF1.playbuttons[mode];410 for (var name in grid) {411 var button = grid[name];412 if (button.ledname==undefined)413 continue414 engine.connectControl(button.group, button.ledname,415 KontrolF1.setLED, false416 );417 }418 for (var name in buttons) {419 var button = buttons[name];420 var button_index = parseInt(name.split("_")[1]);421 if (button.ledname==undefined)422 continue;423 engine.connectControl(button.group, button.ledname,424 KontrolF1.setLED, false425 );426 }427}428KontrolF1.connectModeLEDs = function(mode) {429 var grid = KontrolF1.grids[mode];430 var buttons = KontrolF1.playbuttons[mode];431 var color;432 for (var name in grid) {433 var button = grid[name];434 var button_index = parseInt(name.split("_")[1]);435 if (button.ledname==undefined)436 continue;437 engine.connectControl(button.group, button.ledname,438 KontrolF1.setLED439 );440 if (engine.getValue(button.group, button.ledname))441 value = button.ledcolor;442 else443 value = 0,0,0;444 KontrolF1.setPADColor(button_index,value[0],value[1],value[2]);445 }446 for (var name in buttons) {447 var button = buttons[name];448 var button_index = parseInt(name.split("_")[1]);449 if (button.ledname==undefined)450 continue;451 engine.connectControl(button.group, button.ledname,452 KontrolF1.setLED453 );454 value = (engine.getValue(button.group,button.name)==1) ? 0x7f :0;455 KontrolF1.setButtonBrightness("play_"+button_index+"_1", value);456 KontrolF1.setButtonBrightness("play_"+button_index+"_2", value);457 }458 KontrolF1.updateLEDs();459}460KontrolF1.setLED = function(value,group,key) {461 var grid = KontrolF1.grids[KontrolF1.controlMode];462 var buttons = KontrolF1.playbuttons[KontrolF1.controlMode];463 var matched = false;464 for (var name in grid) {465 var button = grid[name];466 var button_index = parseInt(name.split("_")[1]);467 if (button.group!=group || button.ledname!=key)468 continue;469 if (value)470 value = button.ledcolor;471 else472 value = 0,0,0;473 KontrolF1.setPADColor(button_index,value[0],value[1],value[2]);474 matched = true;475 break;476 }477 for (var name in buttons) {478 var button = buttons[name];479 var button_index = parseInt(name.split("_")[1]);480 if (button.group!=group || button.name!=key)481 continue;482 value = (value==1) ? 0x7f : 0;483 KontrolF1.setButtonBrightness("play_"+button_index+"_1", value);484 KontrolF1.setButtonBrightness("play_"+button_index+"_2", value);485 matched = true;486 break;487 }488 KontrolF1.updateLEDs();489}490KontrolF1.linkKnob = function(mode,knob,group,name,scaler) {491 if (!(mode in KontrolF1.knobs))492 KontrolF1.knobs[mode] = new Object();493 var mapping = new Object();494 mapping.mode = mode;495 mapping.knob = knob;496 mapping.group = group;497 mapping.name = name;498 mapping.scaler = scaler;499 KontrolF1.knobs[mode][knob] = mapping;500}501KontrolF1.knob = function(field) {502 var controller = KontrolF1.controller;503 var mode = KontrolF1.knobs[KontrolF1.controlMode];504 if (mode==undefined) {505 HIDDebug("Knob group not mapped in mode " + KontrolF1.controlMode);506 return;507 }508 var knob = mode[field.name];509 if (knob==undefined) {510 HIDDebug("Fader "+field.name+ " not mapped in " + KontrolF1.controlMode);511 return;512 }513 return KontrolF1.control(knob,field);514}515KontrolF1.linkFader = function(mode,fader,group,name,scaler,callback) {516 if (!(mode in KontrolF1.faders))517 KontrolF1.faders[mode] = new Object();518 var mapping = new Object();519 mapping.mode = mode;520 mapping.fader = fader;521 mapping.group = group;522 mapping.name = name;523 mapping.scaler = scaler;524 mapping.callback = callback;525 KontrolF1.faders[mode][fader] = mapping;526}527KontrolF1.fader = function(field) {528 var controller = KontrolF1.controller;529 var mode = KontrolF1.faders[KontrolF1.controlMode];530 if (mode==undefined) {531 HIDDebug("Fader group not mapped in mode " + KontrolF1.controlMode);532 return;533 }534 var fader = mode[field.name];535 if (fader==undefined) {536 HIDDebug("Fader "+field.name+ " not mapped in " + KontrolF1.controlMode);537 return;538 }539 return KontrolF1.control(fader,field);540}541KontrolF1.linkGrid = function(mode,button,group,name,toggle,callback,ledcolor,ledname) {542 if (!(mode in KontrolF1.grids))543 KontrolF1.grids[mode] = new Object();544 if (ledname==undefined) {545 if (name.match(/hotcue_[0-9]/))546 ledname = name + '_enabled';547 else548 ledname = name;549 }550 if (ledcolor==undefined) {551 ledcolor = [0x7f,0x7f,0x7f];552 }553 var mapping = new Object();554 mapping.mode = mode;555 mapping.button = button;556 mapping.group = group;557 mapping.name = name;558 mapping.toggle = toggle;559 mapping.ledname = ledname;560 mapping.ledcolor = ledcolor;561 mapping.callback = callback;562 KontrolF1.grids[mode][button] = mapping;563}564KontrolF1.grid = function(field) {565 var mode = KontrolF1.grids[KontrolF1.controlMode];566 if (mode==undefined) {567 HIDDebug("Grid button group not mapped in " + KontrolF1.controlMode);568 return;569 }570 var button = mode[field.name];571 if (button==undefined) {572 HIDDebug("Grid "+field.name+ " not mapped in " + KontrolF1.controlMode);573 return;574 }575 return KontrolF1.button(button,field);576}577KontrolF1.linkPlay = function(mode,button,group,name,toggle,callback,ledname) {578 if (!(mode in KontrolF1.playbuttons))579 KontrolF1.playbuttons[mode] = new Object();580 if (ledname==undefined) {581 if (name.match(/hotcue_[0-9]/))582 ledname = name + '_enabled';583 else584 ledname = name;585 }586 var mapping = new Object();587 mapping.mode = mode;588 mapping.button = button;589 mapping.group = group;590 mapping.name = name;591 mapping.toggle = toggle;592 mapping.ledname = ledname;593 mapping.callback = callback;594 KontrolF1.playbuttons[mode][button] = mapping;595}596KontrolF1.play = function(field) {597 var mode = KontrolF1.playbuttons[KontrolF1.controlMode];598 if (mode==undefined) {599 HIDDebug("Play button group not mapped in " + KontrolF1.controlMode);600 return;601 }602 var button = mode[field.name];603 if (button==undefined) {604 HIDDebug("Play button "+field.name+ " not mapped in " + KontrolF1.controlMode);605 return;606 }607 return KontrolF1.button(button,field);608}609KontrolF1.control = function(control,field) {610 if (control.callback!=undefined) {611 control.callback(control,field);612 return;613 }614 var scaler = KontrolF1.scalers[control.scaler];615 engine.setValue(control.group,control.name,scaler(field.value));616}617KontrolF1.button = function(button,field) {618 var controller = KontrolF1.controller;619 if (button.callback!=undefined) {620 button.callback(button,field);621 return;622 }623 if (button.toggle) {624 if (button.name=='play')625 controller.togglePlay(button.group,field);626 else627 controller.toggle(button.group,button.name,field.value);628 } else {629 var value = (field.value==1) ? true : false;630 engine.setValue(button.group,button.name,value);631 }632}633KontrolF1.switchControlMode = function(field) {634 if (field.name=='quant') {635 KontrolF1.setControlMode("samplers");636 } else if (field.name=='capture') {637 KontrolF1.setControlMode("decks");638 } else {639 HIDDebug("Unconfigured mode selector button: " + field.name);640 return;641 }642}643KontrolF1.setControlMode = function(mode) {644 if (mode==KontrolF1.controlMode)645 return;646 if (!(mode in KontrolF1.controlModeButtons)) {647 HIDDebug("Unconfigured control mode: " + mode);648 return;649 }650 if (KontrolF1.controlMode!=undefined) {651 KontrolF1.disconnectModeLEDs(KontrolF1.controlMode);652 KontrolF1.setButtonBrightness(653 KontrolF1.controlModeButtons[KontrolF1.controlMode],0654 );655 }656 KontrolF1.controlMode = mode;657 led = KontrolF1.controlModeButtons[mode];658 KontrolF1.connectModeLEDs(KontrolF1.controlMode);659 KontrolF1.setButtonBrightness(660 KontrolF1.controlModeButtons[KontrolF1.controlMode],0x7f661 );662 KontrolF1.updateLEDs();663}664KontrolF1.registerCallbacks = function() {665 var controller = KontrolF1.controller;666 HIDDebug("Registering HID callbacks");667 controller.linkControl("hid", "select_encoder", "[Playlist]", "SelectTrackKnob");668 controller.linkControl("hid", "select_push", "[Playlist]", "LoadSelectedIntoFirstStopped");669 controller.linkModifier("hid", "shift", "shift");670 controller.setCallback("control", "hid", "capture", KontrolF1.switchControlMode);671 controller.setCallback("control", "hid", "quant", KontrolF1.switchControlMode);672 controller.setCallback("control", "hid", "knob_1", KontrolF1.knob);673 controller.setCallback("control", "hid", "knob_2", KontrolF1.knob);674 controller.setCallback("control", "hid", "knob_3", KontrolF1.knob);675 controller.setCallback("control", "hid", "knob_4", KontrolF1.knob);676 controller.setCallback("control", "hid", "fader_1", KontrolF1.fader);677 controller.setCallback("control", "hid", "fader_2", KontrolF1.fader);678 controller.setCallback("control", "hid", "fader_3", KontrolF1.fader);679 controller.setCallback("control", "hid", "fader_4", KontrolF1.fader);680 controller.setCallback("control", "hid", "grid_1", KontrolF1.grid);681 controller.setCallback("control", "hid", "grid_2", KontrolF1.grid);682 controller.setCallback("control", "hid", "grid_3", KontrolF1.grid);683 controller.setCallback("control", "hid", "grid_4", KontrolF1.grid);684 controller.setCallback("control", "hid", "grid_5", KontrolF1.grid);685 controller.setCallback("control", "hid", "grid_6", KontrolF1.grid);686 controller.setCallback("control", "hid", "grid_7", KontrolF1.grid);687 controller.setCallback("control", "hid", "grid_8", KontrolF1.grid);688 controller.setCallback("control", "hid", "grid_9", KontrolF1.grid);689 controller.setCallback("control", "hid", "grid_10", KontrolF1.grid);690 controller.setCallback("control", "hid", "grid_11", KontrolF1.grid);691 controller.setCallback("control", "hid", "grid_12", KontrolF1.grid);692 controller.setCallback("control", "hid", "grid_13", KontrolF1.grid);693 controller.setCallback("control", "hid", "grid_14", KontrolF1.grid);694 controller.setCallback("control", "hid", "grid_15", KontrolF1.grid);695 controller.setCallback("control", "hid", "grid_16", KontrolF1.grid);696 controller.setCallback("control", "hid", "play_1", KontrolF1.play);697 controller.setCallback("control", "hid", "play_2", KontrolF1.play);698 controller.setCallback("control", "hid", "play_3", KontrolF1.play);699 controller.setCallback("control", "hid", "play_4", KontrolF1.play);700 KontrolF1.linkKnob("decks", "knob_1", "[Master]", "headVolume", "pregain");701 KontrolF1.linkKnob("decks", "knob_2", "[Master]", "headMix", "plusminus");702 KontrolF1.linkKnob("decks", "knob_3", "[Master]", "balance", "plusminus");703 KontrolF1.linkKnob("decks", "knob_4", "[Master]", "volume", "pregain");704 KontrolF1.linkFader("decks", "fader_1", "[Channel1]", "rate", "rate");705 KontrolF1.linkFader("decks", "fader_2", "[Channel1]", "volume", "volume");706 KontrolF1.linkFader("decks", "fader_3", "[Channel2]", "volume", "volume");707 KontrolF1.linkFader("decks", "fader_4", "[Channel2]", "rate", "rate");708 KontrolF1.linkGrid("decks", "grid_1", "[Channel1]", "hotcue_1", false,KontrolF1.hotcue,[0x7f,0x7f,0x0]);709 KontrolF1.linkGrid("decks", "grid_2", "[Channel1]", "hotcue_2", false,KontrolF1.hotcue,[0x7f,0x0,0x7f]);710 KontrolF1.linkGrid("decks", "grid_3", "[Channel2]", "hotcue_1", false,KontrolF1.hotcue,[0x7f,0x7f,0x0]);711 KontrolF1.linkGrid("decks", "grid_4", "[Channel2]", "hotcue_2", false,KontrolF1.hotcue,[0x7f,0x0,0x7f]);712 KontrolF1.linkGrid("decks", "grid_5", "[Channel1]", "hotcue_3", false,KontrolF1.hotcue,[0x0,0x40,0x7f]);713 KontrolF1.linkGrid("decks", "grid_6", "[Channel1]", "hotcue_4", false,KontrolF1.hotcue,[0x0,0x7f,0x0]);714 KontrolF1.linkGrid("decks", "grid_7", "[Channel2]", "hotcue_3", false,KontrolF1.hotcue,[0x0,0x40,0x7f]);715 KontrolF1.linkGrid("decks", "grid_8", "[Channel2]", "hotcue_4", false,KontrolF1.hotcue,[0x0,0x7f,0x0]);716 KontrolF1.linkGrid("decks", "grid_9", "[Channel1]", "loop_in", false,undefined,[0x0,0x7f,0x0]);717 KontrolF1.linkGrid("decks", "grid_10", "[Channel1]", "loop_out", false,undefined,[0x0,0x7f,0x0]);718 KontrolF1.linkGrid("decks", "grid_11", "[Channel2]", "loop_in", false,undefined,[0x0,0x7f,0x0]);719 KontrolF1.linkGrid("decks", "grid_12", "[Channel2]", "loop_out", false,undefined,[0x0,0x7f,0x0]);720 KontrolF1.linkGrid("decks", "grid_13", "[Channel1]", "quantize", true,undefined,[0x10,0x10,0x40]);721 KontrolF1.linkGrid("decks", "grid_14", "[Channel1]", "reloop_exit", false,undefined,[0x7f,0x0,0x0]);722 KontrolF1.linkGrid("decks", "grid_15", "[Channel2]", "quantize", true,undefined,[0x10,0x10,0x40]);723 KontrolF1.linkGrid("decks", "grid_16", "[Channel2]", "reloop_exit");724 KontrolF1.linkPlay("decks", "play_1", "[Channel1]", "play", true);725 KontrolF1.linkPlay("decks", "play_2", "[Channel1]", "cue_default");726 KontrolF1.linkPlay("decks", "play_3", "[Channel2]", "play", true);727 KontrolF1.linkPlay("decks", "play_4", "[Channel2]", "cue_default");728 KontrolF1.linkKnob("samplers", "knob_1", "[Sampler1]", "rate", "ratereversed");729 KontrolF1.linkKnob("samplers", "knob_2", "[Sampler2]", "rate", "ratereversed");730 KontrolF1.linkKnob("samplers", "knob_3", "[Sampler3]", "rate", "ratereversed");731 KontrolF1.linkKnob("samplers", "knob_4", "[Sampler4]", "rate", "ratereversed");732 KontrolF1.linkFader("samplers", "fader_1", "[Sampler1]", "pregain", "pregain");733 KontrolF1.linkFader("samplers", "fader_2", "[Sampler2]", "pregain", "pregain");734 KontrolF1.linkFader("samplers", "fader_3", "[Sampler3]", "pregain", "pregain");735 KontrolF1.linkFader("samplers", "fader_4", "[Sampler4]", "pregain", "pregain");736 KontrolF1.linkGrid("samplers", "grid_1", "[Sampler1]", "hotcue_1", false,KontrolF1.hotcue,[0x7f,0x0,0x0]);737 KontrolF1.linkGrid("samplers", "grid_2", "[Sampler2]", "hotcue_1", false,KontrolF1.hotcue,[0x7f,0x0,0x0]);738 KontrolF1.linkGrid("samplers", "grid_3", "[Sampler3]", "hotcue_1", false,KontrolF1.hotcue,[0x7f,0x0,0x0]);739 KontrolF1.linkGrid("samplers", "grid_4", "[Sampler4]", "hotcue_1", false,KontrolF1.hotcue,[0x7f,0x0,0x0]);740 KontrolF1.linkGrid("samplers", "grid_5", "[Sampler1]", "hotcue_2", false,KontrolF1.hotcue,[0x0,0x7f,0x0]);741 KontrolF1.linkGrid("samplers", "grid_6", "[Sampler2]", "hotcue_2", false,KontrolF1.hotcue,[0x0,0x7f,0x0]);742 KontrolF1.linkGrid("samplers", "grid_7", "[Sampler3]", "hotcue_2", false,KontrolF1.hotcue,[0x0,0x7f,0x0]);743 KontrolF1.linkGrid("samplers", "grid_8", "[Sampler4]", "hotcue_2", false,KontrolF1.hotcue,[0x0,0x7f,0x0]);744 KontrolF1.linkGrid("samplers", "grid_9", "[Sampler1]", "hotcue_3", false,KontrolF1.hotcue,[0x0,0x0,0x7f]);745 KontrolF1.linkGrid("samplers", "grid_10", "[Sampler2]", "hotcue_3", false,KontrolF1.hotcue,[0x0,0x0,0x7f]);746 KontrolF1.linkGrid("samplers", "grid_11", "[Sampler3]", "hotcue_3", false,KontrolF1.hotcue,[0x0,0x0,0x7f]);747 KontrolF1.linkGrid("samplers", "grid_12", "[Sampler4]", "hotcue_3", false,KontrolF1.hotcue,[0x0,0x0,0x7f]);748 KontrolF1.linkGrid("samplers", "grid_13", "[Sampler1]", "hotcue_4", false,KontrolF1.hotcue,[0x0,0x7f,0x7f]);749 KontrolF1.linkGrid("samplers", "grid_14", "[Sampler2]", "hotcue_4", false,KontrolF1.hotcue,[0x0,0x7f,0x7f]);750 KontrolF1.linkGrid("samplers", "grid_15", "[Sampler3]", "hotcue_4", false,KontrolF1.hotcue,[0x0,0x7f,0x7f]);751 KontrolF1.linkGrid("samplers", "grid_16", "[Sampler4]", "hotcue_4", false,KontrolF1.hotcue,[0x0,0x7f,0x7f]);752 KontrolF1.linkPlay("samplers", "play_1", "[Sampler1]", "play", true);753 KontrolF1.linkPlay("samplers", "play_2", "[Sampler2]", "play", true);754 KontrolF1.linkPlay("samplers", "play_3", "[Sampler3]", "play", true);755 KontrolF1.linkPlay("samplers", "play_4", "[Sampler4]", "play", true);756}757KontrolF1.hotcue = function(button,field) {758 var controller = KontrolF1.controller;759 var name;760 if (field.value == controller.buttonStates.released)761 return;762 if (controller.modifiers.get("shift"))763 name = button.name + '_clear';764 else765 name = button.name + '_activate';766 engine.setValue(button.group,name,true);...

Full Screen

Full Screen

Calls.py

Source:Calls.py Github

copy

Full Screen

...7 global f,f1,g,h8 # define functions9 def f():10 pass11 def f1(x):12 pass13 def g(a,b,c):14 return a,b,c15 def h(a,b,c,d=1,e=2,f=3):16 return d,e,f17 # do calls18 for i in range(self.rounds):19 f()20 f1(i)21 f1(i)22 f1(i)23 f1(i)24 g(i,i,i)25 g(i,i,i)26 g(i,i,i)27 g(i,i,i)28 h(i,i,3,i,i)29 h(i,i,i,2,i,3)30 f()31 f1(i)32 f1(i)33 f1(i)34 f1(i)35 g(i,i,i)36 g(i,i,i)37 g(i,i,i)38 g(i,i,i)39 h(i,i,3,i,i)40 h(i,i,i,2,i,3)41 f()42 f1(i)43 f1(i)44 f1(i)45 f1(i)46 g(i,i,i)47 g(i,i,i)48 g(i,i,i)49 g(i,i,i)50 h(i,i,3,i,i)51 h(i,i,i,2,i,3)52 f()53 f1(i)54 f1(i)55 f1(i)56 f1(i)57 g(i,i,i)58 g(i,i,i)59 g(i,i,i)60 g(i,i,i)61 h(i,i,3,i,i)62 h(i,i,i,2,i,3)63 f()64 f1(i)65 f1(i)66 f1(i)67 f1(i)68 g(i,i,i)69 g(i,i,i)70 g(i,i,i)71 g(i,i,i)72 h(i,i,3,i,i)73 h(i,i,i,2,i,3)74 def calibrate(self):75 global f,f1,g,h76 # define functions77 def f():78 pass79 def f1(x):80 pass81 def g(a,b,c):82 return a,b,c83 def h(a,b,c,d=1,e=2,f=3):84 return d,e,f85 # do calls86 for i in range(self.rounds):87 pass88###89class ComplexPythonFunctionCalls(Test):90 version = 2.091 operations = 4*592 rounds = 10000093 def test(self):94 # define functions95 def f(a,b,c,d=1,e=2,f=3):96 return f97 args = 1,298 kwargs = dict(c=3,d=4,e=5)99 # do calls100 for i in range(self.rounds):101 f(a=i,b=i,c=i)102 f(f=i,e=i,d=i,c=2,b=i,a=3)103 f(1,b=i,**kwargs)104 f(*args,**kwargs)105 f(a=i,b=i,c=i)106 f(f=i,e=i,d=i,c=2,b=i,a=3)107 f(1,b=i,**kwargs)108 f(*args,**kwargs)109 f(a=i,b=i,c=i)110 f(f=i,e=i,d=i,c=2,b=i,a=3)111 f(1,b=i,**kwargs)112 f(*args,**kwargs)113 f(a=i,b=i,c=i)114 f(f=i,e=i,d=i,c=2,b=i,a=3)115 f(1,b=i,**kwargs)116 f(*args,**kwargs)117 f(a=i,b=i,c=i)118 f(f=i,e=i,d=i,c=2,b=i,a=3)119 f(1,b=i,**kwargs)120 f(*args,**kwargs)121 def calibrate(self):122 # define functions123 def f(a,b,c,d=1,e=2,f=3):124 return f125 args = 1,2126 kwargs = dict(c=3,d=4,e=5)127 # do calls128 for i in range(self.rounds):129 pass130###131class BuiltinFunctionCalls(Test):132 version = 2.0133 operations = 5*(2+5+5+5)134 rounds = 60000135 def test(self):136 # localize functions137 f0 = globals138 f1 = hash139 f2 = divmod140 f3 = max141 # do calls142 for i in range(self.rounds):143 f0()144 f0()145 f1(i)146 f1(i)147 f1(i)148 f1(i)149 f1(i)150 f2(1,2)151 f2(1,2)152 f2(1,2)153 f2(1,2)154 f2(1,2)155 f3(1,3,2)156 f3(1,3,2)157 f3(1,3,2)158 f3(1,3,2)159 f3(1,3,2)160 f0()161 f0()162 f1(i)163 f1(i)164 f1(i)165 f1(i)166 f1(i)167 f2(1,2)168 f2(1,2)169 f2(1,2)170 f2(1,2)171 f2(1,2)172 f3(1,3,2)173 f3(1,3,2)174 f3(1,3,2)175 f3(1,3,2)176 f3(1,3,2)177 f0()178 f0()179 f1(i)180 f1(i)181 f1(i)182 f1(i)183 f1(i)184 f2(1,2)185 f2(1,2)186 f2(1,2)187 f2(1,2)188 f2(1,2)189 f3(1,3,2)190 f3(1,3,2)191 f3(1,3,2)192 f3(1,3,2)193 f3(1,3,2)194 f0()195 f0()196 f1(i)197 f1(i)198 f1(i)199 f1(i)200 f1(i)201 f2(1,2)202 f2(1,2)203 f2(1,2)204 f2(1,2)205 f2(1,2)206 f3(1,3,2)207 f3(1,3,2)208 f3(1,3,2)209 f3(1,3,2)210 f3(1,3,2)211 f0()212 f0()213 f1(i)214 f1(i)215 f1(i)216 f1(i)217 f1(i)218 f2(1,2)219 f2(1,2)220 f2(1,2)221 f2(1,2)222 f2(1,2)223 f3(1,3,2)224 f3(1,3,2)225 f3(1,3,2)226 f3(1,3,2)227 f3(1,3,2)228 def calibrate(self):229 # localize functions230 f0 = dir231 f1 = hash232 f2 = divmod233 f3 = max234 # do calls235 for i in range(self.rounds):236 pass237###238class PythonMethodCalls(Test):239 version = 2.0240 operations = 5*(6 + 5 + 4)241 rounds = 30000242 def test(self):243 class c:244 x = 2245 s = 'string'246 def f(self):247 return self.x248 def j(self,a,b):249 self.y = a250 self.t = b251 return self.y252 def k(self,a,b,c=3):253 self.y = a254 self.s = b255 self.t = c256 o = c()257 for i in range(self.rounds):258 o.f()259 o.f()260 o.f()261 o.f()262 o.f()263 o.f()264 o.j(i,i)265 o.j(i,i)266 o.j(i,2)267 o.j(i,2)268 o.j(2,2)269 o.k(i,i)270 o.k(i,2)271 o.k(i,2,3)272 o.k(i,i,c=4)273 o.f()274 o.f()275 o.f()276 o.f()277 o.f()278 o.f()279 o.j(i,i)280 o.j(i,i)281 o.j(i,2)282 o.j(i,2)283 o.j(2,2)284 o.k(i,i)285 o.k(i,2)286 o.k(i,2,3)287 o.k(i,i,c=4)288 o.f()289 o.f()290 o.f()291 o.f()292 o.f()293 o.f()294 o.j(i,i)295 o.j(i,i)296 o.j(i,2)297 o.j(i,2)298 o.j(2,2)299 o.k(i,i)300 o.k(i,2)301 o.k(i,2,3)302 o.k(i,i,c=4)303 o.f()304 o.f()305 o.f()306 o.f()307 o.f()308 o.f()309 o.j(i,i)310 o.j(i,i)311 o.j(i,2)312 o.j(i,2)313 o.j(2,2)314 o.k(i,i)315 o.k(i,2)316 o.k(i,2,3)317 o.k(i,i,c=4)318 o.f()319 o.f()320 o.f()321 o.f()322 o.f()323 o.f()324 o.j(i,i)325 o.j(i,i)326 o.j(i,2)327 o.j(i,2)328 o.j(2,2)329 o.k(i,i)330 o.k(i,2)331 o.k(i,2,3)332 o.k(i,i,c=4)333 def calibrate(self):334 class c:335 x = 2336 s = 'string'337 def f(self):338 return self.x339 def j(self,a,b):340 self.y = a341 self.t = b342 def k(self,a,b,c=3):343 self.y = a344 self.s = b345 self.t = c346 o = c347 for i in range(self.rounds):348 pass349###350class Recursion(Test):351 version = 2.0352 operations = 5353 rounds = 100000354 def test(self):355 global f356 def f(x):357 if x > 1:358 return f(x-1)359 return 1360 for i in range(self.rounds):361 f(10)362 f(10)363 f(10)364 f(10)365 f(10)366 def calibrate(self):367 global f368 def f(x):369 if x > 0:370 return f(x-1)371 return 1372 for i in range(self.rounds):373 pass374### Test to make Fredrik happy...375if __name__ == '__main__':376 import timeit377 if 0:378 timeit.TestClass = PythonFunctionCalls379 timeit.main(['-s', 'test = TestClass(); test.rounds = 1000',380 'test.test()'])381 else:382 setup = """\383global f,f1,g,h384# define functions385def f():386 pass387def f1(x):388 pass389def g(a,b,c):390 return a,b,c391def h(a,b,c,d=1,e=2,f=3):392 return d,e,f393i = 1394"""395 test = """\396f()397f1(i)398f1(i)399f1(i)400f1(i)401g(i,i,i)402g(i,i,i)403g(i,i,i)404g(i,i,i)405h(i,i,3,i,i)406h(i,i,i,2,i,3)407f()408f1(i)409f1(i)410f1(i)411f1(i)412g(i,i,i)413g(i,i,i)414g(i,i,i)415g(i,i,i)416h(i,i,3,i,i)417h(i,i,i,2,i,3)418f()419f1(i)420f1(i)421f1(i)422f1(i)423g(i,i,i)424g(i,i,i)425g(i,i,i)426g(i,i,i)427h(i,i,3,i,i)428h(i,i,i,2,i,3)429f()430f1(i)431f1(i)432f1(i)433f1(i)434g(i,i,i)435g(i,i,i)436g(i,i,i)437g(i,i,i)438h(i,i,3,i,i)439h(i,i,i,2,i,3)440f()441f1(i)442f1(i)443f1(i)444f1(i)445g(i,i,i)446g(i,i,i)447g(i,i,i)448g(i,i,i)449h(i,i,3,i,i)450h(i,i,i,2,i,3)451"""452 timeit.main(['-s', setup,...

Full Screen

Full Screen

exception-propagate-from-dfg-to-llint.js

Source:exception-propagate-from-dfg-to-llint.js Github

copy

Full Screen

...81function g() {82 with({})83 h(o);84}85function f1() {86 try {87 g();88 } catch (e) {89 testFailed("Caught exception in wrong codeblock");90 }91}92function f2() {93 try {94 g();95 } catch (e) {96 testPassed("Caught exception in correct codeblock");97 }98}99f1();100f1();101f1();102f1();103f1();104f1();105f1();106f1();107f1();108f1();109f1();110f1();111f1();112f1();113f1();114f1();115f1();116f1();117f1();118f1();119f1();120f1();121f1();122f1();123f1();124f1();125f1();126f1();127f1();128f1();129f1();130f1();131f1();132f1();133f1();134f1();135f1();136f1();137f1();138f1();139f1();140f1();141f1();142f1();143f1();144f1();145f1();146f1();147f1();148f1();149f1();150f1();151f1();152f1();153f1();154f1();155f1();156f1();157f1();158f1();159f1();160f1();161f1();162f1();163f1();164f1();165f1();166f1();167f1();168f1();169f1();170f1();171f1();172f1();173f1();174f1();175f1();176f1();177f1();178shouldThrow = true;179f2();...

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Slash 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