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
- Navigate to Steps section
- Click "Create New Step"
- Configure step properties:
- Name: Descriptive step name
- Type: Action category
- Parameters: Step-specific settings
- Metadata: Additional configuration
- Test the step
- Save the step
Converting Test Steps to Shared Steps
- Open existing test
- Select step to share
- Click "Make Shared"
- Configure sharing options
- Update step name and description
- 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
- Design step for reusability
- Use variables for dynamic values
- Add comprehensive documentation
- Test across different contexts
- Version control changes
Using Shared Steps
- Browse shared step library
- Search by name or tags
- Preview step configuration
- Add to test with parameters
- 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