SDK
Introduction
Valido now has an SDK which we can integrate into the code of our projects to create visual validation tests and see the status and result in the app.
Credentials
First, we need to have the two types of credentials necessary to work with the SDK so contact Valido to get them in case you don't have them.
AWS credentials
AWS credentials are required to write data to S3 and to access the S3 Maven repository. You have three ways to set up this credentials:
- Add them to the ~/.aws/config file. In case you don't have it, you can create it:
[default]
aws_access_key_id= value from AWS access portal
aws_secret_access_key= value from AWS access portal - Setting environment variables:
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
. - Using AWS CLI.
ℹ️ You can go to Provide temporary credentials to the AWS SDK for Java to get more details about AWS IAM credentials.
Valido crendentials
In order to access the Valido API and send execution results, you must create a Java properties file with the following structure:
username=myusername
password=supersecretpassword
secretHash=supersecrethash
On the other hand, you have also the option to add them by environment variables: VALIDO_USERNAME
, VALIDO_PASSWORD
and VALIDO_SECRETHASH
.
Project setup
The SDK is stored in the private Maven repository in S3, that's why you need the following configuration in the POM file of your project. In this .pom file example, the only tags you should care about are: <repositories>
, <distributionManagement>
, extensions
and the valido-framework dependency
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.orienteed.valido</groupId>
<artifactId>sdk-test</artifactId>
<packaging>jar</packaging>
<version>0.1.0</version>
<repositories>
<repository>
<id>s3.release</id>
<name>Orienteed S3 Maven Release Repo</name>
<url>s3://maven-repo.orienteed.com/release</url>
</repository>
<repository>
<id>s3.snapshot</id>
<name>Orienteed S3 Maven Snapshot Repo</name>
<url>s3://maven-repo.orienteed.com/snapshot</url>
</repository>
</repositories>
<distributionManagement>
<snapshotRepository>
<id>s3.snapshot</id>
<url>s3://maven-repo.orienteed.com/snapshot</url>
</snapshotRepository>
<repository>
<id>s3.release</id>
<url>s3://maven-repo.orienteed.com/release</url>
</repository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>com.orienteed.valido</groupId>
<artifactId>valido-framework</artifactId>
<version>0.13.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>11</source>
<target>11</target>
<fork>true</fork>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.allogy.maven.wagon</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.2.0</version>
</extension>
</extensions>
</build>
</project>
Create SDK test
Set up flow properties
First, before to starting with the code, we need to create a Java .properties file for each flow. For Valido a flow is a test.
env=pro
secretsPath=location/of/valido-credentials.properties
region=ES
resolution=DESKTOP
device=1400x800
os=windows
browser=chrome
driverPath=location/of/driver
Definition of the properties keys:
env
The Valido environment to be targeted.secretsPath
The location of your valido credentials file.region
Should be a two letter ISO country code.resolution
The resolution is determined by the device: DESKTOP, MOBILE, TABLET.device
You can specify a device ID or a resolution with the format width x height.os
Operating system for the execution test.browser
Specify the browser where the test will run. chrome, firefox,safari...driverPath
The location of the browser driver to be used to execute the test.
It is possible that for your projects this configuration can be generic, so to make it easier you should know that these properties can be set as environment variables. To set them as environment variables, they must follow the following format: VALIDO_PROPERTY_KEY
, all capital letters.
Test implementation
Open the valido app and go to the Test tab in Testing section and make click on the green plus icon in order to add a new test, you will see displayed the SDK option. This option is only visible for Functional tests.
Once you select this option, Valido will give you the option to make some configurations for your test, like set a State. Once you select this option, Valido will give you the option to make some settings for your test, such as setting a state. When finished, an ID will be generated for your test. Be sure to save this ID for later when you make the code setup.
In your code, to implement the SDK in your project, you should:
- Extend the ValidoCore class.
- Pass the flow ID and the path of the properties files to the constructor.
package com.orienteed.valido.cores;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.IOException;
import java.net.URISyntaxException;
import org.junit.jupiter.api.Test;
import com.orienteed.valido.api.ValidoAPIException;
public class SdkExecutor {
String flowId = "00000xx0-x000-00xx-0000-0x0x0x0d0xx0";
String path = "src/test/resources/valido/chrome-flow-specs.properties";
@Test
public void test1() throws IOException, ValidoAPIException, URISyntaxException {
new SdkFlow(flowId, path).run();
}
}
To access the driver, use the getDriver() method. An example:
package com.orienteed.valido.cores;
import java.io.IOException;
import java.net.URISyntaxException;
import com.orienteed.valido.api.ValidoAPIException;
public class SdkFlow extends ValidoCore {
public SdkFlow(String flowId, String path) throws IOException, ValidoAPIException, URISyntaxException {
super(flowId, path);
}
@Override
public void flow() throws IOException, ValidoAPIException {
getDriver().get("www.valido.ai");
compare("Home page");
}
}