Best Fuel code snippet using com.github.kittinunf.fuel.Fuel.String.httpPost
JiraClient.kt
Source:JiraClient.kt
1package io.github.coteji.clients2import com.github.kittinunf.fuel.core.FuelManager3import com.github.kittinunf.fuel.core.HttpException4import com.github.kittinunf.fuel.core.responseUnit5import com.github.kittinunf.fuel.gson.responseObject6import com.github.kittinunf.fuel.httpDelete7import com.github.kittinunf.fuel.httpGet8import com.github.kittinunf.fuel.httpPost9import com.github.kittinunf.fuel.httpPut10import com.github.kittinunf.result.Result.Failure11import com.github.kittinunf.result.Result.Success12import com.google.gson.Gson13import mu.KotlinLogging14import java.util.*15class JiraClient(hostUrl: String, userName: String) : Client {16 var issuesChunkSize = 10017 private val logger = KotlinLogging.logger {}18 private val defaultFieldsList = listOf("summary", "description", "labels", "status", "assignee")19 init {20 val encodedCredential =21 Base64.getEncoder().encodeToString("$userName:${System.getenv("COTEJI_JIRA_API_TOKEN")}".toByteArray())22 FuelManager.instance.baseHeaders = mapOf(23 Pair("Authorization", "Basic $encodedCredential"),24 Pair("Accept", "application/json"),25 Pair("Content-Type", "application/json")26 )27 FuelManager.instance.basePath = hostUrl28 }29 override fun getIssue(key: String): Map<String, Any> {30 val (_, _, result) = "/rest/api/latest/issue/$key"31 .httpGet()32 .responseObject<HashMap<String, Any>>()33 when (result) {34 is Failure -> {35 logger.error { String(result.error.errorData) }36 throw JiraClientException("Couldn't get issue with key $key", result.getException())37 }38 is Success -> {39 logger.debug { "Issue $key successfully retrieved" }40 return result.get()41 }42 }43 }44 override fun searchIssues(jql: String): List<Map<String, Any>> {45 val result: MutableList<Map<String, Any>> = mutableListOf()46 val total: Int47 var startAt = 048 val body = SearchPayload(jql, defaultFieldsList, issuesChunkSize, startAt)49 val (_, _, reqResult) = "/rest/api/latest/search"50 .httpPost()51 .body(Gson().toJson(body))52 .responseObject<HashMap<String, Any>>()53 when (reqResult) {54 is Failure -> {55 logger.error { String(reqResult.error.errorData) }56 throw JiraClientException(reqResult.getException().message, reqResult.getException())57 }58 is Success -> {59 total = (reqResult.get()["total"] as Double).toInt()60 result.addAll(reqResult.get()["issues"] as List<Map<String, Any>>)61 }62 }63 while (startAt + issuesChunkSize < total) {64 startAt += issuesChunkSize65 val (_, _, nextReqResult) = "/rest/api/latest/search"66 .httpPost()67 .body(Gson().toJson(body.copy(startAt = startAt)))68 .responseObject<HashMap<String, Any>>()69 when (nextReqResult) {70 is Failure -> {71 logger.error { String(nextReqResult.error.errorData) }72 throw JiraClientException(nextReqResult.getException().message, nextReqResult.getException())73 }74 is Success -> {75 result.addAll(nextReqResult.get()["issues"] as List<Map<String, Any>>)76 }77 }78 }79 return result80 }81 override fun deleteIssues(keys: List<String>) {82 for (key in keys) {83 val (_, _, result) = "/rest/api/latest/issue/$key"84 .httpDelete(listOf(Pair("deleteSubtasks", "true")))85 .responseUnit()86 when (result) {87 is Failure -> {88 logger.error { String(result.error.errorData) }89 throw JiraClientException("Couldn't delete issue with key $key", result.getException())90 }91 is Success -> {92 logger.debug { "Issue $key was deleted" }93 }94 }95 }96 }97 override fun createIssues(payload: List<Map<String, Any>>): List<String> {98 val body = mapOf(Pair("issueUpdates", payload))99 val (_, _, result) = "/rest/api/latest/issue/bulk"100 .httpPost()101 .body(Gson().toJson(body))102 .responseObject<HashMap<String, Any>>()103 when (result) {104 is Failure -> {105 logger.error { String(result.error.errorData) }106 throw JiraClientException("Couldn't create issues in bulk", result.getException())107 }108 is Success -> {109 val issues = result.get()["issues"] as List<Map<String, Any>>110 val errors = result.get()["errors"] as List<Map<String, Any>>111 errors.forEach { logger.error { it } }112 val keys = issues.map { it["key"] } as List<String>113 logger.debug { "Created issues: $keys" }114 return keys115 }116 }117 }118 override fun editIssue(key: String, payload: Map<String, Any>, notifyOnUpdates: Boolean) {119 val (_, _, result) = "/rest/api/latest/issue/$key"120 .httpPut(listOf(Pair("notifyUsers", notifyOnUpdates)))121 .body(Gson().toJson(payload))122 .responseUnit()123 when (result) {124 is Failure -> {125 logger.error { String(result.error.errorData) }126 throw JiraClientException("Couldn't edit issue with key $key", result.getException())127 }128 is Success -> {129 logger.debug { "Issue $key was updated successfully" }130 }131 }132 }133 override fun getProjectId(project: String): String {134 val (_, _, result) = "/rest/api/latest/project/$project"135 .httpGet()136 .responseObject<HashMap<String, Any>>()137 when (result) {138 is Failure -> {139 logger.error { String(result.error.errorData) }140 throw JiraClientException("Couldn't get project info by key $project", result.getException())141 }142 is Success -> {143 logger.debug { "Project $project info successfully retrieved" }144 return result.get()["id"] as String145 }146 }147 }148 override fun getIssueTypeId(issueType: String, projectId: String): String {149 val (_, _, result) = "/rest/api/latest/issuetype/project"150 .httpGet(listOf(Pair("projectId", projectId)))151 .responseObject<List<HashMap<String, Any>>>()152 when (result) {153 is Failure -> {154 logger.error { String(result.error.errorData) }155 throw JiraClientException("Couldn't get issue types for project ID $projectId", result.getException())156 }157 is Success -> {158 logger.debug { "Issue types for Project ID $projectId successfully retrieved" }159 val issueTypeInfo = result.get().firstOrNull { it["name"] == issueType }160 ?: throw JiraClientException("Couldn't find issue type '$issueType'", null)161 return issueTypeInfo["id"] as String162 }163 }164 }165}166data class SearchPayload(val jql: String, val fields: List<String>, val maxResults: Int, val startAt: Int)167class JiraClientException(message: String?, cause: Throwable?) : RuntimeException(message, cause)...
KtorExercises1.kt
Source:KtorExercises1.kt
1package lodz.jug.kotlin.ktorwork.one.exercises2import com.github.kittinunf.fuel.core.FuelError3import com.github.kittinunf.fuel.core.Response4import com.github.kittinunf.fuel.httpDelete5import com.github.kittinunf.fuel.httpGet6import com.github.kittinunf.fuel.httpPost7import com.github.kittinunf.fuel.httpPut8import com.github.kittinunf.result.Result9import com.google.gson.Gson10import io.kotlintest.shouldBe11import org.amshove.kluent.`should contain`12import org.amshove.kluent.shouldBeEqualTo13import org.amshove.kluent.shouldBeInstanceOf14import org.amshove.kluent.shouldEqualTo15import org.assertj.core.internal.bytebuddy.utility.RandomString16import org.junit.Test17class KtorExercises1 {18 @Test19 fun `should put number`() {20 val (_, response, result: Result<String, FuelError>) = "http://localhost:${KtorExercises1Server.serverPort}/addNumber/2"21 .httpPost().responseString()22 response.statusCode shouldEqualTo (200)23 result shouldBeInstanceOf (Result.Success::class)24 result.get() shouldBeEqualTo ("added number 2")25 }26 @Test27 fun `default 404 page should be defined`() {28 repeat(5) {29 val random = RandomString.make(5)30 val (_, response: Response, _) = "http://localhost:${KtorExercises1Server.serverPort}/$random"31 .httpPost().response()32 response.statusCode shouldEqualTo 40433 String(response.data) shouldBeEqualTo "try again later"34 }35 }36 @Test37 fun `returns BadRequest when number can not be parsed`() {38 repeat(5) {39 val random = RandomString.make(5)40 val (_, response: Response, _) = "http://localhost:${KtorExercises1Server.serverPort}/addNumber/$random"41 .httpPost().responseString()42 response.statusCode shouldEqualTo 40043 String(response.data) `should contain` "unable to retrieve parameter"44 }45 }46 @Test47 fun `removes all data`(){48 val (_, response, result) = "http://localhost:${KtorExercises1Server.serverPort}/all"49 .httpDelete().responseString()50 response.statusCode shouldEqualTo 20051 result.get() shouldBe "all data removed!!!"52 }53 @Test54 fun `stores and retrieves numbers`() {55 //given56 "http://localhost:${KtorExercises1Server.serverPort}/all".httpDelete().response()57 (1 .. 5).map {58 val (_, response: Response, _) = "http://localhost:${KtorExercises1Server.serverPort}/addNumber/$it"59 .httpPost().response()60 response.statusCode shouldEqualTo 20061 }62 val (_, response, result) = "http://localhost:${KtorExercises1Server.serverPort}/numbers"63 .httpGet().responseString()64 response.statusCode shouldBe 20065 result.get() shouldBe """{"numbers":[1,2,3,4,5]}"""66 }67 data class InitRequest(val numbers:List<Int>)68 @Test69 fun `send and receive json`() {70 val payload=Gson().toJson(InitRequest(listOf(10,11,12)))71 val (_, resetResponse,resetResult)="http://localhost:${KtorExercises1Server.serverPort}/reset"72 .httpPut().jsonBody(payload).responseString()73 resetResponse.statusCode shouldBe 20074 resetResult.get() shouldBe "database reset"75 val (_, selectAll, selectAllResult) = "http://localhost:${KtorExercises1Server.serverPort}/numbers"76 .httpGet().responseString()77 selectAll.statusCode shouldBe 20078 selectAllResult.get() shouldBe """{"numbers":[10,11,12]}"""79 }80}...
KtorAnswers1.kt
Source:KtorAnswers1.kt
1package lodz.jug.kotlin.ktorwork.one.answers2import com.github.kittinunf.fuel.core.FuelError3import com.github.kittinunf.fuel.core.Response4import com.github.kittinunf.fuel.httpDelete5import com.github.kittinunf.fuel.httpGet6import com.github.kittinunf.fuel.httpPost7import com.github.kittinunf.fuel.httpPut8import com.github.kittinunf.result.Result9import com.google.gson.Gson10import io.kotlintest.shouldBe11import org.amshove.kluent.`should contain`12import org.amshove.kluent.shouldBeEqualTo13import org.amshove.kluent.shouldBeInstanceOf14import org.amshove.kluent.shouldEqualTo15import org.assertj.core.internal.bytebuddy.utility.RandomString16import org.junit.Test17class KtorAnswers1 {18 @Test19 fun `should put number`() {20 val (_, response, result: Result<String, FuelError>) = "http://localhost:${KtorAnswers1Server.serverPort}/addNumber/2"21 .httpPost().responseString()22 response.statusCode shouldEqualTo (200)23 result shouldBeInstanceOf (Result.Success::class)24 result.get() shouldBeEqualTo ("added number 2")25 }26 @Test27 fun `default 404 page should be defined`() {28 repeat(5) {29 val random = RandomString.make(5)30 val (_, response: Response, _) = "http://localhost:${KtorAnswers1Server.serverPort}/$random"31 .httpPost().response()32 response.statusCode shouldEqualTo 40433 String(response.data) shouldBeEqualTo "try again later"34 }35 }36 @Test37 fun `returns BadRequest when number can not be parsed`() {38 repeat(5) {39 val random = RandomString.make(5)40 val (_, response: Response, _) = "http://localhost:${KtorAnswers1Server.serverPort}/addNumber/$random"41 .httpPost().responseString()42 response.statusCode shouldEqualTo 40043 String(response.data) `should contain` "unable to retrieve parameter"44 }45 }46 @Test47 fun `removes all data`(){48 val (_, response, result) = "http://localhost:${KtorAnswers1Server.serverPort}/all"49 .httpDelete().responseString()50 response.statusCode shouldEqualTo 20051 result.get() shouldBe "all data removed!!!"52 }53 @Test54 fun `stores and retrieves numbers`() {55 //given56 "http://localhost:${KtorAnswers1Server.serverPort}/all".httpDelete().response()57 (1 .. 5).map {58 val (_, response: Response, _) = "http://localhost:${KtorAnswers1Server.serverPort}/addNumber/$it"59 .httpPost().response()60 response.statusCode shouldEqualTo 20061 }62 val (_, response, result) = "http://localhost:${KtorAnswers1Server.serverPort}/numbers"63 .httpGet().responseString()64 response.statusCode shouldBe 20065 result.get() shouldBe """{"numbers":[1,2,3,4,5]}"""66 }67 data class InitRequest(val numbers:List<Int>)68 @Test69 fun `send and receive json`() {70 val payload=Gson().toJson(InitRequest(listOf(10,11,12)))71 val (_, resetResponse,resetResult)="http://localhost:${KtorAnswers1Server.serverPort}/reset"72 .httpPut().jsonBody(payload).responseString()73 resetResponse.statusCode shouldBe 20074 resetResult.get() shouldBe "database reset"75 val (_, selectAll, selectAllResult) = "http://localhost:${KtorAnswers1Server.serverPort}/numbers"76 .httpGet().responseString()77 selectAll.statusCode shouldBe 20078 selectAllResult.get() shouldBe """{"numbers":[10,11,12]}"""79 }80}...
RestAPI.kt
Source:RestAPI.kt
1package org.intellij.plugin.zeppelin.api.remote.rest2import com.github.kittinunf.fuel.core.FuelError3import com.github.kittinunf.fuel.core.Response4import com.github.kittinunf.fuel.httpDelete5import com.github.kittinunf.fuel.httpGet6import com.github.kittinunf.fuel.httpPost7import com.github.kittinunf.fuel.httpPut8import com.github.kittinunf.fuel.moshi.responseObject9import com.github.kittinunf.result.Result10import org.intellij.plugin.zeppelin.utils.JsonParser11open class RestAPI(host: String, port: Int, https: Boolean = false) {12 private val protocol: String = if (https) "https" else "http"13 private val apiUrl: String = "$protocol://$host:$port/api"14 fun performGetRequest(uri: String,15 credentials: String?): RestResponseMessage {16 val headers = credentials?.let { mapOf("Cookie" to credentials) } ?: emptyMap()17 val (_, _, result) = "$apiUrl$uri".httpGet()18 .header(headers)19 .timeout(10000)20 .responseObject<RestResponseMessage>()21 return getResponse(result)22 }23 fun performPostData(uri: String, data: Map<String, Any>, credentials: String?): RestResponseMessage {24 val headers = mapOf("Charset" to "UTF-8", "Content-Type" to "application/json").plus(25 credentials?.let { mapOf("Cookie" to credentials) } ?: emptyMap())26 val (_, _, result) = "$apiUrl$uri".httpPost()27 .header(headers)28 .body(JsonParser.toJson(data))29 .timeout(10000)30 .responseObject<RestResponseMessage>()31 return getResponse(result)32 }33 fun performDeleteData(uri: String, credentials: String?): RestResponseMessage {34 val headers = mapOf("Charset" to "UTF-8", "Content-Type" to "application/json").plus(35 credentials?.let { mapOf("Cookie" to credentials) } ?: emptyMap())36 val (_, _, result) = "$apiUrl$uri".httpDelete()37 .header(headers)38 .timeout(10000)39 .responseObject<RestResponseMessage>()40 return getResponse(result)41 }42 fun performPostForm(uri: String, params: Map<String, String>): Pair<Response, RestResponseMessage> {43 val paramString = "?" + params.map { it.key + "=" + it.value }.joinToString("&")44 val headers = mapOf("Charset" to "UTF-8", "Content-Type" to "application/x-www-form-urlencoded")45 val (_, response, result) = "$apiUrl$uri$paramString".httpPost()46 .header(headers)47 .timeout(10000)48 .responseObject<RestResponseMessage>()49 return Pair(response, getResponse(result))50 }51 fun performPutData(uri: String, data: Map<String, Any>,52 credentials: String?): RestResponseMessage {53 val headers = mapOf("Charset" to "UTF-8", "Content-Type" to "application/json").plus(54 credentials?.let { mapOf("Cookie" to credentials) } ?: emptyMap())55 val (_, _, result) = "$apiUrl$uri".httpPut()56 .header(headers)57 .body(JsonParser.toJson(data))58 .timeout(10000)59 .responseObject<RestResponseMessage>()60 return getResponse(result)61 }62 private fun getResponse(63 result: Result<RestResponseMessage, FuelError>): RestResponseMessage {64 val (obj, errors) = result65 if (errors != null) {66 throw errors67 }68 return obj!!69 }70}71data class RestResponseMessage(val status: String, val message: String, val body: Any = Any())...
QrScanResultDialog.kt
Source:QrScanResultDialog.kt
1package com.example.easyin2import android.app.Dialog3import android.content.Context4import kotlinx.android.synthetic.main.qr_result_dialog.*5import com.github.kittinunf.fuel.Fuel6import com.github.kittinunf.fuel.core.FuelError7import com.github.kittinunf.fuel.core.Request8import com.github.kittinunf.fuel.core.Response9import com.github.kittinunf.fuel.core.awaitResult10import com.github.kittinunf.fuel.core.extensions.jsonBody11import com.github.kittinunf.fuel.httpGet12import com.github.kittinunf.fuel.httpPost13import com.github.kittinunf.fuel.json.jsonDeserializer14import com.github.kittinunf.fuel.json.responseJson15import com.github.kittinunf.result.Result;16import org.json.JSONObject17import kotlin.reflect.typeOf18class QrScanResultDialog(var context : Context) {19 private lateinit var dialog: Dialog20 private var qrResultUrl : String = ""21 var email : String = ""22 init {23 initDialog()24 }25 private fun initDialog() {26 dialog = Dialog(context)27 dialog.setContentView(R.layout.qr_result_dialog)28 dialog.setCancelable(false)29 Onclicks()30 }31 fun show(qrResult: String) {32 qrResultUrl = qrResult33 dialog.scannedText.text = qrResultUrl34 email = qrResultUrl35 dialog.show()36 }37 private fun Onclicks() {38 dialog.postResult.setOnClickListener {39 postResult(qrResultUrl)40 }41 dialog.cancelDialog.setOnClickListener {42 dialog.dismiss()43 }44 }45// Adding an identity to the system46private fun postResult(Url: String) {47 val dataPOST = JSONObject()48 dataPOST.put("email", email)49 println(dataPOST)50 "http://oneeasyin.com:8080/identity/postidentity"51 .httpPost()52 .header("Content-Type" to "application/json")53 .body(dataPOST.toString()).responseJson {54 request, response, result ->55 when (result) {56 is Result.Failure -> {57 val ex = result.getException()58 println(ex)59 }60 is Result.Success -> {61 val data = result.get().obj()62 println(data)63 }64 }65 }66 }67 }...
Request.kt
Source:Request.kt
1package io.github.chapeco.Utilities2import com.github.kittinunf.fuel.Fuel3import com.github.kittinunf.fuel.core.FuelError4import com.github.kittinunf.fuel.core.FuelManager5import com.github.kittinunf.fuel.core.Request6import com.github.kittinunf.fuel.httpGet7import com.github.kittinunf.fuel.httpPost8import com.github.kittinunf.result.Result9import kotlinx.serialization.json.JSON10class Request11{12 private val endpoint = System.getProperty("testrailEndpoint")13 private val indexBase = "index.php?/api/v2/"14 private val username = System.getProperty("testrailUsername")15 val password = System.getProperty("testrailPassword")16 init {17 FuelManager.instance.basePath = endpoint + indexBase18 FuelManager.instance.baseHeaders = hashMapOf(19 "Content-Type" to "application/json"20 )21 println(FuelManager.instance.basePath)22 }23 fun Get(endpoint: String): String?24 {25 val (request, response, result) = endpoint.httpGet()26 .authenticate(username,password)27 .responseString()28 val (data, error) = result29 if(error == null)30 {31 return data32 }33 else34 {35 throw error36 }37 }38 fun Post(endpoint: String, jsonPayload: String = ""): String?39 {40 println(jsonPayload.replace(":\"null\"",":null"))41 val (request, response, result) = endpoint.httpPost()42 .authenticate(username,password)43 .body(jsonPayload.replace(":\"null\"",":null"))44 .also { println(it) }45 .responseString()46 val (data, error) = result47 if(error == null)48 {49 println(data)50 return data51 }52 else53 {54 throw error55 }56 }57}...
GraphRequest.kt
Source:GraphRequest.kt
1package com.github.ghostbear.kotlinanilistbot.interfaces.base2import com.fasterxml.jackson.databind.DeserializationFeature3import com.fasterxml.jackson.databind.ObjectMapper4import com.fasterxml.jackson.module.kotlin.registerKotlinModule5import com.github.ghostbear.kotlinanilistbot.AniList6import com.github.ghostbear.kotlinanilistbot.interfaces.IGraphRequest7import com.github.kittinunf.fuel.core.FuelError8import com.github.kittinunf.fuel.core.Request9import com.github.kittinunf.fuel.core.Response10import com.github.kittinunf.fuel.httpPost11import com.github.kittinunf.fuel.jackson.responseObject12import com.github.kittinunf.result.Result13import com.taskworld.kraph.Kraph14abstract class GraphRequest : IGraphRequest {15 override val url: String16 get() = AniList.url17 override val header: HashMap<String, Any>18 get() = AniList.headers19 private val defualt = mapOf("page" to 0, "perPage" to 5)20 fun pagedQuery(parameters: Map<String, Any> = defualt, _object: Kraph.FieldBuilder.() -> Unit): Kraph {21 return Kraph {22 query {23 fieldObject("Page", parameters) {24 _object.invoke(this)25 }26 }27 }28 }29 inline fun <reified T : Any> postRequest(noinline handler: (Request, Response, Result<T, FuelError>) -> Unit) {30 val mapper = ObjectMapper().registerKotlinModule()31 .configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true)32 return this.url.httpPost().header(header).body(query().toRequestString()).responseObject<T>(mapper, handler::invoke)33 }34}...
App.kt
Source:App.kt
1package amaze.starter.kit2import com.github.kittinunf.fuel.core.FuelError3import com.github.kittinunf.fuel.gson.jsonBody4import com.github.kittinunf.fuel.gson.responseObject5import com.github.kittinunf.fuel.httpPost6import com.github.kittinunf.result.Result7val SERVER_URL: String = TODO("replace this placeholder with the server url (e.g. https://myserver.com)")8fun main() {9 when (val result = postQuery()) {10 is Result.Success -> println("Success!! - ${result.value.data.sampleQuery.aString}")11 is Result.Failure -> println("Your request failed")12 }13}14data class GraphQLQuery(val query: String)15val query = """16 query {17 sampleQuery {18 aString19 }20 }21 """.trimIndent()22data class GraphQLResponse(var data: GraphQLData) {23 data class GraphQLData(var sampleQuery: SampleQuery) {24 data class SampleQuery(var aString: String)25 }26}27private fun postQuery(): Result<GraphQLResponse, FuelError> {28 val (_, _, result) =29 "$SERVER_URL/graphql"30 .httpPost()31 .jsonBody(GraphQLQuery(query))32 .responseObject<GraphQLResponse>()33 return result34}...
String.httpPost
Using AI Code Generation
1import com.github.kittinunf.fuel.Fuel2fun main(args: Array<String>) {3 println(request)4 println(response)5 println(result.get())6}
String.httpPost
Using AI Code Generation
1String.httpPost(listOf("name" to "John Doe", "age" to 27)) .responseString { request, response, result -> println(request) println(response) println(result) }2String.httpPut(listOf("name" to "John Doe", "age" to 27)) .responseString { request, response, result -> println(request) println(response) println(result) }3String.httpPatch(listOf("name" to "John Doe", "age" to 27)) .responseString { request, response, result -> println(request) println(response) println(result) }4String.httpDelete().responseString { request, response, result -> println(request) println(response) println(result) }5String.httpHead().responseString { request, response, result -> println(request) println(response) println(result) }6String.httpOptions().responseString { request, response, result -> println(request) println(response) println(result) }7String.httpTrace().responseString { request, response, result -> println(request) println(response) println(result) }8String.httpConnect().responseString { request, response, result -> println(request) println(response) println(result) }9String.httpDownload().destination { response, url -> File.createTempFile("download", ".tmp") } .response { request, response, result -> println(request) println(response) println(result) }10String.httpUpload().source { request, url -> File.createTempFile("upload", ".tmp") } .response { request
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!!