How to use VertxEndpointBuilder class of com.consol.citrus.vertx.endpoint package

Best Citrus code snippet using com.consol.citrus.vertx.endpoint.VertxEndpointBuilder

Source:VertxEndpointBuilder.java Github

copy

Full Screen

...20/**21 * @author Christoph Deppisch22 * @since 2.523 */24public class VertxEndpointBuilder extends AbstractEndpointBuilder<VertxEndpoint> {25 /** Endpoint target */26 private VertxEndpoint endpoint = new VertxEndpoint();27 @Override28 protected VertxEndpoint getEndpoint() {29 return endpoint;30 }31 /**32 * Sets the host property.33 * @param host34 * @return35 */36 public VertxEndpointBuilder host(String host) {37 endpoint.getEndpointConfiguration().setHost(host);38 return this;39 }40 /**41 * Sets the port property.42 * @param port43 * @return44 */45 public VertxEndpointBuilder port(int port) {46 endpoint.getEndpointConfiguration().setPort(port);47 return this;48 }49 /**50 * Sets the destinationName property.51 * @param address52 * @return53 */54 public VertxEndpointBuilder address(String address) {55 endpoint.getEndpointConfiguration().setAddress(address);56 return this;57 }58 /**59 * Sets the vertxFactory property.60 * @param vertxFactory61 * @return62 */63 public VertxEndpointBuilder vertxFactory(VertxInstanceFactory vertxFactory) {64 endpoint.setVertxInstanceFactory(vertxFactory);65 return this;66 }67 /**68 * Sets the messageConverter property.69 * @param messageConverter70 * @return71 */72 public VertxEndpointBuilder messageConverter(VertxMessageConverter messageConverter) {73 endpoint.getEndpointConfiguration().setMessageConverter(messageConverter);74 return this;75 }76 /**77 * Sets the pubSubDomain property.78 * @param pubSubDomain79 * @return80 */81 public VertxEndpointBuilder pubSubDomain(boolean pubSubDomain) {82 endpoint.getEndpointConfiguration().setPubSubDomain(pubSubDomain);83 return this;84 }85 /**86 * Sets the polling interval.87 * @param pollingInterval88 * @return89 */90 public VertxEndpointBuilder pollingInterval(int pollingInterval) {91 endpoint.getEndpointConfiguration().setPollingInterval(pollingInterval);92 return this;93 }94 /**95 * Sets the default timeout.96 * @param timeout97 * @return98 */99 public VertxEndpointBuilder timeout(long timeout) {100 endpoint.getEndpointConfiguration().setTimeout(timeout);101 return this;102 }103}...

Full Screen

Full Screen

Source:VertxEndpointConfigParser.java Github

copy

Full Screen

