--- tags: Rapi Document English --- ## Requirment 1. Selenium Server (Grid) (Version recommend >= 4.8) 2. [Rapi-runner](https://github.com/RapiTest/rapi-runner/releases) 3. Maven rapi-api xml ```xml <dependency> <groupId>io.github.rapitest</groupId> <artifactId>rapi-api</artifactId> <version>4.0.0-SNAPSHOT</version> </dependency> ``` ## Rapi Config Document * Before using the Rapi API, you need to know our Rapi runner config file schema. You can learn more about it [here](https://hackmd.io/@Rapi/rapi-runner-config-file). ## Quick Start ```java package io.github.rapitest; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import io.github.rapitest.config.*; public class Main { public void main() throws IOException, InterruptedException, Exception { ArrayList<String> testSuites = new ArrayList<>(); testSuites.add("path/to/testSuite"); Input input = Input.builder().withTestSuites(testSuites).build(); Map<String, Object> caps = new HashMap<>(); caps.put("browserName", "firefox"); ArrayList<WebDriverCommonConfig> service = new ArrayList<WebDriverCommonConfig>(); service.add( WebDriverBrowserConfig.builder() .withBrowsers(Browser.builder().withCapability(caps).build()) .withServerUrl("http://url.to.selenium.server").build()); Config config = Config.builder().withInput(input) .withWebdriver(WebDriver.builder().withConfigs(service).build()).build(); System.out.println(config.toString()); Rapi rapi = new Rapi("path/to/rapi/runner", config); RapiReport report = rapi.run(); System.out.println(report.getJson()); } } ``` --- ## More Exmple * Test with Multiple testSuites ```java ... ArrayList<String> testSuites = new ArrayList<>(); testSuites.add("path/to/testSuite1"); testSuites.add("path/to/testSuite2"); Input input = Input.builder().withTestSuites(testSuites).build(); Config config = Config.builder().withInput(input).build(); ... ``` * Test with Multiple Selenium Servers ```java Map<String, Object> caps = new HashMap<>(); caps.put("browserName", "firefox"); ArrayList<WebDriverCommonConfig> service = new ArrayList<WebDriverCommonConfig>(); service.add( WebDriverBrowserConfig.builder() .withBrowsers(Browser.builder().withCapability(caps).build()) .withServerUrl("http://url.to.selenium.server1").build()); service.add( WebDriverBrowserConfig.builder() .withBrowsers(Browser.builder().withCapability(caps).build()) .withServerUrl("http://url.to.selenium.server2").build()); Config config = Config.builder().withWebdriver(WebDriver.builder().withConfigs(service).build()).build(); ... ``` * Modify Play Config ```java Play playConfig = Play.builder().setMode(1).setEntry("testsuite.testcase"); Config config = Config.builder().withPlay(playConfig).build(); ... ``` ## Report Format ```json= { version: { "sideex": [ 3, 7, 3 ], "format": [ 1, 0, 1 ] }, "Reports":[ { title: "20221006 12-46-49", sessionId: "", type: "chrome", browser: "chrome 103.0.5060.134", platform: "linux", deviceName: "unknown", lang: null, inputFile: "/home/fourcolor/Documents/sideex/sideex-2021/modules/main/dist/test-jobs/214e8cd6-94db-4b32-993a-8cf9af0aa04f/inputs/suites/test1.json", startTime: "20221006 12:46:49", endTime: "20221006 12:47:02", failureCaseNum: 0, failureSuiteNum: 0, successCaseNum: 1, successSuiteNum: 1, logs: [ { type: "info", message: "Playing test suite Untitled Test Suite 2" }, ], status: "completed", suites: [ { title: "Untitled Test Suite 2", idText: "suite-20", status: "success", cases: [ 0 ] } ], cases: [ { title: "Untitled Test Case 2", idText: "case-20", suiteIdText": "suite-20", status: "success", localVars: [], globalVars: [], records: [ { "name": "open", "target": "https://sideex.io/", "value": "", "status": "success", "time": 4175, "valData": [] }, { "name": "setViewportSize", "target": "", "value": "1848,948", "status": "warn", "time": 744, "valData": [] }, ... ] } ], snapshot: { "image-162": { //base64 image } } }, { ... } ] } ``` <!-- > deprecate > ### `getState()` > ### `downloadReport()` > ### `deleteJob()` > ### `runTestSuite(file)` -->