Best JavaScript code snippet using storybook-root
maplechange.js
Source:maplechange.js
...64 callback(JSON.parse(result));65 });66};67MapleChange.getMarkets = function(callback) {68 MapleChange.generateSignature('GET', '/api/v2/markets', '', function(signature, tonce) {69 var uri = 'markets?access_key=' + MapleChange.accessKey + '&tonce=' + tonce + '&signature=' + signature;70 MapleChange.request(uri, function(result) {71 callback(JSON.parse(result));72 });73 });74};75MapleChange.getTickers = function(callback) {76 var uri = 'tickers';77 MapleChange.request(uri, function(result) {78 callback(JSON.parse(result));79 });80};81MapleChange.getVolume = function(callback) {82 var uri = 'volume';83 MapleChange.request(uri, function(result) {84 callback(JSON.parse(result));85 });86};87MapleChange.getAccount = function(callback) {88 MapleChange.generateSignature('GET', '/api/v2/members/me', '', function(payloadHash, tonce) {89 var uri = 'members/me?access_key=' + MapleChange.accessKey + '&tonce=' + tonce + '&signature=' + payloadHash;90 MapleChange.request(uri, function(result) {91 callback(JSON.parse(result));92 });93 });94};95MapleChange.getAccountWallets = function(callback) {96 MapleChange.generateSignature('GET', '/api/v2/members/me/wallet', '', function(payloadHash, tonce) {97 var uri = 'members/me/wallet?access_key=' + MapleChange.accessKey + '&tonce=' + tonce + '&signature=' + payloadHash;98 MapleChange.request(uri, function(result) {99 callback(JSON.parse(result));100 });101 });102};103MapleChange.getAccountHistory = function(limit, callback) {104 MapleChange.generateSignature('GET', '/api/v2/members/history', '&limit=' + limit, function(payloadHash, tonce) {105 var uri = 'members/history?access_key=' + MapleChange.accessKey + '&limit=' + limit + '&tonce=' + tonce + '&signature=' + payloadHash;106 MapleChange.request(uri, function(result) {107 callback(JSON.parse(result));108 });109 });110};111MapleChange.generateOTP = function(callback) {112 MapleChange.generateSignature('GET', '/api/v2/members/otp', '', function(payloadHash, tonce) {113 var uri = 'members/otp?access_key=' + MapleChange.accessKey + '&tonce=' + tonce + '&signature=' + payloadHash;114 MapleChange.request(uri, function(result) {115 callback(JSON.parse(result));116 });117 });118};119MapleChange.verifyOTP = function(code, callback) {120 var tonce = MapleChange.getTonce(),121 query = 'access_key=' + MapleChange.accessKey + '&code=' + code + '&tonce=' + tonce;122 MapleChange.generateSignature('POST', '/api/v2/members/otp/verify', query, function(payloadHash) {123 var uri = 'members/otp/verify?' + query;124 MapleChange.postRequest(uri, payloadHash, function(result) {125 callback(result);126 });127 }, true);128};129MapleChange.getDeposit = function(transactionId, callback) {130 MapleChange.generateSignature('GET', '/api/v2/deposit', '&txid=' + transactionId, function(payloadHash, tonce) {131 var uri = 'deposit?access_key=' + MapleChange.accessKey + '&txid=' + transactionId + '&tonce=' + tonce + '&signature=' + payloadHash;132 MapleChange.request(uri, function(result) {133 callback(JSON.parse(result));134 });135 });136};137/**138 * Returns last three deposits139 * associated with the account.140 */141MapleChange.getCurrencyDeposits = function(currency, callback) {142 MapleChange.generateSignature('GET', '/api/v2/deposits', '¤cy=' + currency, function(payloadHash, tonce) {143 var uri = 'deposits?access_key=' + MapleChange.accessKey + '¤cy=' + currency + '&tonce=' + tonce + '&signature=' + payloadHash;144 MapleChange.request(uri, function(result) {145 callback(JSON.parse(result));146 });147 });148};149MapleChange.getCurrencyWithdraws = function(currency, callback) {150 MapleChange.generateSignature('GET', '/api/v2/withdraws', '¤cy=' + currency, function(payloadHash, tonce) {151 var uri = 'withdraws?access_key=' + MapleChange.accessKey + '¤cy=' + currency + '&tonce=' + tonce + '&signature=' + payloadHash;152 MapleChange.request(uri, function(result) {153 console.log(result);154 callback(JSON.parse(result));155 });156 });157};158/**159 * Useless function. Will be deprecated.160 */161MapleChange.getAllDeposits = function(callback) {162 MapleChange.generateSignature('GET', '/api/v2/deposits', '', function(payloadHash, tonce) {163 var uri = 'deposits?access_key=' + MapleChange.accessKey + '&tonce=' + tonce + '&signature=' + payloadHash;164 MapleChange.request(uri, function(result) {165 callback(JSON.parse(result));166 });167 });168};169MapleChange.getDepositAddress = function(currency, callback) {170 MapleChange.generateSignature('GET', '/api/v2/deposit_address', '¤cy=' + currency, function(payloadHash, tonce) {171 var uri = 'deposit_address?access_key=' + MapleChange.accessKey + '¤cy=' + currency + '&tonce=' + tonce + '&signature=' + payloadHash;172 MapleChange.request(uri, function(result) {173 callback(JSON.parse(result));174 });175 });176};177MapleChange.getOrder = function(id, callback) {178 MapleChange.generateSignature('GET', '/api/v2/order', '&id=' + id, function(payloadHash, tonce) {179 var uri = 'order?access_key=' + MapleChange.accessKey + '&id=' + id + '&tonce=' + tonce + '&signature=' + payloadHash;180 MapleChange.request(uri, function(result) {181 callback(JSON.parse(result));182 });183 });184};185MapleChange.getOrders = function(market, callback) {186 MapleChange.generateSignature('GET', '/api/v2/orders', '&market=' + market, function(payloadHash, tonce) {187 var uri = 'orders?access_key=' + MapleChange.accessKey + '&market=' + market + '&tonce=' + tonce + '&signature=' + payloadHash;188 MapleChange.request(uri, function(result) {189 callback(JSON.parse(result));190 });191 });192};193MapleChange.getAllOrders = function(callback) {194 MapleChange.generateSignature('GET', '/api/v2/orders', '&market=all', function(payloadHash, tonce) {195 var uri = 'orders?access_key=' + MapleChange.accessKey + '&market=all' + '&tonce=' + tonce + '&signature=' + payloadHash;196 MapleChange.request(uri, function(result) {197 callback(JSON.parse(result));198 });199 });200};201MapleChange.createWithdrawal = function(currency, to, amount, two_factor, callback) {202 var tonce = MapleChange.getTonce(),203 query = 'access_key=' + MapleChange.accessKey + '&amount=' + amount + '¤cy=' + currency + '&to=' + to + '&tonce=' + tonce + '&two_factor=' + two_factor204 MapleChange.generateSignature('POST', '/api/v2/withdraws', query, function(payloadHash) {205 var uri = 'withdraws?' + query;206 MapleChange.postRequest(uri, payloadHash, function(result) {207 callback(JSON.parse(result));208 });209 }, true);210};211MapleChange.createOrder = function(market, side, volume, price, callback) {212 var tonce = MapleChange.getTonce(),213 query = 'access_key=' + MapleChange.accessKey + '&market=' + market + '&price=' + price + '&side=' + side + '&tonce=' + tonce + '&volume=' + volume;214 MapleChange.generateSignature('POST', '/api/v2/orders', query, function(payloadHash) {215 var uri = 'orders?' + query;216 MapleChange.postRequest(uri, payloadHash, function(result) {217 callback(JSON.parse(result));218 });219 }, true);220};221MapleChange.cancelOrder = function(id, callback) {222 var tonce = MapleChange.getTonce(),223 query = 'access_key=' + MapleChange.accessKey + '&id=' + id + '&tonce=' + tonce;224 MapleChange.generateSignature('POST', '/api/v2/order/delete', query, function(payloadHash) {225 var uri = 'order/delete?' + query;226 MapleChange.postRequest(uri, payloadHash, function(result) {227 callback(JSON.parse(result));228 });229 }, true);230};231MapleChange.cancelOrdersBySide = function(side, callback) {232 var tonce = MapleChange.getTonce(),233 query = 'access_key=' + MapleChange.accessKey + '&side=' + side + '&tonce=' + tonce;234 MapleChange.generateSignature('POST', '/api/v2/orders/clear', query, function(payloadHash) {235 var uri = 'orders/clear?' + query;236 MapleChange.postRequest(uri, payloadHash, function(result) {237 callback(JSON.parse(result));238 });239 }, true);240};241MapleChange.cancelAllOrders = function(callback) {242 var tonce = MapleChange.getTonce(),243 query = 'access_key=' + MapleChange.accessKey + '&tonce=' + tonce;244 MapleChange.generateSignature('POST', '/api/v2/orders/clear', query, function(payloadHash) {245 var uri = 'orders/clear?' + query;246 MapleChange.postRequest(uri, payloadHash, function(result) {247 callback(JSON.parse(result));248 });249 }, true);250};251MapleChange.getOrderBook = function(market, callback) {252 MapleChange.generateSignature('GET', '/api/v2/order_book', '&market=' + market, function(payloadHash, tonce) {253 var uri = 'order_book?access_key=' + MapleChange.accessKey + '&market=' + market + '&tonce=' + tonce + '&signature' + payloadHash;254 MapleChange.request(uri, function(result) {255 callback(JSON.parse(result));256 });257 });258};259MapleChange.getMarketDepth = function(market, callback) {260 MapleChange.generateSignature('GET', '/api/v2/depth', '&market=' + market, function(payloadHash, tonce) {261 var uri = 'depth?access_key=' + MapleChange.accessKey + '&market=' + market + '&tonce=' + tonce + '&signature=' + payloadHash;262 MapleChange.request(uri, function(result) {263 callback(JSON.parse(result));264 });265 });266};267MapleChange.getMarketTrades = function(market, callback) {268 MapleChange.generateSignature('GET', '/api/v2/trades', '&market=' + market, function(payloadHash, tonce) {269 var uri = 'trades?access_key=' + MapleChange.accessKey + '&market=' + market + '&tonce=' + tonce + '&signature=' + payloadHash;270 MapleChange.request(uri, function(result) {271 callback(JSON.parse(result));272 });273 });274};275MapleChange.getMyMarketTrades = function(market, callback) {276 MapleChange.generateSignature('GET', '/api/v2/trades/my', '&market=' + market, function(payloadHash, tonce) {277 var uri ='trades/my?access_key=' + MapleChange.accessKey + '&market=' + market + '&tonce=' + tonce + '&signature=' + payloadHash;278 MapleChange.request(uri, function(result) {279 callback(JSON.parse(result));280 });281 });282};283/**284 * API call to receive all graph data of a market.285 * Limit specifies the amount of data points.286 * Period specifies the timespan in minutes (1, 3, 5, 10, 15, 30, 60, etc.)287 */288MapleChange.getKData = function(market, limit, period, callback) {289 MapleChange.generateSignature('GET', '/api/v2/k', '&market=' + market, function(payloadHash, tonce) {290 var uri = 'k?limit=' + limit + '&market=' + market + '&period=' + period + '&tonce=' + tonce;291 MapleChange.request(uri, function(result) {292 callback(JSON.parse(result));293 });294 });295};296MapleChange.getTimestamp = function(callback) {297 var uri = 'timestamp';298 MapleChange.request(uri, function(result) {299 callback(JSON.parse(result));300 });...
api.js
Source:api.js
1import request from 'requestapi'2import {singleListToString,GenerateSignature} from 'utils'3// ä¿®æ¹ç¨æ·å¯ç API4export function UserChangePassword (data) {5 return request({6 method: "post",7 url: '/v1/ldap/user/changepassword/',8 ...data9 })10}11// 管çåéç½®ç¨æ·å¯ç æ¥å£12export function UserResetPassword(data) {13 return request({14 method: "post",15 url: '/v1/ldap/user/resetpassword/',16 data: GenerateSignature(data)17 })18}19// 管çååéä¿®æ¹å¯ç è¿æ¥é®ä»¶æ¥å£20export function ReSendChangePassword(data) {21 return request({22 method: "post",23 url: '/v1/ldap/user/resendchangepass/',24 data: GenerateSignature(data)25 })26}27// æ´æ°LDAP DN æ¥å£28export function PostLDAPUpdateDN (data) {29 return request({30 method: "post",31 url: '/v1/ldap/dn/update/',32 data: singleListToString(data),33 })34}35// å建LDAP DN æ¥å£36export function PostLDAPCreateDN (data) {37 return request({38 method: "post",39 url: '/v1/ldap/dn/create/',40 data: singleListToString(data),41 })42}43// å é¤LDAP DN æ¥å£44export function PostLDAPDeleteDN (data) {45 return request({46 method: "post",47 url: '/v1/ldap/dn/delete/',48 data: GenerateSignature(data),49 })50}51// æ·»å ç¨æ·æ¥å£52export function PostLDAPCreateUser (data) {53 return request({54 method: "post",55 url: '/v1/ldap/user/createuser/',56 data: GenerateSignature(data),57 })58}59// å é¤ç¨æ·æ¥å£60export function PostLDAPDeleteUser (data) {61 return request({62 method: "post",63 url: '/v1/ldap/user/deleteuser/',64 data: GenerateSignature(data),65 })66}67// å é¤ç¨æ·æ¥å£68export function PostLDAPLockUnLockUser (data) {69 return request({70 method: "post",71 url: '/v1/ldap/user/lockunlock/',72 data: GenerateSignature(data),73 })74}75// æ´æ°ç¨æ·æ¥å£76export function PostLDAPUpdateUser (data) {77 return request({78 method: "post",79 url: '/v1/ldap/user/updateuser/',80 data: GenerateSignature(data),81 })82} 83// è·åç¨æ·å表API84export function getLDAPUserList () {85 return request({86 method: "get",87 url: '/v1/ldap/user/list/'88 })89}90// è·åç¨æ·å表API91export function getLDAPUserAttribute (user) {92 return request({93 method: "get",94 url: `/v1/ldap/user/attr/${user}/`95 })96}97// è·åLDAPClass API98export function getLDAPObjectClassList () {99 return request({100 method: "get",101 url: '/v1/ldap/classes/'102 })103}104// è·åç»å表API105export function getGroupList (baseou) {106 return request({107 method: "get",108 url: `/v1/ldap/ous/${baseou||''}`109 })110}111// è·åç¨æ·åé
çæéå表API112export function getUserPermissionList (userdn) {113 return request({114 method: "get",115 url: `/v1/ldap/permission/${userdn||''}/`116 })117}118// è·åæéç»å表119export function getPermissionGroupsListApi () {120 return request({121 method: "get",122 url: `/v1/ldap/allgroups/`123 })124}125// è·åæéç»å表126export function PostLDAPGroupPermissions (data) {127 return request({128 method: "post",129 url: '/v1/ldap/save/permissions/',130 data: GenerateSignature(data),131 })132}133// æ交ldifèæ¬æ件134export function PostLDAPLdifScripts (data) {135 return request({136 method: "post",137 url: '/v1/ldap/ldif/',138 data: GenerateSignature(data),139 })140}141// è·åæéç»å表142export function GetSystemCrontabLogsApi(data) {143 return request({144 method: "get",145 url: '/v1/system/cronlogs/',146 params:GenerateSignature(data)147 })148}149// è·åaliclound Ecs å表150export function GetAliCloundEcsListApi(data) {151 return request({152 method: "get",153 url: '/v1/aliclound/ecs/list/',154 params:GenerateSignature(data)155 })156}157// è·åaliclound Ecs çæ§æ°æ®å表158export function GetAliCloundEcsMonitorDataListApi(data) {159 return request({160 method: "get",161 url: '/v1/aliclound/ecs/monitordata/',162 params: GenerateSignature(data)163 })164}165// è·åaliclound Regions å表166export function GetAliCloundRegionsListApi() {167 return request({168 method: "get",169 url: '/v1/aliclound/regions/list/',170 })171}172// è·åaliclound Tags å表173export function GetAliCloundTagsListApi(data) {174 return request({175 method: "get",176 url: '/v1/aliclound/tags/list/',177 params: GenerateSignature(data)178 })179}180// è·åaliclound è¯ä¹¦ç¶æç»è®¡181export function GetAliCloundCerificateCountApi(data) {182 return request({183 method: "get",184 url: '/v1/aliclound/cerificate/count/',185 params:data186 })187}188// è·åaliclound è¯ä¹¦ç¶æç»è®¡189export function GetAliCloundCerificateListApi(data) {190 return request({191 method: "get",192 url: '/v1/aliclound/cerificate/list/',193 params: data194 })195}196// æ£æ¥aliclound è¯ä¹¦ä¸é¨ç½²ä¸»æºä¸çè¯ä¹¦å¤±ææ¶é´æ¯å¦ä¸è³197export function GetAliCloundCerificateInvalidApi(data) {198 return request({199 method: "get",200 url: '/v1/aliclound/cerificate/invalid/',201 params: data202 })203}204// æ£æ¥aliclound è¯ä¹¦ä¸é¨ç½²ä¸»æºä¸çè¯ä¹¦å¤±ææ¶é´æ¯å¦ä¸è³205export function GetAliCloundDomainListApi(data) {206 return request({207 method: "get",208 url: '/v1/aliclound/domain/list/',209 params: data210 })211}212// æ£æ¥aliclound è¯ä¹¦ä¸é¨ç½²ä¸»æºä¸çè¯ä¹¦å¤±ææ¶é´æ¯å¦ä¸è³213export function GetAliCloundEcsStatusCountApi(data) {214 return request({215 method: "get",216 url: '/v1/aliclound/ecs/allstatus/',217 params: data218 })219}220// æ£æ¥aliclound è¯ä¹¦ä¸é¨ç½²ä¸»æºä¸çè¯ä¹¦å¤±ææ¶é´æ¯å¦ä¸è³221export function GetAliCloundRdsStatusCountApi(data) {222 return request({223 method: "get",224 url: '/v1/aliclound/rds/allstatus/',225 params:data226 })227}228// è·åç»å表API229export function GetAliCloundAccountNameListApi () {230 return request({231 method: "get",232 url: "/v1/aliclound/account/namelist/"233 })234}235// è·åçæçsshkey å
¬é¥ ç§é¥236export function GetSSHKeyPrivateAndPublicKeyApi(data) {237 return request({238 method: "post",239 url: "/v1/system/generate/sshkey/",240 data: GenerateSignature(data)241 })242}243// è·åé¿éå»å¸æ·ä½é¢244export function GetAliCloundAccountBablanceApi(data) {245 return request({246 method: "get",247 url: "/v1/aliclound/account/bablance/",248 data249 })...
signing_test.js
Source:signing_test.js
...15var expectedUnicodeSignature = 'CC0-HMAC-SHA256:x-confidentcannabis-timestamp:e289a22b9315d8652f6b92f26057f2f018f76414348844a41043d1dbd64def47';16describe('signing', function() {17 describe('generateSignature', function() {18 it('should generate a signature', function() {19 var signature = generateSignature(method, route, headers, data, apiKey, apiSecret);20 assert.equal(signature, expectedSignature);21 });22 it('should escape things to match the requirements', function() {23 var signature = generateSignature(method, route, headers, escapeData, apiKey, apiSecret);24 assert.equal(signature, expectedEscapeSignature);25 });26 it('should consider the request method', function() {27 var signature = generateSignature('POST', route, headers, data, apiKey, apiSecret);28 assert.notEqual(signature, expectedSignature);29 });30 it('should consider the request route', function() {31 var signature = generateSignature(method, route + '/other', headers, data, apiKey, apiSecret);32 assert.notEqual(signature, expectedSignature);33 });34 it('should consider the request headers', function() {35 var newHeaders = Object.assign({}, {'X-Other-Header': 'stuff'}, headers);36 var signature = generateSignature(method, route, newHeaders, data, apiKey, apiSecret);37 assert.notEqual(signature, expectedSignature);38 });39 it('should consider the request data', function() {40 var newData = Object.assign({}, {other: 'data'}, data);41 var signature = generateSignature(method, route, headers, newData, apiKey, apiSecret);42 assert.notEqual(signature, expectedSignature);43 });44 it('should consider the api credentials', function() {45 var badSignature = generateSignature(method, route, headers, data, apiKey, 'foo');46 assert.notEqual(badSignature, expectedSignature);47 var badSignature2 = generateSignature(method, route, headers, data, 'foo', apiSecret);48 assert.notEqual(badSignature2, expectedSignature);49 assert.notEqual(badSignature, badSignature2);50 });51 it('should handle unicode data', function() {52 var signature = generateSignature(method, route, headers, unicodeData, apiKey, apiSecret);53 assert.equal(signature, expectedUnicodeSignature);54 });55 });56 describe('specialEncodeComponent', function() {57 it('should handle special cases to match requirements', function() {58 assert.equal(59 specialEncodeComponent(escapeData.escapeme),60 escapedEncoded61 );62 });63 });...
Using AI Code Generation
1import generateSignature from 'storybook-root/lib/signature';2import generateSignature from 'storybook-root/signature';3import generateSignature from 'storybook-root/lib/signature';4import generateSignature from 'storybook-root/signature';5import generateSignature from 'storybook-root/lib/signature';6import generateSignature from 'storybook-root/signature';7import generateSignature from 'storybook-root/lib/signature';8import generateSignature from 'storybook-root/signature';9import generateSignature from 'storybook-root/lib/signature';10import generateSignature from 'storybook-root/signature';11import generateSignature from 'storybook-root/lib/signature';12import generateSignature from 'storybook-root/signature';13import generateSignature from 'storybook-root/lib/signature';14import generateSignature from 'storybook-root/signature';15import generateSignature from 'storybook-root/lib/signature';16import generateSignature from 'storybook-root/signature';17import generateSignature from 'storybook-root/lib/signature';18import generateSignature from 'storybook-root/signature';19import generateSignature from 'storybook-root/lib/signature';20import generateSignature from 'storybook-root/signature';
Using AI Code Generation
1import { generateSignature } from 'storybook-root';2generateSignature('hello world');3import { generateSignature } from 'storybook-root';4generateSignature('hello world');5import { generateSignature } from 'storybook-root';6generateSignature('hello world');7import { generateSignature } from 'storybook-root';8generateSignature('hello world');9import { generateSignature } from 'storybook-root';10generateSignature('hello world');11import { generateSignature } from 'storybook-root';12generateSignature('hello world');13import { generateSignature } from 'storybook-root';14generateSignature('hello world');15import { generateSignature } from 'storybook-root';16generateSignature('hello world');17import { generateSignature } from 'storybook-root';18generateSignature('hello world');19import { generateSignature } from 'storybook-root';20generateSignature('hello world');21import { generateSignature } from 'storybook-root';22generateSignature('hello world');23import { generateSignature } from 'storybook-root';24generateSignature('hello world');25import { generateSignature } from 'storybook-root';26generateSignature('hello world');27import { generateSignature } from 'storybook-root';28generateSignature('hello world');
Using AI Code Generation
1import {generateSignature} from 'storybook-root';2import {getStorybook} from '@storybook/react-native';3import {getStorybookUI} from '@storybook/react-native';4const storybook = getStorybook();5const storybookUI = getStorybookUI({port: 7007, onDeviceUI: true});6const signature = generateSignature(storybook);7export {storybook, storybookUI, signature};8import {AppRegistry} from 'react-native';9import {name as appName} from './app.json';10import {signature, storybookUI} from './test';11AppRegistry.registerComponent(appName, () => storybookUI);12AppRegistry.registerHeadlessTask('RNFirebaseBackgroundMessage', () => signature);13{14}15android {16 defaultConfig {17 }18}
Using AI Code Generation
1import { generateSignature } from 'storybook-root';2const signature = generateSignature('test');3console.log(signature);4export const generateSignature = name => {5 return `${name} signature`;6};7{8 "exports": {9 }10}11module.exports = {12 webpackFinal: async config => {13 config.resolve.alias['storybook-root'] = path.resolve(__dirname, '../');14 return config;15 },16};17module.exports = {18 webpackFinal: async config => {19 config.resolve.alias['storybook-root'] = path.resolve(__dirname, '../');20 return config;21 },22};23module.exports = {24 webpackFinal: async config => {25 config.resolve.alias['storybook-root'] = path.resolve(__dirname, '../');26 return config;27 },28};29module.exports = {30 webpackFinal: async config => {31 config.resolve.alias['storybook-root'] = path.resolve(__dirname, '../');32 return config;33 },34};35module.exports = {36 webpackFinal: async config => {37 config.resolve.alias['storybook-root'] = path.resolve(__dirname, '../');38 return config;39 },40};41module.exports = {42 webpackFinal: async config => {43 config.resolve.alias['storybook-root'] = path.resolve(__dirname, '../');44 return config;45 },46};47module.exports = {48 webpackFinal: async config => {49 config.resolve.alias['storybook-root'] = path.resolve(__dirname, '../');50 return config;51 },52};
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!!