{"id":14964,"date":"2022-05-02T14:09:27","date_gmt":"2022-05-02T14:09:27","guid":{"rendered":"http:\/\/abstracta.us\/blog\/?p=14964"},"modified":"2025-05-05T21:25:00","modified_gmt":"2025-05-05T21:25:00","slug":"testproject-opensdk-using-coded-tests-in-a-low-code-tool","status":"publish","type":"post","link":"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/","title":{"rendered":"TestProject OpenSDK: Using \u2018\u2019Coded Tests\u2019\u2019 in a low-code tool"},"content":{"rendered":"\n<p>TestProject is an open-source low-code automation tool. It provides us with a powerful record and playback feature and a software development toolkit (SDK) that lets us create test automation solutions for Web, Android, and iOS applications. It allows us to execute Selenium and Appium native tests using a single automation platform.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/9qZFHh2gyecW_TkcfheJMozJRURmOFV1IYIskdvTpzR-GFcIY1cBRORdJtQJ_F5XnPIE37zYo9_gLfqeB-LppcSvUgVomJ_08PgPX1XEsy7JtIiDSdCqu9GGXXBy4ZYuAamx_3y6ENUaZZxbvA\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong> By Laura Gayo and Sofia Brun<\/strong><\/p>\n\n\n\n<p>One of the advantages of using this tool is that it provides us with AI-Powered self-healing capabilities in TestProject\u2019s Smart Recorder. This mechanism helps test maintenance by monitoring our test and selecting the most robust selector strategy repairing tests dynamically if needed. It is worth mentioning that when we implement coded tests, we lose the self-healing capabilities since the tool cannot change locators in our code.&nbsp;<\/p>\n\n\n\n<p>Using a basic example of web UI automation, this article will show you how to use TestProject\u2019s OpenSDK.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_TestProject_SDK\"><\/span><strong>What is TestProject SDK?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>TestProject SDK (https:\/\/docs.testproject.io\/testproject-sdk\/overview) is a single, integrated interface for scripting with Selenium and Appium. Currently, It has a <a href=\"https:\/\/github.com\/testproject-io\/java-sdk\">Java<\/a>, <a href=\"https:\/\/github.com\/testproject-io\/csharp-sdk-examples\">C# (.NET Core)<\/a>, and <a href=\"https:\/\/github.com\/testproject-io\/python-sdk\">Python<\/a> implementation.<\/p>\n\n\n\n<p>Record and playback feature can save us time automatically generating code. Using the software development kit allows us to extend the tool\u2019s capabilities to easily solve challenges that we can encounter when we only use actions that are included (for example, having to use iterations) or re-use scripts that we already have.<\/p>\n\n\n\n<p>Nowadays, there are two versions, TestProject Legacy SDK (used to develop Addons) and OpenSDK, but here we are going to focus on the OpenSDK as we mentioned before.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_OpenSDK\"><\/span><strong>What is OpenSDK?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>OpenSDK is an open-source software development toolkit, it intends to allow users to easily integrate a single SDK into existing automation frameworks (Selenium and Appium) while utilizing TestProject\u2019s Agent powers for driver management, single-click configuration, and automatic reporting features.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"To_use_it_youll_need\"><\/span><strong>To use it, you\u2019ll need:<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul><li>A TestProject account (https:\/\/app.testproject.io\/signup\/).&nbsp;<\/li><li>Download <a href=\"https:\/\/app.testproject.io\/#\/download\">TestProject\u2019s Agent<\/a>.&nbsp;<\/li><li>TestProject\u2019s agent<a href=\"https:\/\/docs.testproject.io\/getting-started\/installation-and-setup\"> running and registered<\/a> with your account.&nbsp;<\/li><li>A development token (<a href=\"https:\/\/app.testproject.io\/#\/integrations\/sdk\">https:\/\/app.testproject.io\/#\/integrations\/sdk<\/a>).<\/li><li>Java Development Kit (JDK) version 11 or newer installed.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Maven\"><\/span><strong>Maven<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>In case you are building a Maven project (either web or mobile), you\u2019ll need to add the following dependency to your pom.xml file:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;dependency>\n  &lt;groupId>io.testproject&lt;\/groupId>\n  &lt;artifactId>java-sdk&lt;\/artifactId>\n  &lt;version>1.2.3-RELEASE&lt;\/version>\n&lt;\/dependency>\n<\/code><\/pre>\n\n\n\n<p>When building a Maven project, it is also important to include a <a href=\"https:\/\/mvnrepository.com\/artifact\/io.testproject\/java-sdk\/1.3.0-RELEASE\">descriptor.xml file<\/a> in your main project folder, this allows us to create our .jar file that we will later upload to TestProject.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n&lt;assembly\n        xmlns=\"http:\/\/maven.apache.org\/plugins\/maven-assembly-plugin\/assembly\/1.1.0\"\n        xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n        xsi:schemaLocation=\"http:\/\/maven.apache.org\/plugins\/maven-assembly-plugin\/assembly\/1.1.0 http:\/\/maven.apache.org\/xsd\/assembly-1.1.0.xsd\">\n    &lt;id>descriptor&lt;\/id>\n    &lt;formats>\n        &lt;format>jar&lt;\/format>\n    &lt;\/formats>\n    &lt;includeBaseDirectory>false&lt;\/includeBaseDirectory>\n    &lt;dependencySets>\n        &lt;!--Assemble all runtime dependencies-->\n        &lt;dependencySet>\n            &lt;outputDirectory>\/&lt;\/outputDirectory>\n            &lt;useProjectArtifact>true&lt;\/useProjectArtifact>\n            &lt;unpack>true&lt;\/unpack>\n            &lt;scope>test&lt;\/scope>\n        &lt;\/dependencySet>\n        &lt;!--Extract TestProject SDK Properties-->\n        &lt;dependencySet>\n            &lt;outputDirectory>\/&lt;\/outputDirectory>\n            &lt;useProjectArtifact>true&lt;\/useProjectArtifact>\n            &lt;scope>system&lt;\/scope>\n            &lt;unpack>true&lt;\/unpack>\n            &lt;includes>\n                &lt;include>io.testproject:java-sdk&lt;\/include>\n            &lt;\/includes>\n            &lt;unpackOptions>\n                &lt;includes>\n                    &lt;include>testproject-sdk.properties&lt;\/include>\n                &lt;\/includes>\n            &lt;\/unpackOptions>\n        &lt;\/dependencySet>\n\n    &lt;\/dependencySets>\n&lt;\/assembly>\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Gradle\"><\/span><strong>Gradle<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>For a Gradle project (either web or mobile), you\u2019ll need to add the following to your <strong>build.gradle<\/strong> file: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compileOnly 'io.testproject:java-sdk:1.2.4-RELEASE'<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_to_use_TestProjects_OpenSDK\"><\/span><strong>How to use TestProject\u2019s OpenSDK?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>After getting all the pre-requirements, a coded test can be added to the platform. In the following example, we\u2019ll show you how.<\/p>\n\n\n\n<p>First, we create a project in our IDE, in this case we will use Maven but remember that you can also use Gradle to build your project.<\/p>\n\n\n\n<p>Then,&nbsp; as we mentioned before, we need to add our descriptor.xml file to our project\u2019s source folder and the OpenSDK dependency to the project\u00b4s pom.xml file.&nbsp;<\/p>\n\n\n\n<p>If you want to be able to run your tests locally, you need to add the development token to the ChromeDriver constructor. Keep in mind that you can choose between all <a href=\"https:\/\/docs.testproject.io\/testproject-sdk\/overview\/drivers\">the major drivers that TestProject supports<\/a>. For more information, you can check the <a href=\"https:\/\/github.com\/testproject-io\/java-opensdk#development-token\">java OpenSDK development-token documentation<\/a>.&nbsp;<\/p>\n\n\n\n<p>Once we have our configuration in place, we can start developing our automated test. For this example we wrote a coded test using Selenium with Java and the OpenSDK that performs a login to the following <a href=\"https:\/\/opencart.abstracta.us\/index.php?route=account\/login\">website.<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/qJmz4VzGzmvGolH8kRcMCdR9HyjLp5WuEquFUdwaOBdXYsUQWdSN5q4-YFTRxkTTndQCN7vOK9yyn-42ClOSKRm1plkLTfDTahj2qmUuYX1jdInkDFVKbsbxTHkwk7I1jEcL6Wx1pIpAkLfvcb4\" alt=\"Interfaz de usuario gr\u00e1fica, Texto, Sitio web\n\nDescripci\u00f3n generada autom\u00e1ticamente\"\/><\/figure>\n\n\n\n<p>To be able to use data from an existing TestProject test in our coded test, we can pass parameters (for example email and password) using <a href=\"https:\/\/github.com\/testproject-io\/java-opensdk#testng-1\">TestNG<\/a> in our coded test.&nbsp;<\/p>\n\n\n\n<p>We\u2019ll upload the following test to our existing project on TestProject\u2019s platform.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class LoginTest extends BaseTest {\n    @Test(dataProvider = \"TestProject\", dataProviderClass = TestProjectParameterizer.class,\n            description = \"Fills in E-Mail Address and Password to login.\")\n    public void testLogin(String email, String password) {\n        LoginPage loginPage = new LoginPage(driver);\n        loginPage.loginAccount(email, password);\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>It\u2019s relevant to mention that we are using <em>dataProvider<\/em> because we are passing parameters through TestProject. For more information about how to parameterize tests, you can check the <a href=\"https:\/\/github.com\/testproject-io\/java-opensdk#uploading-parameterized-tests\">following link<\/a>.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class LoginPage extends BasePage {\n    public LoginPage(WebDriver driver) {\n        super(driver);\n    }\n    \n    @FindBy(id = \"input-email\")\n    WebElement emailForm;\n\n    @FindBy(id = \"input-password\")\n    WebElement passwordForm;\n\n    @FindBy(css = \"[@type = 'submit']\")\n    WebElement loginBtn;\n\n    public void loginAccount(String email, String password){\n        emailForm.sendKeys(email);\n        passwordForm.sendKeys(password);\n        loginBtn.click();\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Once we have our test, we\u2019ll run the following command, we can execute it on our IDE terminal or using the command line in the framework directory.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\tmvn clean compile package<\/code><\/pre>\n\n\n\n<p>A new <em>target <\/em>folder should have been created automatically, where we can find the .jar file generated using the descriptor.xml file as we mentioned before.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/kst0xJwtOljWRmh3PS6SRB5kH3vgXfxBh9trjwmXrBRXLXn6Qr9cjcdvp3g-RwqwYdBYpDk4Us0gEB4n5AVjuX8Un6HaDKxUclfe4ayvYj5V7RB_tyqByXdLWxxDvOgBXEYQYXmuXu7XZAnPBqE\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Uploading_a_Coded_Test\"><\/span><strong>Uploading a Coded Test<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Now we need to log in to our TestProject account and go to the main page. Create a project folder or select an already existing one. After doing this, select \u201cCreate a test\u201d.<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/1QFjFKYR7m_ceqvp__mpvkDJIRBNUHva_KRTBqPWAb8hY-Gbr2coh9AANzKSeio2XUwvBVFuVDRFmjY6mx3ayDM6AvNgpmCKF0-JJs60HEZgWJzorJME8k3eBizwahgfmLwFaCst79fHtuOmn_s\" alt=\"\"\/><\/figure>\n\n\n\n<p>Select \u201cCode\u201d test type and click \u201cNext\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/4oeMSjLHnaq2VTuL-H7jt19I3vVUNJLfkMjKLDJzDmaV-DwtAXcvR5iRKeo6Y9Je0ZkXSsDgcgKnu297RlDUpsDT3Qlshct3IkS_RGWNpoelN__sej_vnlEhY-hWI8UMmidlamOJzLXCShQzLRc\" alt=\"\"\/><\/figure>\n\n\n\n<p>Upload the .jar file that was created in the previous steps. Select the one that includes the dependencies.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/nX-sI6YQsExsmvVGdFlMlkPaK-qLdagkXGv3fqM7DduedzAVNmUwaqoFPia4v6uwp4xojLhAkvDSD3Pa69OrruY6uaJFuve636HZJZ0wUn9O4sI8czsqPM0lk-0HFssIrFDNvnk3G_mHfDW_AGc\" alt=\"Interfaz de usuario gr\u00e1fica, Aplicaci\u00f3n\n\nDescripci\u00f3n generada autom\u00e1ticamente\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>The uploaded file results can be reviewed, click \u201cNext\u201d to proceed with uploading.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/ejAPAVr9jl88RVmYkk3u5wnjEaQgWOosSS-hR3ltM9TiuM7CYXDdOo81GlnecM7cvlvyyJI2B87qv0q5wpFnZOIC0cuzLpG0NMKfIqKbJNk2Yh5BRSQ7owv7S7UYL72n3xqNHa3Y\" alt=\"\"\/><\/figure>\n\n\n\n<p>Fill in the details of your test and click \u201cNext\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/qdy0dAV4guz8A7UYV1C84HZxF_wv04DStvLwWiSQiktNydiU1GHpkCdmYziKOKp4yMlN9o1jzgHXYRF9WQ3pNxRi5aghhsDQ1Ok84xH3u9z7321fBkHjH_3XrY0pCKLS5wJ2QkUkQekhgbwE8lc\" alt=\"\"\/><\/figure>\n\n\n\n<p>Now the tests that were uploaded can be used in your TestProject tests.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/1_YW2oJvCeOuQqck-Qolq6ZyqNuallbjlyIN0fiY26OH4i3I4WdoSO6TvhK5XWQJR37vPb5xvSLQgFkYTV1-IPsPlWfvQUHy3DjsaHfuDyktHY63R4prxjnDhHEgRq618ebUbJE-iHl0Y6q-Ct8\" alt=\"Interfaz de usuario gr\u00e1fica, Texto, Aplicaci\u00f3n, Correo electr\u00f3nico\n\nDescripci\u00f3n generada autom\u00e1ticamente\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Passing_parameters_to_the_Coded_Test\"><\/span><strong>Passing parameters to the Coded Test<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>You can go to the parameters section in TestProject and add parameters that can be passed to your coded test.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/w2WnaXnx4HxrRrOwDgz2yijIK88PUdBXMKdKzdfVrG57-wOjPkHuA7g8KVT_i5JGKegCgUfU2-L2WCe_tESq0aHgONiCLOSJDz1rQsruoQHP5AzVbpuOefDsOyjuEqROgWsAe8TCf_tgAAKcSXk\" alt=\"Interfaz de usuario gr\u00e1fica, Aplicaci\u00f3n\n\nDescripci\u00f3n generada autom\u00e1ticamente\"\/><\/figure>\n\n\n\n<p>After the coded test was included as a Test Step in your TestProject test, you can add the parameters by clicking \u201cAdd parameter\u201d in your test inputs section.&nbsp;<\/p>\n\n\n\n<p>This allows us to pass parameters from a recorded project to our coded tests as inputs, but we can also have outputs from our coded tests and store them as parameters.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/OVLYsQcEnFEEYimKMyKdkdGQ9FW8uVHA6MWOGmlW8ge7__TnyrX_097x2V420IuI_gyAiLIIZNGjYgmUliXBtPM7Hxl02Em6SHGh-90c8AYyhTv3kceMaOKfzB39YALiQpGwkG5C\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Final_Thoughts\"><\/span><strong>Final Thoughts<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>TestProject OpenSDK allows us to easily add a coded test to solve problems that we can come across in our tests, develop methods that allow us to do actions in fewer steps, or even add previously developed tests with Selenium or Appium to our TestProject\u2019s projects.<\/p>\n\n\n\n<p>This tool also gives us enough flexibility to assemble test teams with different programming skills, where automators who prefer coding can develop test packages for people that prefer working with record and playback.<\/p>\n\n\n\n<p><strong>Follow us on <\/strong><a href=\"https:\/\/www.linkedin.com\/company\/abstracta\/\"><strong>Linkedin<\/strong><\/a><strong>, <\/strong><a href=\"https:\/\/twitter.com\/AbstractaUS\"><strong>Twitter<\/strong><\/a><strong>, <\/strong><a href=\"https:\/\/www.instagram.com\/we_are_abstracta\/\"><strong>Instagram<\/strong><\/a><strong>, and <\/strong><a href=\"https:\/\/www.facebook.com\/AbstractaSoftwareTesting\"><strong>Facebook<\/strong><\/a><strong> to be part of our community!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TestProject is an open-source low-code automation tool. It provides us with a powerful record and playback feature and a software development toolkit (SDK) that lets us create test automation solutions for Web, Android, and iOS applications. It allows us to execute Selenium and Appium native&#8230;<\/p>\n","protected":false},"author":69,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[481,480,429],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v14.0.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TestProject OpenSDK: Using \u2018\u2019Coded Tests\u2019\u2019 in a low-code tool | Abstracta<\/title>\n<meta name=\"description\" content=\"TestProject is an open-source low-code automation tool that lets us create test automation solutions for Web, Android, and iOS applications.\" \/>\n<meta name=\"robots\" content=\"index, follow\" \/>\n<meta name=\"googlebot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta name=\"bingbot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TestProject OpenSDK: Using \u2018\u2019Coded Tests\u2019\u2019 in a low-code tool | Abstracta\" \/>\n<meta property=\"og:description\" content=\"TestProject is an open-source low-code automation tool that lets us create test automation solutions for Web, Android, and iOS applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog about AI-powered quality engineering for teams building complex software | Abstracta\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AbstractaQA\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-02T14:09:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-05T21:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/abstracta.us\/wp-content\/uploads\/2022\/05\/TestProjectSDK_Mesa-de-trabajo-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"338\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AbstractaUS\" \/>\n<meta name=\"twitter:site\" content=\"@AbstractaUS\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/abstracta.us\/blog\/#website\",\"url\":\"https:\/\/abstracta.us\/blog\/\",\"name\":\"Blog about AI-powered quality engineering for teams building complex software | Abstracta\",\"description\":\"AI-powered quality engineering\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/abstracta.us\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/lh5.googleusercontent.com\/9qZFHh2gyecW_TkcfheJMozJRURmOFV1IYIskdvTpzR-GFcIY1cBRORdJtQJ_F5XnPIE37zYo9_gLfqeB-LppcSvUgVomJ_08PgPX1XEsy7JtIiDSdCqu9GGXXBy4ZYuAamx_3y6ENUaZZxbvA\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/#webpage\",\"url\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/\",\"name\":\"TestProject OpenSDK: Using \\u2018\\u2019Coded Tests\\u2019\\u2019 in a low-code tool | Abstracta\",\"isPartOf\":{\"@id\":\"https:\/\/abstracta.us\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/#primaryimage\"},\"datePublished\":\"2022-05-02T14:09:27+00:00\",\"dateModified\":\"2025-05-05T21:25:00+00:00\",\"author\":{\"@id\":\"https:\/\/abstracta.us\/blog\/#\/schema\/person\/8b000b0da09abcc6415f12db020bf442\"},\"description\":\"TestProject is an open-source low-code automation tool that lets us create test automation solutions for Web, Android, and iOS applications.\",\"breadcrumb\":{\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/\",\"url\":\"https:\/\/abstracta.us\/blog\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/\",\"url\":\"https:\/\/abstracta.us\/blog\/test-automation\/\",\"name\":\"Test Automation\"}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/\",\"url\":\"https:\/\/abstracta.us\/blog\/test-automation\/testproject-opensdk-using-coded-tests-in-a-low-code-tool\/\",\"name\":\"TestProject OpenSDK: Using \\u2018\\u2019Coded Tests\\u2019\\u2019 in a low-code tool\"}}]},{\"@type\":[\"Person\"],\"@id\":\"https:\/\/abstracta.us\/blog\/#\/schema\/person\/8b000b0da09abcc6415f12db020bf442\",\"name\":\"Sofia Brun\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/abstracta.us\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/189c0becb71eddd9a89e8bf9bdb19ca1?s=96&d=blank&r=g\",\"caption\":\"Sofia Brun\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/14964"}],"collection":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/users\/69"}],"replies":[{"embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/comments?post=14964"}],"version-history":[{"count":3,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/14964\/revisions"}],"predecessor-version":[{"id":14968,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/14964\/revisions\/14968"}],"wp:attachment":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/media?parent=14964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/categories?post=14964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/tags?post=14964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}