Best Citrus code snippet using com.consol.citrus.kubernetes.message.KubernetesMessageHeaders.KubernetesMessageHeaders
Source:KubernetesMessageConverter.java
...44 public Message convertInbound(KubernetesCommand<?> command, KubernetesEndpointConfiguration endpointConfiguration, TestContext context) {45 KubernetesResponse response = new KubernetesResponse();46 KubernetesMessage message = KubernetesMessage.response(response);47 response.setCommand(command.getName());48 message.setHeader(KubernetesMessageHeaders.COMMAND, response.getCommand());49 for (Map.Entry<String, Object> header : createMessageHeaders(command).entrySet()) {50 message.setHeader(header.getKey(), header.getValue());51 }52 CommandResult<?> commandResult = command.getCommandResult();53 if (commandResult != null) {54 if (commandResult.getResult() != null) {55 response.setResult(commandResult.getResult());56 }57 if (commandResult.hasError()) {58 response.setError(commandResult.getError().getMessage());59 }60 if (commandResult instanceof WatchEventResult) {61 response.setAction(((WatchEventResult) commandResult).getAction().name());62 message.setHeader(KubernetesMessageHeaders.ACTION, ((WatchEventResult) commandResult).getAction().name());63 }64 }65 return message;66 }67 /**68 * Creates a new kubernetes command message model object from message headers.69 * @param commandName70 * @return71 */72 private KubernetesCommand<?> getCommandByName(String commandName) {73 if (!StringUtils.hasText(commandName)) {74 throw new CitrusRuntimeException("Missing command name property");75 }76 switch (commandName) {77 case "info":78 return new Info();79 case "list-events":80 return new ListEvents();81 case "list-endpoints":82 return new ListEndpoints();83 case "create-pod":84 return new CreatePod();85 case "get-pod":86 return new GetPod();87 case "delete-pod":88 return new DeletePod();89 case "list-pods":90 return new ListPods();91 case "watch-pods":92 return new WatchPods();93 case "list-namespaces":94 return new ListNamespaces();95 case "watch-namespaces":96 return new WatchNamespaces();97 case "list-nodes":98 return new ListNodes();99 case "watch-nodes":100 return new WatchNodes();101 case "list-replication-controllers":102 return new ListReplicationControllers();103 case "watch-replication-controllers":104 return new WatchReplicationControllers();105 case "create-service":106 return new CreateService();107 case "get-service":108 return new GetService();109 case "delete-service":110 return new DeleteService();111 case "list-services":112 return new ListServices();113 case "watch-services":114 return new WatchServices();115 default:116 throw new CitrusRuntimeException("Unknown kubernetes command: " + commandName);117 }118 }119 /**120 * Reads basic command information and converts to message headers.121 * @param command122 * @return123 */124 private Map<String,Object> createMessageHeaders(KubernetesCommand<?> command) {125 Map<String, Object> headers = new HashMap<String, Object>();126 headers.put(KubernetesMessageHeaders.COMMAND, command.getName());127 for (Map.Entry<String, Object> entry : command.getParameters().entrySet()) {128 headers.put(entry.getKey(), entry.getValue());129 }130 return headers;131 }132 /**133 * Reads Citrus internal mail message model object from message payload. Either payload is actually a mail message object or134 * XML payload String is unmarshalled to mail message object.135 *136 * @param message137 * @param endpointConfiguration138 * @return139 */140 private KubernetesCommand<?> getCommand(Message message, KubernetesEndpointConfiguration endpointConfiguration) {141 Object payload = message.getPayload();142 KubernetesCommand<?> command;143 if (message instanceof KubernetesMessage) {144 command = createCommandFromRequest(message.getPayload(KubernetesRequest.class));145 } else if (message.getHeaders().containsKey(KubernetesMessageHeaders.COMMAND) &&146 (payload == null || !StringUtils.hasText(payload.toString()))) {147 command = getCommandByName(message.getHeader(KubernetesMessageHeaders.COMMAND).toString());148 } else if (payload instanceof KubernetesCommand) {149 command = (KubernetesCommand) payload;150 } else {151 try {152 KubernetesRequest request = endpointConfiguration.getObjectMapper()153 .readValue(message.getPayload(String.class), KubernetesRequest.class);154 command = createCommandFromRequest(request);155 } catch (IOException e) {156 throw new CitrusRuntimeException("Failed to read kubernetes request from payload", e);157 }158 }159 if (command == null) {160 throw new CitrusRuntimeException("Unable to create proper Kubernetes command from payload: " + payload);161 }162 return command;163 }164 private KubernetesCommand<?> createCommandFromRequest(KubernetesRequest request) {165 KubernetesCommand<?> command = getCommandByName(request.getCommand());166 if (StringUtils.hasText(request.getName())) {167 command.getParameters().put(KubernetesMessageHeaders.NAME, request.getName());168 }169 if (StringUtils.hasText(request.getNamespace())) {170 command.getParameters().put(KubernetesMessageHeaders.NAMESPACE, request.getNamespace());171 }172 if (StringUtils.hasText(request.getLabel())) {173 command.getParameters().put(KubernetesMessageHeaders.LABEL, request.getLabel());174 }175 return command;176 }177}...
Source:AbstractKubernetesCommand.java
...15 */16package com.consol.citrus.kubernetes.command;17import com.consol.citrus.context.TestContext;18import com.consol.citrus.exceptions.CitrusRuntimeException;19import com.consol.citrus.kubernetes.message.KubernetesMessageHeaders;20import io.fabric8.kubernetes.api.model.KubernetesResource;21import org.slf4j.Logger;22import org.slf4j.LoggerFactory;23import org.springframework.util.StringUtils;24import java.util.*;25/**26 * @author Christoph Deppisch27 * @since 2.728 */29public abstract class AbstractKubernetesCommand<R extends KubernetesResource, T extends KubernetesCommand<R>> implements KubernetesCommand<R> {30 /** Logger */31 protected Logger log = LoggerFactory.getLogger(getClass());32 /** Self reference for generics support */33 private final T self;34 /** Command name */35 private final String name;36 /** Command parameters */37 private Map<String, Object> parameters = new HashMap<>();38 /** Command result if any */39 private CommandResult<R> commandResult;40 /** Optional command result validation */41 private CommandResultCallback<R> resultCallback;42 /**43 * Default constructor initializing the command name.44 * @param name45 */46 public AbstractKubernetesCommand(String name) {47 this.name = name;48 this.self = (T) this;49 }50 /**51 * Checks existence of command parameter.52 * @param parameterName53 * @return54 */55 protected boolean hasParameter(String parameterName) {56 return getParameters().containsKey(parameterName);57 }58 /**59 * Gets the kubernetes command parameter.60 * @return61 */62 protected String getParameter(String parameterName, TestContext context) {63 if (getParameters().containsKey(parameterName)) {64 return context.replaceDynamicContentInString(getParameters().get(parameterName).toString());65 } else {66 throw new CitrusRuntimeException(String.format("Missing kubernetes command parameter '%s'", parameterName));67 }68 }69 @Override70 public CommandResult<R> getCommandResult() {71 return commandResult;72 }73 /**74 * Sets the command result if any.75 * @param commandResult76 */77 protected void setCommandResult(CommandResult<R> commandResult) {78 this.commandResult = commandResult;79 }80 @Override81 public String getName() {82 return name;83 }84 @Override85 public Map<String, Object> getParameters() {86 return parameters;87 }88 /**89 * Sets the command parameters.90 * @param parameters91 */92 public void setParameters(Map<String, Object> parameters) {93 this.parameters = parameters;94 }95 /**96 * Adds command parameter to current command.97 * @param name98 * @param value99 * @return100 */101 public T withParam(String name, String value) {102 parameters.put(name, value);103 return self;104 }105 @Override106 public T validate(CommandResultCallback<R> callback) {107 this.resultCallback = callback;108 return self;109 }110 @Override111 public CommandResultCallback<R> getResultCallback() {112 return resultCallback;113 }114 @Override115 public T label(String key, String value) {116 if (!hasParameter(KubernetesMessageHeaders.LABEL)) {117 withParam(KubernetesMessageHeaders.LABEL, key + "=" + value);118 } else {119 withParam(KubernetesMessageHeaders.LABEL, getParameters().get(KubernetesMessageHeaders.LABEL) + "," + key + "=" + value);120 }121 return self;122 }123 @Override124 public T label(String key) {125 if (!hasParameter(KubernetesMessageHeaders.LABEL)) {126 withParam(KubernetesMessageHeaders.LABEL, key);127 } else {128 withParam(KubernetesMessageHeaders.LABEL, getParameters().get(KubernetesMessageHeaders.LABEL) + "," + key);129 }130 return self;131 }132 @Override133 public T namespace(String key) {134 withParam(KubernetesMessageHeaders.NAMESPACE, key);135 return self;136 }137 @Override138 public T name(String key) {139 withParam(KubernetesMessageHeaders.NAME, key);140 return self;141 }142 @Override143 public T withoutLabel(String key, String value) {144 if (!hasParameter(KubernetesMessageHeaders.LABEL)) {145 withParam(KubernetesMessageHeaders.LABEL, key + "!=" + value);146 } else {147 withParam(KubernetesMessageHeaders.LABEL, getParameters().get(KubernetesMessageHeaders.LABEL) + "," + key + "!=" + value);148 }149 return self;150 }151 @Override152 public T withoutLabel(String key) {153 if (!hasParameter(KubernetesMessageHeaders.LABEL)) {154 withParam(KubernetesMessageHeaders.LABEL, "!" + key);155 } else {156 withParam(KubernetesMessageHeaders.LABEL, getParameters().get(KubernetesMessageHeaders.LABEL) + ",!" + key);157 }158 return self;159 }160 /**161 * Reads labels from expression string.162 * @param labelExpression163 * @param context164 * @return165 */166 protected Map<String, String> getLabels(String labelExpression, TestContext context) {167 Map<String, String> labels = new HashMap<>();168 Set<String> values = StringUtils.commaDelimitedListToSet(labelExpression);169 for (String item : values) {170 if (item.contains("!=")) {...
Source:AbstractClientCommand.java
...15 */16package com.consol.citrus.kubernetes.command;17import com.consol.citrus.context.TestContext;18import com.consol.citrus.kubernetes.client.KubernetesClient;19import com.consol.citrus.kubernetes.message.KubernetesMessageHeaders;20import io.fabric8.kubernetes.api.model.KubernetesResource;21import io.fabric8.kubernetes.client.dsl.ClientMixedOperation;22import io.fabric8.kubernetes.client.dsl.ClientNonNamespaceOperation;23import org.springframework.util.StringUtils;24/**25 * @author Christoph Deppisch26 * @since 2.727 */28public abstract class AbstractClientCommand<O extends ClientNonNamespaceOperation, R extends KubernetesResource, T extends KubernetesCommand<R>> extends AbstractKubernetesCommand<R, T> {29 /**30 * Default constructor initializing the command name.31 *32 * @param name33 */34 public AbstractClientCommand(String name) {35 super(name);36 }37 @Override38 public final void execute(KubernetesClient kubernetesClient, TestContext context) {39 O operation = operation(kubernetesClient, context);40 if (hasParameter(KubernetesMessageHeaders.LABEL)) {41 operation.withLabels(getLabels(getParameters().get(KubernetesMessageHeaders.LABEL).toString(), context));42 operation.withoutLabels(getWithoutLabels(getParameters().get(KubernetesMessageHeaders.LABEL).toString(), context));43 }44 if (hasParameter(KubernetesMessageHeaders.NAME)) {45 operation = (O) operation.withName(context.replaceDynamicContentInString(getParameters().get(KubernetesMessageHeaders.NAME).toString()));46 }47 if (operation instanceof ClientMixedOperation) {48 if (hasParameter(KubernetesMessageHeaders.NAMESPACE)) {49 operation = (O) ((ClientMixedOperation) operation).inNamespace(context.replaceDynamicContentInString(getParameters().get(KubernetesMessageHeaders.NAMESPACE).toString()));50 } else if (StringUtils.hasText(kubernetesClient.getClient().getNamespace())) {51 operation = (O) ((ClientMixedOperation) operation).inNamespace(kubernetesClient.getClient().getNamespace());52 } else {53 operation = (O) ((ClientMixedOperation) operation).inAnyNamespace();54 }55 }56 execute(operation, context);57 }58 /**59 * Execute the mixed operation60 * @param operation61 * @param context62 */63 protected abstract void execute(O operation, TestContext context);...
KubernetesMessageHeaders
Using AI Code Generation
1package com.consol.citrus.kubernetes;2import com.consol.citrus.annotations.CitrusTest;3import com.consol.citrus.dsl.junit.JUnit4CitrusTestDesigner;4import com.consol.citrus.kubernetes.message.KubernetesMessageHeaders;5import org.junit.Test;6public class KubernetesMessageHeadersTest extends JUnit4CitrusTestDesigner {7 public void kubernetesMessageHeaders() {8 echo("KubernetesMessageHeaders");9 echo("KubernetesMessageHeaders.getKubernetesApiVersion()");10 echo(KubernetesMessageHeaders.getKubernetesApiVersion());11 echo("KubernetesMessageHeaders.getKubernetesKind()");12 echo(KubernetesMessageHeaders.getKubernetesKind());13 echo("KubernetesMessageHeaders.getKubernetesMetadata()");14 echo(KubernetesMessageHeaders.getKubernetesMetadata());15 echo("KubernetesMessageHeaders.getKubernetesMetadataName()");16 echo(KubernetesMessageHeaders.getKubernetesMetadataName());17 echo("KubernetesMessageHeaders.getKubernetesMetadataNamespace()");18 echo(KubernetesMessageHeaders.getKubernetesMetadataNamespace());19 echo("KubernetesMessageHeaders.getKubernetesMetadataUid()");20 echo(KubernetesMessageHeaders.getKubernetesMetadataUid());21 echo("KubernetesMessageHeaders.getKubernetesMetadataResourceVersion()");22 echo(KubernetesMessageHeaders.getKubernetesMetadataResourceVersion());23 echo("KubernetesMessageHeaders.getKubernetesMetadataCreationTimestamp()");24 echo(KubernetesMessageHeaders.getKubernetesMetadataCreationTimestamp());25 echo("KubernetesMessageHeaders.getKubernetesMetadataDeletionTimestamp()");26 echo(KubernetesMessageHeaders.getKubernetesMetadataDeletionTimestamp());27 echo("KubernetesMessageHeaders.getKubernetesMetadataLabels()");28 echo(KubernetesMessageHeaders.getKubernetesMetadataLabels());29 echo("KubernetesMessageHeaders.getKubernetesMetadataAnnotations()");30 echo(KubernetesMessageHeaders.getKubernetesMetadataAnnotations());31 echo("KubernetesMessageHeaders.getKubernetesMetadataOwnerReferences()");32 echo(KubernetesMessageHeaders.getKubernetesMetadataOwnerReferences());33 echo("KubernetesMessageHeaders.getKubernetesMetadataFinalizers()");34 echo(KubernetesMessageHeaders.getKubernetesMetadataFinalizers());35 echo("KubernetesMessageHeaders.getKubernetesMetadataClusterName()");36 echo(KubernetesMessageHeaders.getKubernetesMetadataClusterName());37 echo("KubernetesMessageHeaders.getKubernetesSpec()");38 echo(KubernetesMessageHeaders.getKubernetesSpec());39 echo("KubernetesMessageHeaders.getKubernetesStatus()");
KubernetesMessageHeaders
Using AI Code Generation
1KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();2String podName = kubernetesMessageHeaders.podName();3KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();4String podNamespace = kubernetesMessageHeaders.podNamespace();5KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();6String podUid = kubernetesMessageHeaders.podUid();7KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();8String podIp = kubernetesMessageHeaders.podIp();9KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();10String podCreationTimestamp = kubernetesMessageHeaders.podCreationTimestamp();11KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();12String podDeletionTimestamp = kubernetesMessageHeaders.podDeletionTimestamp();13KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();14String podDeletionGracePeriodSeconds = kubernetesMessageHeaders.podDeletionGracePeriodSeconds();15KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();16String podLabels = kubernetesMessageHeaders.podLabels();17KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();18String podAnnotations = kubernetesMessageHeaders.podAnnotations();19KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();20String podOwnerReferences = kubernetesMessageHeaders.podOwnerReferences();
KubernetesMessageHeaders
Using AI Code Generation
1import com.consol.citrus.kubernetes.message.KubernetesMessageHeaders;2import com.consol.citrus.message.MessageHeaders;3import org.springframework.messaging.Message;4import org.springframework.messaging.support.MessageBuilder;5public class KubernetesMessageHeadersTest {6 public static void main(String[] args) {7 Message<String> message = MessageBuilder.withPayload("Hello World").setHeader(KubernetesMessageHeaders.KUBERNETES_OPERATION, "create").build();8 System.out.println(message.getHeaders().get(KubernetesMessageHeaders.KUBERNETES_OPERATION));9 }10}11import com.consol.citrus.kubernetes.message.KubernetesMessageHeaders;12import com.consol.citrus.message.MessageHeaders;13import org.springframework.messaging.Message;14import org.springframework.messaging.support.MessageBuilder;15public class KubernetesMessageHeadersTest {16 public static void main(String[] args) {17 Message<String> message = MessageBuilder.withPayload("Hello World").setHeader(KubernetesMessageHeaders.KUBERNETES_OPERATION, "create").build();18 System.out.println(message.getHeaders().get(KubernetesMessageHeaders.KUBERNETES_OPERATION));19 }20}21import com.consol.citrus.kubernetes.message.KubernetesMessageHeaders;22import com.consol.citrus.message.MessageHeaders;23import org.springframework.messaging.Message;24import org.springframework.messaging.support.MessageBuilder;25public class KubernetesMessageHeadersTest {26 public static void main(String[] args) {27 Message<String> message = MessageBuilder.withPayload("Hello World").setHeader(KubernetesMessageHeaders.KUBERNETES_RESOURCE, "pod").build();28 System.out.println(message.getHeaders().get(KubernetesMessageHeaders.KUBERNETES_RESOURCE));29 }30}31import com.consol
KubernetesMessageHeaders
Using AI Code Generation
1KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()2 .apiVersion("apiVersion")3 .kind("kind")4 .build();5KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()6 .apiVersion("apiVersion")7 .kind("kind")8 .build();9KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()10 .apiVersion("apiVersion")11 .kind("kind")12 .build();13KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()14 .apiVersion("apiVersion")15 .kind("kind")16 .build();17KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()18 .apiVersion("apiVersion")19 .kind("kind")20 .build();21KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()22 .apiVersion("apiVersion")23 .kind("kind")24 .build();25KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()26 .apiVersion("apiVersion")27 .kind("kind")28 .build();29KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()30 .apiVersion("apiVersion")31 .kind("kind")32 .build();33KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()34 .apiVersion("apiVersion")35 .kind("kind")36 .build();37KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()38 .apiVersion("apiVersion")
KubernetesMessageHeaders
Using AI Code Generation
1public class 3 {2 public static void main(String[] args) {3 KubernetesMessageHeaders messageHeaders = new KubernetesMessageHeaders();4 messageHeaders.method("method");5 }6}7public class 4 {8 public static void main(String[] args) {9 KubernetesMessageHeaders messageHeaders = new KubernetesMessageHeaders();10 messageHeaders.resourceVersion("resourceVersion");11 }12}13public class 5 {14 public static void main(String[] args) {15 KubernetesMessageHeaders messageHeaders = new KubernetesMessageHeaders();16 messageHeaders.resourceVersionMatch("resourceVersionMatch");17 }18}19public class 6 {20 public static void main(String[] args) {21 KubernetesMessageHeaders messageHeaders = new KubernetesMessageHeaders();22 messageHeaders.resourceVersionMatch(KubernetesMessageHeaders.ResourceVersionMatch.Exact);23 }24}25public class 7 {26 public static void main(String[] args) {27 KubernetesMessageHeaders messageHeaders = new KubernetesMessageHeaders();28 messageHeaders.resourceVersionMatch(KubernetesMessageHeaders.ResourceVersionMatch.NotOlderThan);29 }30}31public class 8 {32 public static void main(String[] args) {33 KubernetesMessageHeaders messageHeaders = new KubernetesMessageHeaders();34 messageHeaders.resourceVersionMatch(KubernetesMessageHeaders.ResourceVersionMatch.NotOlderThan);35 }36}37public class 9 {38 public static void main(String[] args) {39 KubernetesMessageHeaders messageHeaders = new KubernetesMessageHeaders();40 messageHeaders.resourceVersionMatch(KubernetesMessage
KubernetesMessageHeaders
Using AI Code Generation
1KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()2 .withApiVersion("v1")3 .withKind("Pod")4 .withName("test-pod")5 .withNamespace("default")6 .build();7KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()8 .withApiVersion("v1")9 .withKind("Pod")10 .withName("test-pod")11 .withNamespace("default")12 .withLabels(Collections.singletonMap("test", "true"))13 .build();14KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()15 .withApiVersion("v1")16 .withKind("Pod")17 .withName("test-pod")18 .withNamespace("default")19 .withLabels(Collections.singletonMap("test", "true"))20 .withAnnotations(Collections.singletonMap("test", "true"))21 .build();22KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()23 .withApiVersion("v1")24 .withKind("Pod")25 .withName("test-pod")26 .withNamespace("default")27 .withLabels(Collections.singletonMap("test", "true"))28 .withAnnotations(Collections.singletonMap("test", "true"))29 .withResourceVersion("12345")30 .build();31KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()32 .withApiVersion("v1")33 .withKind("Pod")34 .withName("test-pod")35 .withNamespace("default")36 .withLabels(Collections.singletonMap("test", "true"))37 .withAnnotations(Collections.singletonMap("test", "true"))38 .withResourceVersion("12345")39 .withInitialResourceVersion("12345")40 .build();41KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()42 .withApiVersion("v1")43 .withKind("Pod")44 .withName("test-pod")45 .withNamespace("default")46 .withLabels(Collections.singletonMap("test", "true"))47 .withAnnotations(Collections.singletonMap("test", "true"))48 .withResourceVersion("12345")49 .withInitialResourceVersion("12345")50 .withSelfLink("/api/v1/namespaces/default/pods/test-pod")51 .build();52KubernetesMessageHeaders headers = KubernetesMessageHeaders.builder()53 .withApiVersion("v1")54 .withKind("Pod
KubernetesMessageHeaders
Using AI Code Generation
1public class 3.java extends AbstractTestNGCitrusTest {2public void kubernetesMessageHeaders() {3KubernetesMessageHeaders kubernetesMessageHeaders = new KubernetesMessageHeaders();4kubernetesMessageHeaders.setKubernetesMessageHeader("header1", "value1");5kubernetesMessageHeaders.setKubernetesMessageHeader("header2", "value2");6}7}
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!!