SmoothDeploy Docs

Step Management Reference

Complete reference for step authoring — types, configuration, conditions, shared steps, parameters, inheritance, and versioning

Complete reference for step authoring in SmoothDeploy: individual vs group vs shared steps, every action type, conditional execution, parameters, inheritance, and versioning. For a high-level concept overview, see Steps Overview.

Step Types

Individual Steps

Single actions that perform specific operations.

Examples:

  • Click a button
  • Type in a field
  • Navigate to a URL
  • Assert element presence

Group Steps

Containers that organize multiple related steps.

Use Cases:

  • Login sequence
  • Form filling workflow
  • Navigation flow
  • Cleanup operations

Shared Steps

Reusable steps that can be used across multiple tests.

Benefits:

  • Consistency across tests
  • Easier maintenance
  • Reduced duplication
  • Standardized actions

Creating Steps

Manual Step Creation

  1. Navigate to Steps section
  2. Click "Create New Step"
  3. Configure step properties:
    • Name: Descriptive step name
    • Type: Action category
    • Parameters: Step-specific settings
    • Metadata: Additional configuration
  4. Test the step
  5. Save the step

Converting Test Steps to Shared Steps

  1. Open existing test
  2. Select step to share
  3. Click "Make Shared"
  4. Configure sharing options
  5. Update step name and description
  6. Save as shared step

Step Configuration

Basic Properties

  • Name: Human-readable identifier
  • Description: Purpose and usage notes
  • Group: Whether step contains sub-steps
  • Shared: Whether step can be reused
  • Action: FullAction object defining behavior

Action Types

Navigation Actions:

{
  type: "navigate",
  url: "https://example.com"
}

Click Actions:

{
  type: "click",
  selector: "button[data-testid='submit']",
  options: { timeout: 5000 }
}

Type Actions:

{
  type: "type",
  selector: "input[name='email']",
  text: "{{userEmail}}"
}

Assert Actions:

{
  type: "assert",
  selector: ".success-message",
  expected: "Operation completed"
}

Step Conditions

Condition Types

Always Run: Execute step in every test run.

If Element Exists: Only execute if target element is present.

If Variable Equals: Execute based on variable value.

Custom Logic: JavaScript expression for complex conditions.

Condition Examples

Element-based:

{
  type: "if-element-exists",
  selector: ".error-message"
}

Variable-based:

{
  type: "if-variable-equals",
  variable: "userRole",
  value: "admin"
}

Custom Logic:

{
  type: "custom",
  expression: "{{browser}} === 'chrome' && {{version}} > 90"
}

Shared Step Management

Creating Shared Steps

  1. Design step for reusability
  2. Use variables for dynamic values
  3. Add comprehensive documentation
  4. Test across different contexts
  5. Version control changes

Using Shared Steps

  1. Browse shared step library
  2. Search by name or tags
  3. Preview step configuration
  4. Add to test with parameters
  5. Customize for specific context

Step Libraries

Organize shared steps into logical groups:

Common Actions:

  • Login/logout flows
  • Navigation patterns
  • Form interactions
  • Data validation

Domain-Specific:

  • E-commerce workflows
  • User management
  • Content creation
  • Reporting functions

Advanced Features

Step Parameters

Pass dynamic values to shared steps:

Defining Parameters:

{
  type: "type",
  selector: "input[name='username']",
  text: "{{username}}"
}

Using Parameters:

{
  stepId: "shared-login",
  parameters: {
    username: "testuser",
    password: "{{securePassword}}"
  }
}

Step Inheritance

Create step hierarchies for complex workflows:

Parent Step:

  • Login to application
  • Navigate to dashboard
  • Verify user permissions

Child Steps:

  • Specific feature access
  • Data validation
  • Action execution

Step Versioning

Track changes to shared steps:

  • Version history
  • Change documentation
  • Rollback capabilities
  • Impact analysis

Best Practices

Step Design

  • Single Responsibility: One action per step
  • Descriptive Names: Clear purpose indication
  • Parameterized: Use variables for flexibility
  • Well Documented: Include usage examples

Organization

  • Logical Grouping: Organize by function
  • Naming Conventions: Consistent patterns
  • Tagging System: Easy discovery
  • Regular Review: Keep steps current

Maintenance

  • Version Control: Track all changes
  • Testing: Validate step functionality
  • Documentation: Update usage guides
  • Deprecation: Remove unused steps

Performance

  • Efficient Selectors: Use stable identifiers
  • Minimal Waits: Only when necessary
  • Optimized Actions: Reduce execution time
  • Parallel Execution: Design for concurrency

Troubleshooting

Common Issues

Step Not Found:

  • Verify step exists and is shared
  • Check organization permissions
  • Update step references

Parameter Errors:

  • Validate parameter names
  • Check variable syntax
  • Verify parameter types

Execution Failures:

  • Review step configuration
  • Test in isolation
  • Check dependencies

Performance Issues:

  • Optimize selectors
  • Reduce wait times
  • Review step complexity