How is your experience with the OutSystems Community?
19
Views
1
Comments
Recommended Approach for Automated UI Testing in OutSystems Developer Cloud
Question

Hi Community, 

I’m currently exploring how to implement automated UI testing for applications built on OutSystems Developer Cloud (ODC), and I would like to understand the recommended approach followed by the community. 

My Current Understanding 

From what I understand, OutSystems can support testing for areas such as: Actions Services APIs Business logic Component-level testing. However, for browser-based UI testing, it seems that testing directly inside OutSystems may not be possible. Instead, we may need to use external UI automation tools such as: Selenium IDE Selenium WebDriver Playwright Cypress Other browser automation tools

 My Proposed Testing Strategy 

I am thinking of using a layered testing approach: 

Layer 1 – Component / API / Business Logic Testing We have built an OutSystems application to handle API testing, action testing, and business logic validation. 

Layer 2 – UI Smoke Testing For UI testing, I am considering using an external UI automation tool. One possible idea is: 

  • User clicks a button in an OutSystems testing application. The button calls an API. 
  • The API triggers UI test scripts created in Selenium, Playwright, or another UI automation tool. 
  • The automation tool executes the test cases. 
  • The result is sent back to the OutSystems application, stored and displayed to the user. 

My Questions 

  • Is this overall testing strategy correct for ODC applications? 
  • If this approach is correct, what are the prerequisites required from the UI automation side? Consider my client is already using some tools for testing application from other platforms. What are the details that first I need to get from them like For example: 
    • What tool are they using for UI testing?
    • Who prepares Test scripts?
    • Does they have a server where they store and run scripts?
    • Can they expose me an API for my requirement?
    • Test runner APIs to trigger test execution 
    • Browser drivers 
  • If this is not the recommended approach, what would be the best architecture or process to successfully implement automated UI testing for OutSystems ODC applications? 

Additional Context 

I am primarily an OutSystems developer and currently have limited/no experience with automation testing or UI automation tools. So, I would appreciate guidance from a beginner-friendly perspective


Thanks in advance.

2023-12-26 10-35-28
OutSystems Neo
Staff
AI Generated

You’re on the right track conceptually, and your questions are very aligned with how OutSystems recommends testing ODC applications.

I’ll break this down into:

  1. What’s recommended for ODC (and what OutSystems covers vs. what external tools cover)
  2. Whether your layered strategy makes sense
  3. What you need to ask / collect from the client’s existing UI automation setup
  4. A beginner-friendly reference architecture you can follow

For ODC, OutSystems’ own guidance is:

  • Focus automated tests on components and APIs first (service actions, server-side logic, libraries, etc.).
  • Use BDD Framework–style tests for those layers (or similar patterns), running inside OutSystems apps.
  • Keep UI tests as a thinner layer on top, because they’re more fragile and expensive to maintain. High Performance Continuous Delivery with ODC

The “testing pyramid” for ODC explicitly says:

So your idea of:

  • Layer 1: Component/API/business logic testing in OutSystems
  • Layer 2: UI smoke tests with an external tool

is fully aligned with recommended practice.


2. Is your proposed layered strategy correct?

Layer 1 – Component / API / Business Logic Testing

Yes. The recommended approach is:

For external REST or service actions:

So your Layer 1 is absolutely correct.

Layer 2 – UI Smoke Testing with External Tools

Your idea:

User clicks a button in an OutSystems testing app → calls an API → API triggers Selenium/Playwright/etc. → tool runs tests → result sent back to OutSystems and displayed

This is technically feasible and conceptually sound:

So the idea of:

  • External tool handles UI interaction (browser/device)
  • OutSystems app triggers tests and collects results via APIs

is a good architectural direction.

From a maturity perspective:

So: Yes, your strategy is correct for ODC; just keep in mind that wiring a “Run” button from OutSystems to the automation infrastructure is optional and usually comes after the core automation is solid.


3. Prerequisites & information you need from the client’s UI automation side

Since your client already has tools for UI testing on other platforms, you should clarify the following:

3.1. Tooling & tech stack

Ask:

  1. Which UI automation tool(s) are they using?
    • Selenium WebDriver / Selenium IDE
    • Playwright
    • Cypress
    • Katalon/Tosca/other commercial tools

OutSystems guidance is tool-agnostic: the frameworks and patterns (Page Object, Keyword-Driven, BDD) work with any of these. How Can We Accelerate Automation Tests Using the OutSystems Standards – Automation Tools and Framework Agnosticism

  1. How are tests currently executed?

  2. What browsers/devices are covered?

3.2. Test assets and responsibilities

Clarify roles:

  1. Who prepares / maintains test scripts?
    • Dedicated QA automation engineers?
    • Developers?
    • Mixed responsibility?

This impacts how much locator strategy and OutSystems-specific patterns you will need to teach them.

  1. Do they follow any patterns (Page Object Model, Keyword-Driven, BDD) already?

3.3. Infrastructure & API capabilities (for your “Run from OutSystems” idea)

To support the flow “OutSystems button → external tests → return results”, you need:

  1. Test runner endpoint:

    • Is there a REST API or some integration point where you can:
      • Trigger a test suite or a specific test run (e.g., Jenkins job, Katalon/Tosca REST endpoint, custom test runner API)?
      • Pass parameters (e.g., URL, environment, test set name)?
      • Retrieve results (pass/fail, logs, screenshots, reports)?
  2. Execution environment / server:

  3. Authentication & security:

    • How will your OutSystems app authenticate to their API / CI server?
      • API keys, OAuth, basic auth, etc.
    • Any network constraints (VPN, firewalls)?

3.4. Browser drivers / environment details

  1. Browser drivers & environment configuration:
    • For Selenium-based stacks:
      • Which WebDriver versions? How are they managed?
    • For Playwright / Cypress:
      • How are browser binaries handled (their internal runners vs system browsers)?

You don’t need to manage drivers yourself inside OutSystems; you just need to know that the test runner environment is properly configured.

3.5. OutSystems-specific details you must give to them

In the other direction, you must provide clear, stable locators and test data:

  1. Application URLs & environments:

  2. Locator strategy:

  3. Common patterns / reusable flows:

  4. Test data strategy:


Given you’re mainly an OutSystems dev and new to UI automation, here’s a simple, robust architecture to adopt.

4.1. Testing layers

Layer A – Unit / Component / API tests (inside OutSystems)

Focus here first; this will give you stable, fast feedback.

Layer B – UI smoke/regression tests (outside OutSystems)

4.2. Orchestration options

Option 1 (simpler, common): CI tool triggers tests

  • Use Jenkins or similar CI to:

    • Build/Deploy ODC app to Dev/Test.
    • Run OutSystems component tests (BDD).
    • Trigger UI test suites (via automation tool plugins or command line).
  • Results:

    • CI reports (HTML, JUnit, etc.).
    • Optionally, expose summary via a small OutSystems dashboard (pulling via REST).

OutSystems case studies show Jenkins being used for scheduled automated tests (e.g., nightly runs) without initially going all the way to test-trigger buttons in the app. How Automation Tests Save You During a Refactoring Process – Test Process Integration – Continuous Testing and Defect Management

Option 2 (your idea): OutSystems app triggers the CI / automation server

  • Create a small “Test Orchestrator” app in ODC with:

    • A screen where a user can:
      • Select environment (Dev/Test)
      • Select test suite (Smoke UI / Regression / Components only)
      • Click “Run”.
  • The screen’s action:

    • Calls a REST API on the CI server or automation server to trigger the appropriate test run.
    • Optionally polls/test-run status or receives callbacks.
  • Store results in an OutSystems entity:

    • Run ID, suite name, start/end time, status (PASS/FAIL), link to external report, etc.
    • Display them in a simple dashboard.

This is not required but is a nice integration once your basics are working.

4.3. Beginner path to implement

Given your experience level:

  1. Start with Layer 1 (inside OutSystems):

    • Learn and implement BDD-style component tests for your most important service actions and APIs.
  2. Pick one UI automation tool (ideally the one the client already uses):

    • Ask them to help you with:
      • Basic project setup
      • Example test for a simple login flow against an OutSystems app.
  3. Establish naming conventions in Service Studio:

  4. Implement a handful of smoke tests:

    • Login / logout
    • Navigate to main screen
    • Simple search / detail view
  5. Only after that, add orchestration (CI integration or OutSystems “Run tests” buttons).


5. Direct answers to your specific questions

Q1. Is this overall testing strategy correct for ODC applications?

Yes:

Your idea of triggering tests via APIs and feeding results back into an OutSystems app is valid and commonly used in more mature setups.

Q2. If this approach is correct, what are the prerequisites required from the UI automation side?

You should at least gather:

  • Tool(s) and stack they use
  • Who writes and owns the test scripts
  • Where tests are stored and executed (server / CI)
  • Whether they expose an API or can expose one to:
    • Trigger tests
    • Return results
  • Browser/device coverage and driver management
  • Existing patterns (Page Object, Keyword-Driven) and how they map to OutSystems apps

And you provide:

  • ODC environment URLs
  • Widget naming conventions for stable locators
  • Key flows to automate first
  • Test data rules and access

Q3. If this is not recommended, what’s the best architecture?

Your strategy is recommended — you just want to:

  • Emphasize component/API tests inside OutSystems for most coverage,
  • Use external UI automation tools for key UI flows,
  • Orchestrate runs via CI (optionally triggered from OutSystems),
  • Follow OutSystems-specific best practices for widget naming, locator strategies, and test data management. How Can We Accelerate Automation Tests Using the OutSystems Standards – Framework Design and Approaches [[High Performance Continuous Delivery with ODC – Best Practices – Key Principles for ODC Delivery Factories<>https://www.outsystems.com/forums/discussion/90549/high-performance-continuous-delivery-with-odc/]]

If you’d like, I can suggest a concrete first test suite (e.g., 5–10 smoke tests for your app) and how to split responsibilities between OutSystems and the external tool.

This answer was AI-generated. Please read it carefully and use the forums for clarifications
Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.