Skip to content
Back to site

Below are complete RITSU v0.1 workflow definitions you can use as starting points. Each example demonstrates a different pattern -- copy the YAML, customize the values to match your target site, and run.

Form Submission

A straightforward workflow that navigates to a login page, fills in credentials, and submits the form.

ritpiVersion: v0.1
name: simple-login
description: Sign in to a web application.
 
steps:
  - type: navigate
    url: 'https://app.example.com/login'
 
  - type: fill
    selector: '#email'
    value: 'user@example.com'
 
  - type: fill
    selector: '#password'
    value: 's3cureP@ss'
 
  - type: click
    selector: "button[type='submit']"

Selectors are generated automatically when you record a workflow from a video. You only need to write them manually if you are authoring a workflow from scratch.

Multi-Page Data Entry

Use variables to make a workflow reusable across different inputs. The inputs block defines what the user provides at run time, and ${inputs.key} injects those values into steps.

ritpiVersion: v0.1
name: multi-page-entry
description: Fill a multi-page form with user-provided data.
 
inputs:
  firstName:
    type: string
    description: 'First name of the applicant.'
  lastName:
    type: string
    description: 'Last name of the applicant.'
  email:
    type: string
    description: 'Contact email address.'
  phone:
    type: string
    description: 'Phone number with country code.'
 
steps:
  # Page 1 -- Personal information
  - type: navigate
    url: 'https://forms.example.com/apply'
 
  - type: fill
    selector: '#first-name'
    value: '${inputs.firstName}'
 
  - type: fill
    selector: '#last-name'
    value: '${inputs.lastName}'
 
  - type: click
    selector: 'button.next-page'
 
  # Page 2 -- Contact details
  - type: fill
    selector: '#email'
    value: '${inputs.email}'
 
  - type: fill
    selector: '#phone'
    value: '${inputs.phone}'
 
  - type: click
    selector: "button[type='submit']"

Variables let you run the same workflow with different data each time -- no need to record a new video for every variation.

AI Agent for Dynamic Tasks

When the page layout is unpredictable or the task requires judgment, use an agent step. The AI agent navigates the browser autonomously based on a natural-language prompt.

ritpiVersion: v0.1
name: ai-product-search
description: Use the AI agent to find and add a product to cart.
 
inputs:
  productName:
    type: string
    description: 'Name or description of the product to search for.'
 
steps:
  - type: navigate
    url: 'https://shop.example.com'
 
  - type: agent
    prompt: >
      Search for "${inputs.productName}" using the site's search bar.
      From the results, pick the first item that closely matches the name.
      Add it to the cart and proceed to the checkout page.
    maxSteps: 15

The maxSteps field limits how many browser actions the agent can take. Start with 10-15 for typical tasks. Increase it only if the agent runs out of steps before completing the goal.

Batch Registration

Combine array variables with batch execution to create many accounts or records in a single run. Each element in the array becomes one batch iteration, up to a maximum of 200 iterations per batch.

ritpiVersion: v0.1
name: batch-user-registration
description: Register multiple users in bulk.
 
inputs:
  users:
    type: array
    description: 'List of users to register.'
    itemSchema:
      name:
        type: string
        description: 'Full name of the user.'
      email:
        type: string
        description: 'Email address for the new account.'
      role:
        type: string
        description: 'Role to assign (admin, editor, viewer).'
 
steps:
  - type: navigate
    url: 'https://admin.example.com/users/new'
 
  - type: fill
    selector: '#full-name'
    value: '${inputs.users.name}'
 
  - type: fill
    selector: '#email'
    value: '${inputs.users.email}'
 
  - type: select
    selector: '#role-dropdown'
    value: '${inputs.users.role}'
 
  - type: click
    selector: 'button#create-user'

When you start a batch run, provide the users array with up to 200 entries:

{
  "users": [
    { "name": "Alice Chen", "email": "alice@example.com", "role": "editor" },
    { "name": "Bob Park", "email": "bob@example.com", "role": "viewer" },
    { "name": "Carol Diaz", "email": "carol@example.com", "role": "admin" }
  ]
}

Batch runs execute sequentially -- each iteration completes before the next one starts. Plan your batch sizes to balance throughput and reliability.

Conditional Steps

Use if expressions to skip steps based on input values. This is useful when parts of a workflow are optional.

ritpiVersion: v0.1
name: conditional-profile-update
description: Update a user profile, optionally changing the avatar.
 
inputs:
  bio:
    type: string
    description: 'New bio text.'
  avatarUrl:
    type: string
    description: 'URL of the new avatar image. Leave empty to skip.'
 
steps:
  - type: navigate
    url: 'https://app.example.com/settings/profile'
 
  - type: fill
    selector: '#bio'
    value: '${inputs.bio}'
 
  - type: fill
    selector: '#avatar-url'
    value: '${inputs.avatarUrl}'
    if: '${inputs.avatarUrl}'
 
  - type: click
    selector: 'button#save-profile'

The if expression is evaluated before the step runs. If it resolves to an empty string, null, or false, the step is skipped entirely.


These examples are starting points. Customize selectors, URLs, and variable names to match your target application. You can also record a video of your workflow and let Copelf generate the RITSU definition automatically.

Next Steps

WorkflowsLearn the full RITSU specification and all available step types. VariablesDeep dive into input variables, template syntax, and array schemas.
Cookie Settings

We use cookies to improve your experience and analyze site usage.

Necessary Cookies

Essential cookies required for basic site functionality. Cannot be disabled.

Analytics Cookies

Help us understand how you use our site to improve our services.

Privacy Policy