...17import com.consol.citrus.TestActor;18import com.consol.citrus.config.annotation.AbstractAnnotationConfigParser;19import com.consol.citrus.context.ReferenceResolver;20import com.consol.citrus.vertx.endpoint.VertxEndpoint;21import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;22import com.consol.citrus.vertx.factory.VertxInstanceFactory;23import com.consol.citrus.vertx.message.VertxMessageConverter;24import org.springframework.util.StringUtils;25/**26 * @author Christoph Deppisch27 * @since 2.528 */29public class VertxEndpointConfigParser extends AbstractAnnotationConfigParser<VertxEndpointConfig, VertxEndpoint> {30 /**31 * Constructor matching super.32 * @param referenceResolver33 */34 public VertxEndpointConfigParser(ReferenceResolver referenceResolver) {35 super(referenceResolver);36 }37 @Override38 public VertxEndpoint parse(VertxEndpointConfig annotation) {39 VertxEndpointBuilder builder = new VertxEndpointBuilder();40 if (StringUtils.hasText(annotation.host())) {41 builder.host(annotation.host());42 }43 builder.port(annotation.port());44 if (StringUtils.hasText(annotation.address())) {45 builder.address(annotation.address());46 }47 builder.vertxFactory(getReferenceResolver().resolve(annotation.vertxFactory(), VertxInstanceFactory.class));48 builder.pubSubDomain(annotation.pubSubDomain());49 if (StringUtils.hasText(annotation.messageConverter())) {50 builder.messageConverter(getReferenceResolver().resolve(annotation.messageConverter(), VertxMessageConverter.class));51 }52 builder.pollingInterval(annotation.pollingInterval());53 builder.timeout(annotation.timeout());...

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.endpoint.Endpoint;2import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;3import com.consol.citrus.vertx.endpoint.VertxEndpointConfiguration;4import com.consol.citrus.vertx.endpoint.VertxEndpointConfigurationBuilder;5import com.consol.citrus.vertx.message.VertxMessageHeaders;6import org.testng.annotations.Test;7import org.vertx.java.core.json.JsonObject;8public class VertxEndpointBuilderTest {9 public void testVertxEndpointBuilder() {10 VertxEndpointConfigurationBuilder vertxEndpointConfigurationBuilder = new VertxEndpointConfigurationBuilder();11 .host("localhost")12 .port(8080)13 .path("/test")14 .messageConverter("jsonMessageConverter");15 VertxEndpointConfiguration vertxEndpointConfiguration = vertxEndpointConfigurationBuilder.build();16 VertxEndpointBuilder vertxEndpointBuilder = new VertxEndpointBuilder();17 vertxEndpointBuilder.configuration(vertxEndpointConfiguration);18 Endpoint endpoint = vertxEndpointBuilder.build();19 JsonObject jsonObject = new JsonObject();20 jsonObject.putString(VertxMessageHeaders.PATH, "/test");21 jsonObject.putString(VertxMessageHeaders.METHOD, "POST");22 jsonObject.putString(VertxMessageHeaders.HOST, "localhost");23 jsonObject.putNumber(VertxMessageHeaders.PORT, 8080);24 jsonObject.putString("name", "test");25 jsonObject.putNumber("age", 20);26 endpoint.createProducer().send(jsonObject.encode());27 }28}

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.vertx.endpoint;2import com.consol.citrus.endpoint.Endpoint;3import com.consol.citrus.endpoint.EndpointBuilder;4import com.consol.citrus.vertx.message.VertxMessageConverter;5import io.vertx.core.Vertx;6import org.springframework.util.StringUtils;7public class VertxEndpointBuilder implements EndpointBuilder<VertxEndpoint> {8 private Vertx vertx;9 private VertxMessageConverter messageConverter;10 private String address;11 public VertxEndpointBuilder address(String address) {12 this.address = address;13 return this;14 }15 public VertxEndpointBuilder vertx(Vertx vertx) {16 this.vertx = vertx;17 return this;18 }19 public VertxEndpointBuilder messageConverter(VertxMessageConverter messageConverter) {20 this.messageConverter = messageConverter;21 return this;22 }23 public VertxEndpoint build() {24 VertxEndpoint endpoint = new VertxEndpoint();25 endpoint.setVertx(vertx);26 endpoint.setMessageConverter(messageConverter);27 endpoint.setAddress(address);28 return endpoint;29 }30 public boolean isResponsible(Endpoint endpoint) {31 (vertx == null || vertx.equals(((VertxEndpoint) endpoint).getVertx())) &&32 (messageConverter == null || messageConverter.equals(((VertxEndpoint) endpoint).getMessageConverter())) &&33 (address == null || address.equals(((VertxEndpoint) endpoint).getAddress()));34 }35 public int getPriority() {36 return 0;37 }38}39package com.consol.citrus.vertx.endpoint;40import com.consol.citrus.endpoint.Endpoint;41import com.consol.citrus.endpoint.EndpointBuilder;42import com.consol.citrus.vertx.message.VertxMessageConverter;43import io.vertx.core.Vertx;44import org.springframework.util.StringUtils;45public class VertxEndpointBuilder implements EndpointBuilder<VertxEndpoint> {46 private Vertx vertx;47 private VertxMessageConverter messageConverter;48 private String address;49 public VertxEndpointBuilder address(String address) {50 this.address = address;51 return this;52 }53 public VertxEndpointBuilder vertx(Vertx vertx) {54 this.vertx = vertx;

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.endpoint.builder.EndpointUriBuilder;2import com.consol.citrus.vertx.endpoint.VertxEndpoint;3import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;4public class VertxEndpointBuilderDemo {5 public static void main(String[] args) {6 VertxEndpointBuilder endpointBuilder = new VertxEndpointBuilder();7 endpointBuilder.endpointUri("vertx:com.consol.citrus.vertx.demo.VertxTestServer?port=8080");8 endpointBuilder.timeout(10000L);9 VertxEndpoint endpoint = endpointBuilder.build();10 System.out.println("Endpoint URI: " + endpoint.getEndpointConfiguration().getEndpointUri());11 System.out.println("Endpoint Timeout: " + endpoint.getEndpointConfiguration().getTimeout());12 }13}14import com.consol.citrus.endpoint.builder.EndpointUriBuilder;15import com.consol.citrus.vertx.endpoint.VertxEndpoint;16import com.consol.citrus.vertx.endpoint.VertxEndpointComponent;17public class VertxEndpointComponentDemo {18 public static void main(String[] args) {19 VertxEndpointComponent endpointComponent = new VertxEndpointComponent();20 EndpointUriBuilder endpointUriBuilder = endpointComponent.getEndpointUriBuilder();21 endpointUriBuilder.endpointUri("vertx:com.consol.citrus.vertx.demo.VertxTestServer?port=8080");22 endpointUriBuilder.timeout(10000L);23 VertxEndpoint endpoint = (VertxEndpoint) endpointUriBuilder.build();24 System.out.println("Endpoint URI: " + endpoint.getEndpointConfiguration().getEndpointUri());25 System.out.println("Endpoint Timeout: " + endpoint.getEndpointConfiguration().getTimeout());26 }27}28import com.consol.citrus.endpoint.builder.EndpointUriBuilder;29import com.consol.citrus.vertx.endpoint.VertxEndpoint;30import com.consol.citrus.vertx.endpoint.VertxEndpointConfiguration;31public class VertxEndpointConfigurationDemo {32 public static void main(String[] args) {33 VertxEndpointConfiguration endpointConfiguration = new VertxEndpointConfiguration();34 endpointConfiguration.setEndpointUri("vertx:com.consol.citrus.vertx.demo.VertxTestServer?port=8080");35 endpointConfiguration.setTimeout(

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.vertx.endpoint;2import com.consol.citrus.endpoint.Endpoint;3import com.consol.citrus.endpoint.EndpointBuilder;4import com.consol.citrus.vertx.VertxEndpointConfiguration;5import com.consol.citrus.vertx.VertxEndpointConfigurationBuilder;6import com.consol.citrus.vertx.VertxEndpoint;7import com.consol.citrus.vertx.message.VertxMessageConverter;8import com.consol.citrus.vertx.message.VertxMessageConverterBuilder;9import com.consol.citrus.vertx.message.VertxMessageHeaders;10import com.consol.citrus.vertx.message.VertxMessageHeadersBuilder;11import com.consol.citrus.vertx.message.VertxMessagePayloadBuilder;12import com.consol.citrus.vertx.message.VertxMessagePayloadDataBuilder;13import com.consol.citrus.vertx.message.VertxMessagePayloadTemplateBuilder;14import com.consol.citrus.vertx.message.VertxMessagePayloadVariableBuilder;15import com.consol.citrus.vertx.message.VertxMessagePayload

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1package com.citrus;2import com.consol.citrus.message.MessageType;3import com.consol.citrus.testng.CitrusParameters;4import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;5import org.testng.annotations.Test;6public class VertxTest extends AbstractTestNGCitrusTest {7 @CitrusParameters({"message"})8 public void vertxTest(@CitrusResource TestCaseRunner runner) {9 runner.http(builder -> builder.client("vertxClient")10 .send()11 .post()12 .payload("<TestRequest><Message>Hello World!</Message></TestRequest>"));13 runner.http(builder -> builder.client("vertxClient")14 .receive()15 .response(HttpStatus.OK)16 .messageType(MessageType.XML)17 .payload("<TestResponse><Message>Hello World!</Message></TestResponse>"));18 }19 public VertxEndpointBuilder vertxEndpointBuilder() {20 return new VertxEndpointBuilder();21 }22}23package com.citrus;24import com.consol.citrus.message.MessageType;25import com.consol.citrus.testng.CitrusParameters;26import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;27import org.testng.annotations.Test;28public class VertxTest extends AbstractTestNGCitrusTest {29 @CitrusParameters({"message"})30 public void vertxTest(@CitrusResource TestCaseRunner runner) {31 runner.http(builder -> builder.client("vertxClient")32 .send()33 .post()34 .payload("<TestRequest><Message>Hello World!</Message></TestRequest>"));35 runner.http(builder -> builder.client("vertxClient")36 .receive()37 .response(HttpStatus.OK)38 .messageType(MessageType.XML)39 .payload("<TestResponse><Message>Hello World!</Message></TestResponse>"));40 }41 public VertxEndpointBuilder vertxEndpointBuilder() {42 return new VertxEndpointBuilder();43 }44}45package com.citrus;46import com.consol.citrus.message.MessageType;47import com.consol.citrus.testng.CitrusParameters;48import com.consol.citrus.vertx

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.vertx.endpoint;2import com.consol.citrus.endpoint.Endpoint;3import com.consol.citrus.endpoint.EndpointBuilder;4import com.consol.citrus.vertx.VertxEndpointConfiguration;5import com.consol.citrus.vertx.message.VertxMessageConverter;6public class VertxEndpointBuilder implements EndpointBuilder {7 private VertxEndpointConfiguration configuration = new VertxEndpointConfiguration();8 public VertxEndpointBuilder() {9 }10 public VertxEndpointBuilder host(String host) {11 configuration.setHost(host);12 return this;13 }14 public VertxEndpointBuilder port(int port) {15 configuration.setPort(port);16 return this;17 }18 public VertxEndpointBuilder messageConverter(VertxMessageConverter messageConverter) {19 configuration.setMessageConverter(messageConverter);20 return this;21 }22 public VertxEndpointBuilder timeout(long timeout) {23 configuration.setTimeout(timeout);24 return this;25 }26 public VertxEndpointBuilder autoStart(boolean autoStart) {27 configuration.setAutoStart(autoStart);28 return this;29 }30 public VertxEndpointBuilder autoCreate(boolean autoCreate) {31 configuration.setAutoCreate(autoCreate);32 return this;33 }34 public VertxEndpointBuilder autoDelete(boolean autoDelete) {35 configuration.setAutoDelete(autoDelete);36 return this;37 }38 public VertxEndpointBuilder autoCreateQueue(boolean autoCreateQueue) {39 configuration.setAutoCreateQueue(autoCreateQueue);40 return this;41 }42 public VertxEndpointBuilder autoDeleteQueue(boolean autoDeleteQueue) {43 configuration.setAutoDeleteQueue(autoDeleteQueue);44 return this;45 }46 public VertxEndpointBuilder autoCreateExchange(boolean autoCreateExchange) {47 configuration.setAutoCreateExchange(autoCreateExchange);48 return this;49 }50 public VertxEndpointBuilder autoDeleteExchange(boolean autoDeleteExchange) {51 configuration.setAutoDeleteExchange(autoDeleteExchange);52 return this;53 }54 public VertxEndpointBuilder exchangeType(String exchangeType) {55 configuration.setExchangeType(exchangeType);56 return this;57 }58 public VertxEndpointBuilder exchangeName(String exchangeName) {59 configuration.setExchangeName(exchangeName);60 return this;61 }62 public VertxEndpointBuilder queueName(String queueName) {63 configuration.setQueueName(queueName);64 return this;65 }66 public VertxEndpointBuilder routingKey(String routingKey) {67 configuration.setRoutingKey(routingKey);68 return this;

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.endpoint.Endpoint;2import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;3import com.consol.citrus.vertx.endpoint.VertxEndpointConfiguration;4import com.consol.citrus.vertx.message.VertxMessageConverter;5import org.springframework.context.annotation.Bean;6import org.springframework.context.annotation.Configuration;7public class VertxEndpointConfig {8 public Endpoint vertxEndpoint() {9 VertxEndpointConfiguration vertxEndpointConfiguration = new VertxEndpointConfiguration();10 vertxEndpointConfiguration.setHost("localhost");11 vertxEndpointConfiguration.setPort(8080);12 vertxEndpointConfiguration.setMessageConverter(new VertxMessageConverter());13 return new VertxEndpointBuilder()14 .configuration(vertxEndpointConfiguration)15 .build();16 }17}18import com.consol.citrus.endpoint.Endpoint;19import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;20import com.consol.citrus.vertx.endpoint.VertxEndpointConfiguration;21import org.springframework.context.annotation.Bean;22import org.springframework.context.annotation.Configuration;23public class VertxEndpointConfig {24 public Endpoint vertxEndpoint() {25 VertxEndpointConfiguration vertxEndpointConfiguration = new VertxEndpointConfiguration();26 vertxEndpointConfiguration.setHost("localhost");27 vertxEndpointConfiguration.setPort(8080);28 return new VertxEndpointBuilder()29 .configuration(vertxEndpointConfiguration)30 .build();31 }32}33import com.consol.citrus.endpoint.Endpoint;34import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;35import org.springframework.context.annotation.Bean;36import org.springframework.context.annotation.Configuration;37public class VertxEndpointConfig {38 public Endpoint vertxEndpoint() {39 return new VertxEndpointBuilder()40 .host("localhost")41 .port(8080)42 .build();43 }44}45import com.con

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.vertx.endpoint;2import org.springframework.context.annotation.Bean;3import org.springframework.context.annotation.Configuration;4import com.consol.citrus.endpoint.Endpoint;5import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;6public class VertxEndpointConfig {7public Endpoint vertxEndpoint() {8return VertxEndpointBuilder.vertx()9.endpointUri("localhost:8080")10.build();11}12}13package com.consol.citrus.vertx.endpoint;14import org.springframework.context.annotation.Bean;15import org.springframework.context.annotation.Configuration;16import com.consol.citrus.endpoint.Endpoint;17import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;18public class VertxEndpointConfig {19public Endpoint vertxEndpoint() {20return VertxEndpointBuilder.vertx()21.endpointUri("localhost:8080")22.build();23}24}25package com.consol.citrus.vertx.endpoint;26import org.springframework.context.annotation.Bean;27import org.springframework.context.annotation.Configuration;28import com.consol.citrus.endpoint.Endpoint;29import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;30public class VertxEndpointConfig {31public Endpoint vertxEndpoint() {32return VertxEndpointBuilder.vertx()33.endpointUri("localhost:8080")34.build();35}36}37package com.consol.citrus.vertx.endpoint;38import org.springframework.context.annotation.Bean;39import org.springframework.context.annotation.Configuration;40import com.consol.citrus.endpoint.Endpoint;41import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;42public class VertxEndpointConfig {43public Endpoint vertxEndpoint() {44return VertxEndpointBuilder.vertx()45.endpointUri("localhost:8080")46.build();47}48}

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.endpoint.vertx;2import com.consol.citrus.endpoint.Endpoint;3import com.consol.citrus.testng.AbstractTestNGUnitTest;4import org.testng.annotations.Test;5import static org.testng.Assert.assertEquals;6import static org.testng.Assert.assertNotNull;7import static org.testng.Assert.assertTrue;8public class VertxEndpointBuilderTest extends AbstractTestNGUnitTest {9 public void testVertxEndpointBuilder() {10 VertxEndpointBuilder vertxEndpointBuilder = new VertxEndpointBuilder();11 vertxEndpointBuilder.host("localhost");12 vertxEndpointBuilder.port(8080);13 vertxEndpointBuilder.timeout(5000L);

Full Screen

Full Screen

VertxEndpointBuilder

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.vertx.endpoint;2import org.testng.annotations.Test;3import org.testng.Assert;4import org.testng.annotations.BeforeTest;5import org.testng.annotations.AfterTest;6import org.testng.annotations.DataProvider;7import org.testng.annotations.Parameters;8import com.consol.citrus.exceptions.CitrusRuntimeException;9import com.consol.citrus.message.MessageType;10import com.consol.citrus.testng.AbstractTestNGUnitTest;11import com.consol.citrus.vertx.message.VertxMessageHeaders;12import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;13import com.consol.citrus.vertx.endpoint.VertxEndpoint;14import io.vertx.core.Vertx;15import io.vertx.core.VertxOptions;16import io.vertx.core.eventbus.EventBusOptions;17import io.vertx.core.eventbus.DeliveryOptions;18import io.vertx.core.json.JsonObject;19import io.vertx.core.json.JsonArray;20import io.vertx.core.Future;21import io.vertx.core.AsyncResult;22import io.vertx.core.Handler;23import io.vertx.core.eventbus.Message;24import io.vertx.core.eventbus.MessageConsumer;25import io.vertx.core.eventbus.MessageProducer;26import java.util.*;27public class VertxEndpointBuilderTest extends AbstractTestNGUnitTest {28 private VertxEndpointBuilder vertxEndpointBuilder;29 private VertxEndpoint vertxEndpoint;30 private Vertx vertx;31 public void setUp() {32 vertxEndpointBuilder = new VertxEndpointBuilder();33 vertxEndpoint = new VertxEndpoint();34 vertx = Vertx.vertx();35 }36 public void testVertxEndpointBuilder() {37 vertxEndpointBuilder.setVertx(vertx);38 vertxEndpointBuilder.setAddress("address");39 vertxEndpointBuilder.setDeliveryOptions(new DeliveryOptions());40 vertxEndpointBuilder.setEventBusOptions(new EventBusOptions());41 vertxEndpointBuilder.setHandler(new Handler<Message<JsonObject>>() {42 public void handle(Message<JsonObject> message) {43 }44 });45 vertxEndpointBuilder.setMessageType(MessageType.PLAINTEXT);46 vertxEndpointBuilder.setVertxOptions(new VertxOptions());47 vertxEndpointBuilder.setPort(8080);48 vertxEndpointBuilder.setTimeout(1000);49 vertxEndpointBuilder.setEndpointUri("vertx:address");50 vertxEndpointBuilder.setEndpointConfiguration(new VertxEndpointConfiguration());51 vertxEndpoint = vertxEndpointBuilder.build();52 Assert.assertEquals(

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 Citrus automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Test Your Web Or Mobile Apps On 3000+ Browsers

Signup for free

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful